АРМА вневыборочного прогнозирования с 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
, как я могу использовать ранее откалиброванную модель для создания ряда с прогнозами (прогнозами), основанными на этих наблюдениях?
2 ответов
Я думал, что для этого есть проблема. Если вы подадите его на 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, и вам нужно будет обновить остатки.
для одномерного ВНЕ-из прогноза образца (теста) мы можем использовать:
ARMAResults.forecast(steps=1, exog=None, alpha=0.05)
было бы res.forcast(steps=1)
то же самое доступно и для ARIMA.
ARIMAResults.forecast(steps=1, exog=None, alpha=0.05)