Python/Scipy KolmogorovZurbenko过滤器?

2024-05-13 01:46:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个基于Python的Kolmogorov Zurbenko过滤器,它接收一个时间序列的输入,并根据窗口大小和迭代次数对其进行过滤,但没有找到任何有效的方法。有人比我运气好吗?在

谢谢!在


Tags: 方法过滤器时间序列次数kolmogorov运气zurbenko
1条回答
网友
1楼 · 发布于 2024-05-13 01:46:02

我刚调查过同样的问题。在pandas中,实际的KZ过滤器非常简单:

import pandas as pd
def kz(series, window, iterations):
    """KZ filter implementation
    series is a pandas series
    window is the filter window m in the units of the data (m = 2q+1)
    iterations is the number of times the moving average is evaluated
    """
    z = series.copy()
    for i in range(iterations):
        z = pd.rolling_mean(z, window=window, min_periods=1, center=True)
    return z

据我所知,不容易实现的是Kologorov Zurbenko过滤器(KZA)的自适应版本。这至少需要一种滚动平均法,该方法允许在中心左右两侧指定不同的窗口长度。位于https://cran.r-project.org/web/packages/kza/index.html的C代码看起来相当简单和直接,但它需要循环,因此如果直接用Python实现的话,速度会非常慢。在

相关问题 更多 >