Прогнозная модель VAR

В этом примере показано, как использовать forecast для прогноза модели VAR.

forecast позволяет вам генерировать прогнозы MMSE с оценками ошибок. forecast требует:

  • Полностью заданная модель (например EstMdl в следующем)

  • Количество периодов для прогноза (для примера, numperiods в следующем)

  • Предварительный образец временных рядов (например Y(end-3:end,:) в следующем)

forecast опционально принимает:

  • Экзогенный ряд данных

  • Дополнительные пути

Загрузите Data_USEconModel набор данных. Этот пример использует два временных рядов: логарифм реального ВВП и реальный 3-месячный тариф T-векселя, оба по-разному являются приблизительно стационарными. Предположим, что модель 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 contains an axes. The axes with title Real GDP Growth Rate contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval.

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;

Figure contains an axes. The axes with title 3-month T-bill rate contains 5 objects of type line, patch. These objects represent True, Forecast, 95% Forecast interval.

См. также

Объекты

Функции

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте