0

我正在尝试使用 Loess 分析 STL 分解的源代码,并确定将观察到的数据拆分为季节性、趋势和残差背后的数学。请在下面找到 STL 源代码的链接: https ://github.com/statsmodels/statsmodels/blob/master/statsmodels/tsa/seasonal.py

我能够解码季节性的值。但是为了找到趋势值的计算方式,我被重定向到卷积过滤器函数,该函数又进一步调用计算趋势值。我需要 2 条信息: 1. 过滤器值(数组)是如何生成的?(其背后的逻辑) 2. 使用卷积过滤器如何计算趋势值?

4

1 回答 1

0

底层 STL 实现似乎是netlib中可用的原始 Fortran 实现的直接端口。我建议阅读原始论文。作者表明,过滤器的组合可以区分不同尺度的变化,其中“趋势”分量是最长的尺度变化。迭代的稳定性意味着对为迭代的各个阶段指定的平滑宽度的某些约束。我对 java 进行了较少的字面翻译,可在此处获得,这可能(或可能不会)有助于理解算法。它扩展了 Fortran 实现以允许局部二次黄土插值。这在论文中有所描述,但仅在 S 版本中实现(R 版本没有这个 - 它是原始 Fortran 的包装器)。

于 2020-07-16T21:51:03.357 回答