exponenta event banner

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

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

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

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

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

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

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

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

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

Загрузить Data_USEconModel набор данных. В этом примере используются два временных ряда: логарифм реального ВВП и реальная 3-месячная ставка T-bill, которые различаются, чтобы быть приблизительно неподвижными. Предположим, что модель 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.

См. также

Объекты

Функции

Связанные темы