statsmodels.tsa._stl.STL "Unable to determine period from endog"
statsmodels.tsa._stl.STL "Unable to determine period from endog"
我想通过statsmodels STL方法分解
我的时间序列数据如下所示:
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
如果您的时间序列在索引上没有已知频率(例如,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()
此代码生成
我想通过statsmodels STL方法分解
我的时间序列数据如下所示:
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
如果您的时间序列在索引上没有已知频率(例如,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()
此代码生成