Statsmodels SARIMAX:如何处理 maxlag 错误?

Statsmodels SARIMAX: How can I deal with the maxlag error?

我正在尝试使用 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? 和这里

但我不明白如何在我的案例中克服这个问题,因为我没有任何外生价值可以提交。

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

提前感谢您的帮助!

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

作为替代方案,您可以使用样条或傅里叶级数将季节性模式建模为 exog。例如参见 [​​=12=]

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

你可以试试这个,它解决了我的问题:

mod_sl_ar = sm.tsa.statespace.SARIMAX(train[var],exog=train[arimax_vars],order= [0,1,2] , seasonal_order= [0,1,1,52] ,mle_regression=True)
start_params = np.r_[[0] * (mod_sl_ar.k_params - 1), 1]
res_sl_ar = mod_sl_ar.fit(start_params=start_params)
predictions = res_hl_ar.forecast(len(test),exog=test[arimax_vars], dynamic= True)

Source