Этот пример показывает, как предсказать условное выражение ответов на текущих значениях других ответов в горизонте прогноза. Проиллюстрировать условное прогнозирование, модели в качестве примера ежеквартальные меры индекса потребительских цен (CPI) и уровня безработицы как модель VAR (4).
Загрузите набор данных Data_USEconModel
.
load Data_USEconModel
Постройте два ряда на отдельных графиках.
figure; plot(DataTable.Time,DataTable.CPIAUCSL); title('Consumer Price Index'); ylabel('Index'); xlabel('Date');
figure; plot(DataTable.Time,DataTable.UNRATE); title('Unemployment Rate'); ylabel('Percent'); xlabel('Date');
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)];
Используя предполагаемую модель, прогноз путь ежеквартального темпа роста CPI в течение следующих двух лет. Примите, что уровень безработицы остается то же самое в течение следующих двух лет. Задайте целый набор данных как преддемонстрационные наблюдения и известные значения в горизонте прогноза.
Y = forecast(EstMdl,8,Data.Variables,'YF',YF)
Y = 8×2
-0.0076 8.5000
-0.0136 8.5000
-0.0009 8.5000
-0.0051 8.5000
-0.0050 8.5000
-0.0007 8.5000
-0.0009 8.5000
0.0003 8.5000
Y
8 2 массив путей к ответу. Несмотря на то, что первый столбец содержит условные прогнозы, второй столбец состоит полностью из последнего наблюдаемого уровня безработицы.
Учитывая, что уровень безработицы 8.5 в течение следующих двух лет, темп роста CPI, как ожидают, уменьшится.