В этом примере показано, как разделить временную шкалу на периоды предварительной выборки, оценки и прогноза, и показано, как предоставить соответствующее количество наблюдений для инициализации динамической модели для оценки и прогнозирования.
Рассмотрите возможность оценки и прогнозирования динамической модели, содержащей члены авторегрессионного и скользящего среднего и компонент регрессии для экзогенных переменных предиктора (например, модель ARMAX). Чтобы оценить и спрогнозировать модель, estimate должен иметь достаточно предварительных ответов для инициализации авторегрессивных терминов, и он должен иметь достаточно инноваций для инициализации терминов скользящего среднего. Если не указать предварительный пример ответов, то estimate backcasts для требуемой суммы, и он устанавливает необходимые предварительные изменения в 0.
Аналогично, для прогнозирования ответов из подогнанной модели, forecast должны иметь достаточно предварительных ответов и инноваций. Несмотря на то, что необходимо указать ответы предварительного отбора, в прогнозе необходимо установить для нововведений предварительного отбора значение 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 удаляет все строки (моменты времени) из данных ответа и предиктора, если отсутствует хотя бы одно наблюдение. Такое поведение по умолчанию может усложнить разбиение на временные шкалы. Одним из способов избежать поведения по умолчанию является удаление всех строк, содержащих хотя бы одно отсутствующее значение.
Удалить все ведущие NaNs из данных, применяя удаление в списке.
varnames = ["GNPR" "IPI" "E" "WR"]; Tbl = rmmissing(DataTable(:,varnames));
Стабилизируйте переменные ответа и предиктора, преобразуя их в возвраты.
StblTbl = varfun(@price2ret,Tbl);
StblTbl.Properties.VariableNames = varnames;
T = size(StblTbl,1) % Total sample sizeT = 61
GNPR = StblTbl.GNPR;
X = StblTbl{:,varnames(2:end)};Преобразование в возврат уменьшает размер выборки на единицу.
Чтобы подогнать модель ARMAX (1,2) к данным ,estimate необходимо инициализировать условное среднее первого ответа , используя предыдущий ответ и два предыдущих нововведения, (((//) Если значения предварительной выборки не указаны, estimate backcasts для получения и устанавливает предварительные инновации в 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 должен инициализировать первый прогноз с использованием предыдущего ответа y56и двух предыдущих нововведений и . Однако если вы предоставите достаточно данных ответа и экзогенных данных для инициализации модели, то 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"])
