Я очень запутался в том, как предсказывать / прогнозировать с помощью ARIMA.
Предположим, у нас есть серия с именем y_orig
, которую мы разбиваем на y_train
и y_test
. Предполагая, что y_orig
не является стационарным, мы можем подобрать ARIMA, используя приведенный ниже код
# fit ARIMA model
from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(y_train, order=(2,1,2))
model_fit = model.fit(disp=0)
print(model_fit.summary())
После подбора модели мы можем предсказать, используя приведенный ниже код
n_periods = len(`y_test`)
fc, -, - = model_fit.forecast(n_periods, alpha=0.05) # 95% conf
Значение fc
должен дать прогноз, который я затем сравниваю с y_test
. Обратите внимание, что, как и ожидалось, y_test
не используется на этапе обучения. Также обратите внимание, что я ищу не скользящий прогноз, а долгосрочный прогноз, в котором параметры (после обучения) фиксированы.
Я очень запутался, потому что y_test
вообще не используется на этапе прогнозирования .
Например, если бы мы использовали другие модели прогнозирования (например, в Keras или tensorflow). мы бы так это кодировали.
Во-первых, мы подгоняем модель на этапе обучения, который я не показываю - это не имеет значения для моего вопроса. Затем мы прогнозируем и смотрим, насколько хорошо нам подходит in sample
, используя приведенный ниже код.
y_pred_train=model.predict(y_train)
затем мы тестируем модель out of sample
, как показано ниже:
y_pred_test=model.predict(y_test)
В этой ситуации параметры не переоцениваются и y_test
используется на этапе тестирования для прогноза следующего значения (с фиксированными параметрами).
Отсюда мое замешательство с ARIMA. Почему мы не делаем то же самое с моделью ARIMA?
Пожалуйста, помогите мне понять, я очень запутался.
Большое спасибо !!