【问题标题】:Python/Scipy Kolmogorov-Zurbenko filter?Python/Scipy Kolmogorov-Zurbenko 过滤器?
【发布时间】:2016-07-27 15:31:59
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: python scipy filtering


    【解决方案1】:

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

    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) 的自适应版本。这至少需要一个 rolling_mean 方法,该方法允许在中心的左侧和右侧指定不同的窗口长度。 https://cran.r-project.org/web/packages/kza/index.html 的 C 代码看起来相当简单明了,但它需要循环,因此如果直接在 Python 中实现会很慢。

    【讨论】:

    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2011-12-15
    • 2012-06-08
    • 1970-01-01
    • 2019-03-11
    • 2018-06-14
    • 2022-01-20
    • 2019-03-27
    相关资源
    最近更新 更多