【问题标题】:Using Statsmodel and the ARIMA model to forecast but running into issues使用 Statsmodel 和 ARIMA 模型进行预测但遇到问题
【发布时间】:2022-01-13 05:20:26
【问题描述】:

我正在尝试学习如何根据 Statsmodel 库中的 ARIMA 模型预测数据,但我一直遇到问题。目前我只是试图将我的预测与实际情况对齐以测试我的模型,但我无法让 ARIMA 模型结果进行合作

import statsmodels.api as sm

model = sm.tsa.arima.ARIMA(train, order=(4,1,2))
result = model.fit()

result.summary()

step = 10

fc, se, conf = result.forecast(step)

这一切正常,但最后一步是抛出此错误

 ValueError                                Traceback (most recent call last)
Input In [57], in <module>
      1 step = 10
----> 3 fc, se, conf = result.forecast(step)

ValueError: too many values to unpack (expected 3)

我已经阅读了几个小时的文档,但我无法理解它。任何帮助将不胜感激

【问题讨论】:

  • 嗨,你看help(result.forecast)了吗?它说它返回预测值的平均值(并且只有那些)。所以它返回 1 件事,但你期望 3 件事,因此错误。我猜fc 的意思是“预测”,对吧?然后直接fc = result.forecast(step)。 conf 是置信区间?然后你通过conf = result.get_forecast(step).conf_int() 得到它(我同意 API 有点不直观)。不确定se 是什么意思。 (参数估计的标准误差?然后是se = result.bse;你可以看到here。)

标签: python pandas matplotlib statsmodels arima


【解决方案1】:

首先,您尝试保存函数返回的内容,在这种情况下,您需要三个值。一种用于fc,一种用于se,另一种用于conf。问题是函数.forecast() 将预测作为单个对象返回。您尝试解压缩单个对象,但 Python 需要三个。因此,“太多的值无法解压……”。您可以在此处阅读该函数的文档以检查它返回的内容:

https://www.statsmodels.org/dev/generated/statsmodels.tsa.arima.model.ARIMAResults.forecast.html#statsmodels.tsa.arima.model.ARIMAResults.forecast

https://www.statsmodels.org/dev/generated/statsmodels.tsa.arima.model.ARIMAResults.html

如果你尝试这样做,它会将对象“preds”中的所有预测保存为熊猫系列:

preds = result.forecast(step)

其次,如果你想知道一个函数返回什么,你可以简单地只写函数(不带… = function())作为单元格的最后一行,然后你可以看到函数返回什么。或者您可以查看文档。您可以使用print(type(result)) 打印对象的类型,它会返回“statsmodels.tsa.arima.model.ARIMAResultsWrapper”,如果您使用 Google 搜索,您会看到上面的文档。

【讨论】:

    猜你喜欢
    • 2019-03-19
    • 2015-06-29
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2021-10-18
    相关资源
    最近更新 更多