Statsmodels SARIMAX:我如何处理maxlag错误?

时间:2017-03-09 17:41:21

标签: python time-series forecasting statsmodels

我正在尝试使用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设置为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获得更好的结果可能是个好主意。不幸的是,我无法处理此错误。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

您需要几年(完整的季节周期)才能估算出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