【问题标题】:ARMA out-of-sample prediction with statsmodels使用 statsmodels 进行 ARMA 样本外预测
【发布时间】:2013-09-08 02:56:47
【问题描述】:

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

【问题讨论】:

    标签: python forecasting statsmodels


    【解决方案1】:

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

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

    应该是res.forcast(steps=1)

    同样适用于 ARIMA。

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

    【讨论】:

    • 哦,没看到帕尔默小姐的评论
    【解决方案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))
    

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

    【讨论】:

    • 您知道这是否仍然是 statsmodels 的问题吗?现在包中是否更好地支持了这一点?
    • 这相当于做 res.forecast() statsmodels.org/dev/generated/…
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 2016-12-08
    • 2018-06-23
    • 2019-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    相关资源
    最近更新 更多