Предскажите модель VAR

Этот пример показывает, как использовать 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;

Смотрите также

Объекты

Функции

Похожие темы