В этом примере показано, как создавать смоделированные отклики в горизонте прогноза, когда некоторые значения откликов известны. Для иллюстрации формирования условного моделирования в примере моделируются квартальные показатели индекса потребительских цен (ИПЦ) и уровня безработицы в качестве модели 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');

Как представляется, ИПЦ растет в геометрической прогрессии.
Стабилизировать ИПЦ путем преобразования его в ряд темпов роста. Синхронизировать два ряда, удалив первое наблюдение из ряда уровня безработицы. Создайте новый набор данных, содержащий преобразованные переменные, и не включайте строки, содержащие по крайней мере одно отсутствующее наблюдение.
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)];
Используя расчетную модель, смоделировать 1000 путей роста квартальных ИПЦ на следующие два года. Предположим, что уровень безработицы остается прежним в течение следующих двух лет. Укажите весь набор данных как предварительные наблюдения и известные значения в горизонте прогноза.
numpaths = 1000; rng(1); % For reproducibility Y = simulate(EstMdl,8,'Y0',Data.Variables,'NumPaths',numpaths,'YF',YF);
Y представляет собой массив путей отклика 8 на 2 на 1000. Хотя первый столбец на каждой странице содержит смоделированные значения, второй столбец полностью состоит из последнего наблюдаемого уровня безработицы.
Оцените средние темпы роста ИПЦ в каждой точке горизонта прогноза.
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, ожидается, что темпы роста ИПЦ сократятся.