Statsmodelsseasonal_decompose - 它有什么天真之处?

问题描述 投票:0回答:2

一直在 Python 中处理时间序列,并使用

sm.tsa.seasonal_decompose
。在docs中,他们介绍了这样的功能:

我们添加了一个简单的季节性分解工具,与 R 的

decompose
相同。

这是文档中的代码副本及其输出:

import statsmodels.api as sm

dta = sm.datasets.co2.load_pandas().data
# deal with missing values. see issue
dta.co2.interpolate(inplace=True)

res = sm.tsa.seasonal_decompose(dta.co2)
res.plot()

他们说这是“天真”,但没有免责声明它有什么问题。有谁知道吗

python r time-series statsmodels
2个回答
22
投票
根据参考文献

,StatsModels 似乎使用经典的移动平均方法来检测趋势并应用季节性分解(您可以查看更多here,特别是关于移动平均线经典分解)。 但是,还可以使用其他高级季节性分解技术,例如

STL 分解

,它也有一些 Python 实现。 (更新 - 11/04/2019 正如 @squarespiral 的评论所指出的,此类实现似乎已合并到 StatsModels 的 master 分支中)。 在上面的链接中,您可以找到有关每种建议方法的优点和缺点的完整参考。

希望有帮助!


0
投票
源代码

statsmodels.tsa.seasonal()通过以下方式解构时间序列:


    Trend
  1. 由卷积窗口计算,由参数 period=12 决定,例如;
    去趋势时间序列通过 Raw-Trend 或 Raw/Trend 获得,由参数 
  2. model
  3. ;
     控制
    
  4. 季节
  5. 最终通过对单个周期内的所有时间段进行平均来计算(例如,此处为 12); 最后,
  6. 残差
  7. 就是留下的噪声。
  8. 我想说,这在某种程度上是传统的,就像机器学习任务的特征工程工作。不确定它是否会提高某些高级深度学习架构(例如 Transformer)的性能。

© www.soinside.com 2019 - 2024. All rights reserved.