В этом примере показано, как использовать симуляцию Монте-Карло через simulate
предсказывать модель VAR.
simulate
позволяет вам сгенерировать симуляции временных рядов на основе вашей модели. Если у вас есть защищенный объект модели VAR, можно использовать эти симуляции в качестве демонстрационных прогнозов.
simulate
требует:
Модель (EstMdl
в дальнейшем)
Количество периодов для прогноза (numobs
в дальнейшем)
simulate
опционально берет:
Внешний ряд данных
Преддемонстрационные временные ряды (Y(end-3:end,:)
в дальнейшем)
Будущие демонстрационные ответы для условной симуляции
Количество реализации или пути, чтобы симулировать (2000
в дальнейшем)
Загрузите 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);
Задайте горизонт прогноза.
numobs = 21; FDates = dateshift(DataTable.Time(end),'end','quarter',1:numobs);
Симулируйте модель для numobs
шаги вперед, и генерируют 2 000 путей. Задайте преддемонстрационные наблюдения от конца данных.
rng(1); %For reproducibility Ysim = simulate(EstMdl,numobs,'Y0',Y(end-3:end,:),'NumPaths',2000);
Вычислите среднее и стандартное отклонение симулированного ряда:
Ymean = mean(Ysim,3); % Calculate means Ystd = std(Ysim,0,3); % Calculate std deviations
Постройте средние значения + стандартное отклонение/-1 для симулированного ряда:
figure; subplot(2,1,1) plot(DataTable.Time(end-10:end),Y(end-10:end,1),'k') hold('on') plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)],'r') plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)]+[0;Ystd(:,1)],'b') plot([DataTable.Time(end) FDates],[Y(end,1);Ymean(:,1)]-[0;Ystd(:,1)],'b') title('Transformed real GDP') subplot(2,1,2) plot(DataTable.Time(end-10:end),Y(end-10:end,2),'k') hold('on') plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)],'r') plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)]+[0;Ystd(:,2)],'b') plot([DataTable.Time(end) FDates],[Y(end,2);Ymean(:,2)]-[0;Ystd(:,2)],'b') title('Transformed real 3-mo T-bill rate')