【发布时间】: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