内生变量的长度必须大于使用的滞后数
Posted
技术标签:
【中文标题】内生变量的长度必须大于使用的滞后数【英文标题】:Length of endogenous variable must be larger the the number of lags used 【发布时间】:2021-01-28 22:07:54 【问题描述】:我最近在关注 Susan Li 的 Python 时间序列分析教程。我正在以下系列中拟合时间序列 SARIMAX 模型:
y['2017':]
OUT:
Order Date
2017-01-01 397.602133
2017-02-01 528.179800
2017-03-01 544.672240
2017-04-01 453.297905
2017-05-01 678.302328
2017-06-01 826.460291
2017-07-01 562.524857
2017-08-01 857.881889
2017-09-01 1209.508583
2017-10-01 875.362728
2017-11-01 1277.817759
2017-12-01 1256.298672
Freq: MS, Name: Sales, dtype: float64
使用以下内容:
mod = sm.tsa.statespace.SARIMAX(y,
order=(1, 1, 1),
seasonal_order=(1, 1, 0, 12),
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit()
print(results.summary().tables[1])
现在,这在此处运行良好,但是当我尝试可视化结果时,我收到以下错误:
results.plot_diagnostics(figsize=(16, 8))
OUT:
ValueError Traceback (most recent call last)
<ipython-input-16-6cfeaa52b7c1> in <module>
----> 1 results.plot_diagnostics(figsize=(16, 8))
2 plt.show()
~/opt/anaconda3/lib/python3.8/site-packages/statsmodels/tsa/statespace/mlemodel.py in plot_diagnostics(self, variable, lags, fig, figsize, truncate_endog_names)
4282
4283 if resid.shape[0] < max(d, lags):
-> 4284 raise ValueError(
4285 "Length of endogenous variable must be larger the the number "
4286 "of lags used in the model and the number of observations "
ValueError: Length of endogenous variable must be larger the the number of lags used in the model and the number of observations burned in the log-likelihood calculation.
<Figure size 1152x576 with 0 Axes>
有没有人知道如何解决这个问题,如果是某种库错误,如果不能直接修复,那么我怎样才能获得所有的诊断图?
【问题讨论】:
错误消息告诉您没有足够的数据来计算诊断测试统计信息。y
的长度是多少?
y 有 48 个观测值,因此长度为 48。尝试复制相同的分析,得到相同的错误,卡在同一点
【参考方案1】:
对于新人来说,Shantanu 的意思是—— 而不是这个-
mod = sm.tsa.statespace.SARIMAX(y,
enter code hereorder=(1, 1, 1),
seasonal_order=(1, 1, 0, 12),
enforce_stationarity=False,
enforce_invertibility=False)
您可以写 - enforce_stationarity=False, - 这已被删除,您也可以评论它 - #enforce_stationarity=False,
mod = sm.tsa.statespace.SARIMAX(y, order=(1, 1, 1),
seasonal_order=(1, 1, 0, 12),
enforce_invertibility=False)
【讨论】:
【参考方案2】:在定义模型时,删除参数(enforce_stationarity = False),它应该可以正常工作!
【讨论】:
【参考方案3】:要解决 ARIMA 模型中的此错误,出于某种原因更改图形大小将解决您的问题。就像我在下面所做的那样:
results.plot_diagnostics(figsize=(15, 12)) plt.show()
【讨论】:
你在training_X有什么东西吗?如果那是空的,这可能会发生。以上是关于内生变量的长度必须大于使用的滞后数的主要内容,如果未能解决你的问题,请参考以下文章