Этот пример показывает, как использовать forecast
, чтобы предсказать модель VAR.
forecast
позволяет вам сгенерировать прогнозы MMSE с ошибочными оценками. forecast
требует:
Полностью заданная модель (например, EstMdl
в дальнейшем)
Количество периодов для прогноза (например, numperiods
в дальнейшем)
Преддемонстрационные временные ряды (например, Y(end-3:end,:)
в дальнейшем)
forecast
опционально берет:
Внешний ряд данных
Дополнительные пути
Загрузите набор данных Data_USEconModel
. Этот пример использует два временных рядов: логарифм действительного GDP и действительного 3-месячного уровня Казначейского векселя, оба differenced, чтобы быть приблизительно стационарным. Предположим, что модель VAR (4) является соответствующей, чтобы описать временные ряды.
load Data_USEconModel DEF = log(DataTable.CPIAUCSL); GDP = log(DataTable.GDP); rGDP = diff(GDP - DEF); % Real GDP is GDP - deflation TB3 = 0.01*DataTable.TB3MS; dDEF = 4*diff(DEF); % Scaling rTB3 = TB3(2:end) - dDEF; % Real interest is deflated Y = [rGDP,rTB3];
Соответствуйте спецификации модели VAR (4):
Mdl = varm(2,4); Mdl.SeriesNames = {'Transformed real GDP','Transformed real 3-mo T-bill rate'}; EstMdl = estimate(Mdl,Y);
Предскажите эволюцию временных рядов:
numperiods = 21; FDates = dateshift(DataTable.Time(end),'end','quarter',1:numperiods); [Forecast,ForecastMSE] = forecast(EstMdl,numperiods,Y(end-3:end,:));
Извлеките основные диагональные элементы из матриц в каждой ячейке ForecastMSE
. Примените квадратный корень из результата получить стандартные погрешности.
extractMSE = @(x)diag(x)';
MSE = cellfun(extractMSE,ForecastMSE,'UniformOutput',false);
SE = sqrt(cell2mat(MSE));
Оцените аппроксимированные 95%-е интервалы прогноза для каждого ряда ответа.
ForecastFI = zeros(numperiods,Mdl.NumSeries,2); ForecastFI(:,:,1) = Forecast - 2*SE; ForecastFI(:,:,2) = Forecast + 2*SE;
Постройте прогнозы и данные.
figure; h1 = plot(DataTable.Time((end-49):end),Y((end-49):end,1)); hold on; h2 = plot(FDates,Forecast(:,1)); h3 = plot(FDates,ForecastFI(:,1,1),'k--'); plot(FDates,ForecastFI(:,1,2),'k--'); title('Real GDP Growth Rate'); h = gca; fill([FDates(1) h.XLim([2 2]) FDates(1)],h.YLim([1 1 2 2]),'k',... 'FaceAlpha',0.1,'EdgeColor','none'); legend([h1 h2 h3],'True','Forecast','95% Forecast interval',... 'Location','northwest') hold off;
figure; h1 = plot(DataTable.Time((end-49):end),Y((end-49):end,2)); hold on; h2 = plot(FDates,Forecast(:,2)); h3 = plot(FDates,ForecastFI(:,2,1),'k--'); plot(FDates,ForecastFI(:,2,2),'k--'); title('3-month T-bill rate'); h = gca; fill([FDates(1) h.XLim([2 2]) FDates(1)],h.YLim([1 1 2 2]),'k',... 'FaceAlpha',0.1,'EdgeColor','none'); legend([h1 h2 h3],'True','Forecast','95% Forecast interval',... 'Location','northwest') hold off;