Прогнозирование ARMA вне выборки с помощью statsmodels

Я использую statsmodels для соответствия модели ARMA.

import statsmodels.api as sm
arma    = sm.tsa.ARMA(data, order =(4,4));
results = arma.fit( full_output=False, disp=0);

Где data - одномерный массив. Я знаю, чтобы получить примерные предсказания:

pred = results.predict();

Теперь, учитывая второй набор данных data2, как я могу использовать ранее откалиброванную модель для генерации серии с прогнозами (прогнозами), основанными на этих наблюдениях?

Ответ 1

Я думал, что для этого есть проблема. Если вы напишите файл github, я с большей вероятностью буду добавлять что-то подобное. Механизм прогнозирования пока недоступен как пользовательские функции, поэтому вам нужно будет сделать что-то вроде этого.

Если вы уже поместили модель, вы можете сделать это.

# this is the nsteps ahead predictor function
from statsmodels.tsa.arima_model import _arma_predict_out_of_sample
res = sm.tsa.ARMA(y, (3, 2)).fit(trend="nc")

# get what you need for predicting one-step ahead
params = res.params
residuals = res.resid
p = res.k_ar
q = res.k_ma
k_exog = res.k_exog
k_trend = res.k_trend
steps = 1

_arma_predict_out_of_sample(params, steps, residuals, p, q, k_trend, k_exog, endog=y, exog=None, start=len(y))

Это новый прогноз на 1 шаг вперед. Вы можете применить это к y, и вам нужно будет обновить остатки.

Ответ 2

Для одномерного внепланового прогнозирования (теста) мы можем использовать:

ARMAResults.forecast(steps=1, exog=None, alpha=0.05)

Это будет res.forcast(steps=1)

То же самое доступно и для ARIMA.

ARIMAResults.forecast(steps=1, exog=None, alpha=0.05)