问题 使用statsmodels进行ARMA样本外预测


我正在使用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,我如何使用先前校准的模型生成一系列基于此观察结果的预测(预测)?


12307
2017-09-04 14:29


起源



答案:


我认为这是一个问题。如果你在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))

这是一个新的预测,领先一步。您可以将此更改为y,并且您需要更新残差。


12
2017-09-04 17:29



你知道这是否仍然是statsmodels的一个问题?现在这个包内有更好的支持吗? - dimab0
这相当于做res.forecast() statsmodels.org/dev/generated/... - Miss Palmer


答案:


我认为这是一个问题。如果你在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))

这是一个新的预测,领先一步。您可以将此更改为y,并且您需要更新残差。


12
2017-09-04 17:29



你知道这是否仍然是statsmodels的一个问题?现在这个包内有更好的支持吗? - dimab0
这相当于做res.forecast() statsmodels.org/dev/generated/... - Miss Palmer


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

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

这将是 res.forcast(steps=1)

同样适用于ARIMA。

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


0
2018-04-23 19:02



哦,没有看到帕尔默小姐的评论 - nitsan