Задайте предварительные и прогнозные данные периода для прогноза модели ARIMAX

Этот пример показывает, как разбить временную шкалу на предопределенные, оценочные и прогнозные периоды, и он показывает, как предоставить соответствующее количество наблюдений, чтобы инициализировать динамическую модель для оценки и прогнозирования.

Рассмотрите оценку и прогнозирование динамической модели, содержащей авторегрессивные и движущиеся средние значения условия, и регрессионый компонент для экзогенных переменных предиктора (для примера, модель ARMAX). Чтобы оценить и спрогнозировать модель, estimate должны иметь достаточное количество откликов пресса, чтобы инициализировать условия авторегрессии, и у него должно быть достаточно инноваций, чтобы инициализировать условия скользящего среднего значения. Если вы не задаете примитивные отклики, то estimate backcasts на необходимую сумму, и он устанавливает необходимые предварительные нововведения в 0.

Точно так же, чтобы предсказать ответы от подобранной модели, forecast должны иметь достаточно примитивных откликов и инноваций. Несмотря на то, что вы должны задать отклики прессования, прогнозирование устанавливает необходимые нововведения presample на 0. Кроме того, регрессионный компонент в прогнозируемом периоде требует прогнозируемых или будущих данных предиктора; без будущих данных предиктора, forecast отбрасывает регрессионный компонент из модели, когда она генерирует прогнозы.

Хотя поведение по умолчанию estimate и forecast являются разумными для большинства рабочих процессов, хорошей практикой является инициализация модели самостоятельно путем разбиения временной шкалы вашей выборки на предварительные, оценочные и прогнозные периоды и предоставления соответствующего количества наблюдений.

Рассмотрим модель ARMAX (1,2), которая предсказывает текущий реальный валовой национальный продукт США (GNPR) темп с текущим индексом промышленного производства (IPI), занятость (E), и реальная заработная плата (WR) скорости как экзогенные переменные. Разделите временную шкалу выборки на предварительные выборки, оценки и прогнозные периоды. Подгонка модели к выборке оценки и использование прицельных откликов для инициализации авторегрессивного термина. Затем спрогнозируйте GNPR скорость от подобранной модели. Когда вы прогнозируете:

  • Задайте отклики в конце периода оценки как предварительная выборка, чтобы инициализировать авторегрессивный термин

  • Задайте данные предиктора в конце периода оценки как предварительная выборка, чтобы инициализировать компонент скользящего среднего значения. forecast выводит необходимые инновации из заданных припадков откликов и данных предиктора.

  • Включите эффекты переменных предиктора в предсказанные отклики путем определения будущих данных предиктора.

Загрузите набор данных Нельсона-Плоссера.

load Data_NelsonPlosser

Для получения дополнительной информации о наборе данных отобразите Description.

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

DataTable = table2timetable(DataTable,"RowTimes",datetime(DataTable.Dates,"Format","yyyy"));

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

Econometrics Toolbox™ ARIMA model удаляет все строки (временные точки) из данных отклика и предиктора, если отсутствует хотя бы одно наблюдение. Это поведение по умолчанию может усложнить разбиение временной шкалы. Один из способов избежать поведения по умолчанию - удалить все строки, содержащие по крайней мере одно отсутствующее значение, самостоятельно.

Удалите все ведущие NaNs из данных путем listwise удаления.

varnames = ["GNPR" "IPI" "E" "WR"];
Tbl = rmmissing(DataTable(:,varnames));

Стабилизируйте переменные отклика и предиктора путем преобразования их в возвраты.

StblTbl = varfun(@price2ret,Tbl);
StblTbl.Properties.VariableNames = varnames;
T = size(StblTbl,1) % Total sample size
T = 61
GNPR = StblTbl.GNPR;
X = StblTbl{:,varnames(2:end)};

Преобразование в возвраты уменьшает размер выборки на единицу.

Чтобы подогнать модель ARMAX (1,2) к данным, estimate необходимо инициализировать условное среднее значение первого отклика y1 при помощи предыдущего ответа y0 и двух предыдущих нововведений ε0 и ε-1. Если вы не задаете значения предварительной выборки, estimate backcasts, чтобы получить y0 и устанавливает предварительный образец инноваций равным 0, что является их ожидаемым значением.

Создайте векторы индекса для предварительной выборки, оценки и прогноза. Рассмотрим 5-летний прогнозный горизонт.

idxpresample = 1;
idxestimate = 2:56;
idxforecast = 57:T;

Подбор модели ARMAX (1,2) к данным. Задайте предварительные данные отклика и экзогенные данные оценки-выборки. Поскольку нет модели, из которой можно вывести предварительные примеры инноваций, позволяйте estimate для установки необходимых предварительных образцов инноваций в 0.

Mdl = arima(1,0,2);

y0est = GNPR(idxpresample); % Presample response data for estimation
yest = GNPR(idxestimate);   % Response data for estimation 
XEst = X(idxestimate,:);     % Estimation sample exogenous data

Mdl = estimate(Mdl,yest,'Y0',y0est,'X',XEst,'Display','off');

Чтобы спрогнозировать модель ARMAX (1,2) в прогнозный период, forecast необходимо инициализировать первый прогноз y57 при помощи предыдущего ответа y56и предыдущие два нововведения ε56 и ε55. Однако, если вы поставляете достаточно отклика и экзогенных данных, чтобы инициализировать модель, то forecast выводит инновации для вас. Чтобы предсказать модель ARMAX (1,2), прогноз требует трех ответов и двух наблюдений от экзогенных данных непосредственно перед прогнозным периодом. Когда вы предоставляете предварительные данные для прогнозирования, forecast использует только последние необходимые наблюдения. Однако этот пример выполняется путем определения только необходимого количества предварительных наблюдений.

Спрогнозируйте подобранную модель ARMAX (1,2) в прогнозный период. Укажите только необходимые наблюдения в конце выборки оценки в качестве предварительных данных. Задайте экзогенные данные прогнозного периода.

y0f = yest((end - 2):end); % Presample response data for forecasting
X0f = XEst((end - 1):end,:); % Presample exogenous data for forecasting
XF = X(idxforecast,:);     % Forecast period exogenous data for model regression component

yf = forecast(Mdl,5,y0f,'X0',X0f,'XF',XF);

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

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

yrs = year(StblTbl.Time(30:end));

figure;
plot(yrs,StblTbl.GNPR(30:end),"b","LineWidth",2);
hold on
plot(yrs(end-4:end),yf,"r--","LineWidth",2);
h = gca;
px = yrs([end - 4 end end end - 4]);
py = h.YLim([1 1 2 2]);
hp = patch(px,py,[0.9 0.9 0.9]);
uistack(hp,"bottom");
axis tight
title("Real GNP Rate");
legend(["Forecast period" "Observed" "Forecasted"])

Figure contains an axes. The axes with title Real GNP Rate contains 3 objects of type patch, line. These objects represent Forecast period, Observed, Forecasted.

См. также

Объекты

Функции

Похожие темы