我想通过statsmodels方法进行分解
我的时间序列数据如下所示:
success.rate
Date
2020-09-11 24.735701
2020-09-14 24.616301
2020-09-15 24.695900
2020-09-16 24.467051
2020-09-17 24.118799
当我把它放到STL中时
STL(sdf, seasonal=20, robust=True)
我总是收到这样的错误:
--------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/mnt/d/mywork/test
STL(sdf,seasonal=20, robust=True)
----> 1 STL(sdf, seasonal=20, robust=True)
statsmodels/tsa/_stl.pyx in statsmodels.tsa._stl.STL.__init__()
ValueError: Unable to determine period from endog
发布于 2021-06-29 00:41:21
如果您的时间序列在索引上没有已知的频率(例如,sdf.index.freq
为None
,则需要使用period
设置季节性的周期。seasonal
告诉STL在季节性LOWESS中使用多少个完整的季节,但没有告诉STL一个完整的周期需要多少个观测值。
from statsmodels.datasets import co2
from statsmodels.tsa.seasonal import STL
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
data = co2.load(True).data
data = data.resample('M').mean().ffill()
# Remove freq info
data.index = [i for i in range(data.shape[0])]
res = STL(data, period=12).fit()
res.plot()
plt.show()
这段代码产生
https://stackoverflow.com/questions/68095810
复制相似问题