Симулируйте модель VAR условные ответы

В этом примере показано, как сгенерировать симулированные отклики в горизонте прогноза, когда некоторые значения отклика известны. Проиллюстрировать условную генерацию симуляции, модели в качестве примера ежеквартальные меры индекса потребительских цен (CPI) и уровня безработицы как модель VAR (4).

Загрузите Data_USEconModel набор данных.

load Data_USEconModel

Постройте два ряда на отдельных графиках.

figure;
plot(DataTable.Time,DataTable.CPIAUCSL);
title('Consumer Price Index');
ylabel('Index');
xlabel('Date');

Figure contains an axes object. The axes object with title Consumer Price Index contains an object of type line.

figure;
plot(DataTable.Time,DataTable.UNRATE);
title('Unemployment Rate');
ylabel('Percent');
xlabel('Date');

Figure contains an axes object. The axes object with title Unemployment Rate contains an object of type line.

CPI, кажется, растет экспоненциально.

Стабилизируйте CPI путем преобразования его в серию темпов роста. Синхронизируйте два ряда путем удаления первого наблюдения из ряда уровня безработицы. Создайте новый набор данных, содержащий преобразованные переменные, и не включайте строки, содержащие по крайней мере одно недостающее наблюдение.

rcpi = price2ret(DataTable.CPIAUCSL);
unrate = DataTable.UNRATE(2:end);
Data = array2timetable([rcpi unrate],'RowTimes',DataTable.Time(2:end),...
    'VariableNames',{'rcpi','unrate'});

Создайте модель VAR (4) по умолчанию с помощью краткого синтаксиса.

Mdl = varm(2,4)
Mdl = 
  varm with properties:

     Description: "2-Dimensional VAR(4) Model"
     SeriesNames: "Y1"  "Y2" 
       NumSeries: 2
               P: 4
        Constant: [2×1 vector of NaNs]
              AR: {2×2 matrices of NaNs} at lags [1 2 3 ... and 1 more]
           Trend: [2×1 vector of zeros]
            Beta: [2×0 matrix]
      Covariance: [2×2 matrix of NaNs]

Mdl varm объект модели. Это служит шаблоном для оценки модели.

Подбирайте модель к данным.

EstMdl = estimate(Mdl,Data.Variables)
EstMdl = 
  varm with properties:

     Description: "AR-Stationary 2-Dimensional VAR(4) Model"
     SeriesNames: "Y1"  "Y2" 
       NumSeries: 2
               P: 4
        Constant: [0.00171639 0.316255]'
              AR: {2×2 matrices} at lags [1 2 3 ... and 1 more]
           Trend: [2×1 vector of zeros]
            Beta: [2×0 matrix]
      Covariance: [2×2 matrix]

EstMdl varm объект модели. EstMdl структурно то же самое как Mdl, но все параметры известны.

Предположим, что экономист ожидает, что уровень безработицы останется то же самое как последний наблюдаемый уровень за следующие два года. Создайте 8 2 матрица, в которой первый столбец содержит NaN значения и второй столбец содержат последний наблюдаемый уровень безработицы.

YF = [nan(8,1) repmat(Data.unrate(end),8,1)];

Используя предполагаемую модель, симулируйте 1 000 путей ежеквартального темпа роста CPI в течение следующих двух лет. Примите, что уровень безработицы остается то же самое в течение следующих двух лет. Задайте целый набор данных как преддемонстрационные наблюдения и известные значения в горизонте прогноза.

numpaths = 1000;
rng(1); % For reproducibility
Y = simulate(EstMdl,8,'Y0',Data.Variables,'NumPaths',numpaths,'YF',YF);

Y 8 2 1 000 массивов путей к ответу. Несмотря на то, что первый столбец на каждой странице содержит симулированные значения, второй столбец состоит полностью из последнего наблюдаемого уровня безработицы.

Оцените средний темп роста CPI в каждой точке в горизонте прогноза.

MCForecast = mean(Y,3)
MCForecast = 8×2

   -0.0075    8.5000
   -0.0134    8.5000
   -0.0010    8.5000
   -0.0050    8.5000
   -0.0052    8.5000
   -0.0022    8.5000
   -0.0032    8.5000
   -0.0026    8.5000

Учитывая, что уровень безработицы 8.5 в течение следующих двух лет, темп роста CPI, как ожидают, уменьшится.

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

Объекты

Функции

Похожие темы