ARMA模型在statsmodels中的样本外预测

15

我正在使用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个回答

17

我认为这个问题是存在的。如果您在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上,并且需要更新残差。


5
你知道在statsmodels中这个问题是否仍然存在吗?现在这个包对此提供了更好的支持吗? - dimab0
2
这和执行res.forecast() 相当吗?http://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARMAResults.forecast.html#statsmodels.tsa.arima_model.ARMAResults.forecast - tea_pea

0

对于单变量的样本外预测(测试),我们可以使用:

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

它将是 res.forcast(steps=1)

ARIMA也有同样的功能。

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


哦,没有看到 Palmer 女士的评论。 - nitsan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接