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

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

Рассмотрите оценку и прогнозирование динамической модели, содержащей условия авторегрессивного и скользящего среднего значения и компонент регрессии для внешних переменных прогноза (например, модель ARMAX). Чтобы оценить и предсказать модель, estimate должен иметь достаточно преддемонстрационных ответов, чтобы инициализировать авторегрессивные условия, и это должно иметь достаточно инноваций, чтобы инициализировать условия скользящего среднего значения. Если вы не задаете преддемонстрационные ответы, то обратные броски estimate для необходимого количества, и это устанавливает необходимые преддемонстрационные инновации на 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 синхронизирует весь ряд путем предварительного ожидания достаточного количества ведущего NaN s так, чтобы все ряды имели то же число элементов.

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

Удалите весь ведущий NaN s из данных путем применения 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, чтобы получить 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"])

Смотрите также

| |

Похожие темы