我正在尝试使用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?
但是我不了解如何克服这个问题,因为我没有任何外在的值(value)要提交。
我还基于ARIMA建立了一个模型,可以使用该模型进行适当的预测。由于我没有非季节性的时间序列,所以我认为使用SARIMAX获得更好的结果可能是个好主意。不幸的是,我无法处理此错误。
预先感谢您的帮助!
最佳答案
您需要几年(整个季节周期)才能估算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