首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >statsmodels.tsa._stl.STL“无法从endog确定期间”

statsmodels.tsa._stl.STL“无法从endog确定期间”
EN

Stack Overflow用户
提问于 2021-06-23 15:56:39
回答 1查看 1.2K关注 0票数 0

我想通过statsmodels方法进行分解

我的时间序列数据如下所示:

代码语言:javascript
运行
复制
         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中时

代码语言:javascript
运行
复制
STL(sdf, seasonal=20, robust=True)

我总是收到这样的错误:

代码语言:javascript
运行
复制
--------------------------------------------------------------------------
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-29 00:41:21

如果您的时间序列在索引上没有已知的频率(例如,sdf.index.freqNone,则需要使用period设置季节性的周期。seasonal告诉STL在季节性LOWESS中使用多少个完整的季节,但没有告诉STL一个完整的周期需要多少个观测值。

代码语言:javascript
运行
复制
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()

这段代码产生

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68095810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档