python - Python 时间序列的季节性趋势黄土法

标签 python time-series loess stl-decomposition

有谁知道是否有基于 Python 的程序利用 STL(季节性-趋势-黄土)方法分解时间序列?

我看到了对包装程序的引用以调用 STL 函数 在 R 中,但我发现从环境设置的角度来看(Python 和 R 在一起)不稳定且麻烦。此外,链接已有 4 年历史。

谁能指出一些更新的东西(例如 sklearnspicy 等)?

最佳答案

我还没有尝试过 STLDecompose,但我看了一眼,我相信它使用了通用的黄土平滑剂。这很难做对,而且往往效率低下。查看已失效的 STL-Java repo .

pyloess package为原始 R 版本使用的相同底层 Fortran 提供 python 包装器。您绝对不需要通过 R 的桥梁来获得相同的功能!这个包没有得到积极维护,我偶尔会在某些平台上构建它时遇到麻烦(因此这里是分支)。但是一旦建成,它确实可以工作,并且是您可能找到的最快的。我很想修改它以包含一些新功能,但就是不能让自己修改 Fortran(它是预处理的 RATFOR - 非常像 Fortran 的汇编语言,而且我在任何地方都找不到 RATFOR 预处理器).

我写了一个本地 Java 实现,stl-decomp-4j ,可以使用 pyjnius package 从 python 调用.这开始是原始 Fortran 的直接端口,重构为更现代的编程风格。然后,我将其扩展为允许二次黄土插值并支持季节性分量的分解后平滑,这些功能在原始论文中有所描述,但并未放入 Fortran/R 实现中。 (它们显然在 S-plus 实现中,但我们中很少有人可以访问它。)提高效率的关键是当点等距且逐点时黄土平滑会简化- 点平滑是通过简单地修改用于进行插值的权重来完成的。

STL-decomp-4j 示例包括一个 Jupyter notebook,演示如何从 python 调用此包。我可能应该将其形式化为 python 包,但还没有时间。非常愿意接受拉取请求。 ;-)

我很想看到这种方法直接移植到 python/numpy。我的“如果我有空闲时间”列表中的另一件事。

关于python - Python 时间序列的季节性趋势黄土法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048895/

相关文章:

python - Pandas :插入缺失的行并在数据框中绘制多个系列

python-3.x - 如何在 matplotlib 中创建具有垂直阴影的绘图

r - 黄土回归变为负值

python - 无法使用 Python 请求自动执行脚本来检查 phishcheck.me 上的 url

python - 如何将 Pandas 时间序列重新采样/对齐到最近的日历季度?

r - 如何用ggplot绘制黄土表面

jupyter-notebook - 导入错误: cannot import name 'STL' from 'statsmodels.tsa.seasonal'

python - 如何强制二阶 polyfit 的 y 截距为 0

Python argparse 无法识别的参数

python - 主板打印不正确