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