【问题标题】:Statsmodels SARIMAX: How can I deal with the maxlag error?Statsmodels SARIMAX:如何处理 maxlag 错误?
【发布时间】:2017-07-30 19:57:39
【问题描述】:

我正在尝试使用 SARIMAX 预测季节性时间序列。时间序列由 PV 馈入的每日最大值组成,这导致假设周期为 365 天。

这是我的代码:

mod= SARIMAX(realy.Max, order=(0,1,1), seasonal_order=(0,1,1,365))
results_SARIMAX = mod.fit(disp= -1)

由于我的周期性,我将seasonal_order 中的 s 设置为 365。我还根据一些预先考虑分别设置了变量 p、d、q 和 P、D、Q。 我的问题是,执行代码后出现以下错误:

ValueError: maxlag should be < nobs

当我将 s 的值从 365 设置为 150 时,它正在工作,但结果很糟糕,因为这根本不是我的季节性。问题是,maxlag 或 nobs 在哪里定义,我可以相应地更改它们吗?

SARIMAX 函数的文档字符串只讲述季度或月度数据,而不是每日数据。 是否有人有使用 SARIMAX 的经验并且已经根据每日值对时间序列进行了预测?我已经搜索了互联网以解决问题,但我找不到任何有用的东西。

类似的问题已经出现在这里 How to set maxlag when Forecasting Sales for smaller data in SARIMAX? 和这里 How to change maxlag for ARMAX.predict?

但我不明白如何在我的情况下克服这个问题,因为我没有任何外生价值要提交。

我还建立了一个基于 ARIMA 的模型,我可以使用它进行正确的预测。由于我没有非季节性的时间序列,我认为使用 SARIMAX 获得更好的结果可能是个好主意。不幸的是,我无法处理这个错误。

提前感谢您的帮助!

【问题讨论】:

  • 你有多少年的数据?
  • 对不起,我以为我提到了。我得到了 2.5 年的数据。
  • 显然同时设置Q=1和s=365有问题。通过设置 Q=0 和 s =365 它正在工作。虽然,我不明白这一点。据我了解,在季节性 ARIMA 模型中,我还有三个旋钮可以使用,它们是 P、Q、D。它们三个不能大于 1。设置 Q = 1 意味着,我将 s = 365 的季节性滞后误差 et-s 的倍数添加到我的时间序列的预测中。当它只使用 Q =0 时,我就没有季节性了?!
  • SARIMAX 模型的替代方法是使用Facebook's Prophet library

标签: python time-series forecasting statsmodels


【解决方案1】:

您需要几年(完整的季节性周期)才能估计 SARIMAX 的季节性部分,请参阅https://github.com/statsmodels/statsmodels/issues/3529

作为替代方案,您可以使用样条或傅立叶级数将季节性模式建模为exog。参见例如http://robjhyndman.com/hyndsight/longseasonality/

这是一个草稿笔记本,它使用 patsy 公式为 OLS 和 ARMA 创建季节性样条曲线。 SARIMAX 将以同样的方式工作。 https://gist.github.com/josef-pkt/1ea164439b239b228557

【讨论】:

  • 感谢您的回答。我会检查这是否有帮助。
猜你喜欢
  • 2020-10-17
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2020-08-06
  • 2021-09-17
  • 2020-03-20
  • 2019-06-05
相关资源
最近更新 更多