В этом примере показано, как спрогнозировать отклики, обусловленные текущими значениями других откликов в прогнозном горизонте. Чтобы проиллюстрировать условное прогнозирование, пример моделирует ежеквартальные показатели индекса потребительских цен (ИПЦ) и уровня безработицы как модели 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, по-видимому, растет экспоненциально.
Стабилизируйте ИПЦ путем преобразования его в ряд темпов роста. Синхронизируйте две серии путем удаления первого наблюдения из ряда уровней безработицы. Создайте новый набор данных, содержащий преобразованные переменные.
rcpi = price2ret(DataTable.CPIAUCSL); unrate = DataTable.UNRATE(2:end); Data = array2timetable([rcpi unrate],'RowTimes',DataTable.Time(2:end),... 'VariableNames',{'rcpi','unrate'});
Создайте модель VAR (4) по умолчанию с помощью синтаксиса shorthand.
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)];
Используя оценочную модель, прогнозируйте путь ежеквартального темпа роста ИПЦ на ближайшие два года. Предположим, что уровень безработицы остается неизменным в течение следующих двух лет. Задайте весь набор данных как предварительные наблюдения и известные значения в прогнозном горизонте.
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, темпы роста ИПЦ, как ожидается, сократятся.