【问题标题】:Statsmodels seasonal_decompose - what is naive about it?Statsmodelsseason_decompose - 它有什么幼稚之处?
【发布时间】:2018-04-15 01:32:20
【问题描述】:

一直在 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()

他们说这是天真,但没有任何关于它有什么问题的免责声明。有人知道吗?

【问题讨论】:

  • 没有错。我猜这很“幼稚”,因为它使用简单的卷积和平均值来分离趋势和季节性结构,即它不是一种花哨的算法。
  • 谢谢,@user333700,我想知道 R 的 decompose 是否也“幼稚”,以及是否以及何时需要花哨。鉴于 .seasonal_decompose 处理我的数据,这可能就是您通常需要的全部,因此您会觉得印象深刻。
  • 一种很可能过于“幼稚”的可能性,即没有适当地捕捉数据的特征,是改变季节性模式,例如由于趋势或模式中断。有时这些也可以通过 box-cox 或类似的转换来删除。宏观经济数据的季节性调整(例如 X11)也考虑了假期的变化和类似的日历影响。

标签: python r time-series statsmodels


【解决方案1】:

我做了一些(嗯...天真的)研究,而且,according to the reference,似乎 StatsModels 使用经典的移动平均方法来检测趋势并应用季节性分解(您可以查看更多 here,特别是关于 @ 987654323@ 和 Classical Decomposition)。

不过,还有其他高级季节性分解技术可用,例如STL decomposition,其中也有一些Python implementations。 (UPDATE - 11/04/2019 正如@squarespiral 在 cmets 中指出的那样,此类实现似乎已合并到 StatsModels 的主分支中)。

在上面的链接中,您可以找到关于每种建议方法的优缺点的完整参考。

希望对你有帮助!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多