0
我正在尋找一個基於Python的Kolmogorov-Zurbenko過濾器,它接收一個時間序列輸入,並根據窗口大小和迭代次數對其進行過濾,但沒有發現任何似乎可行的東西。有沒有人比我有更好的運氣?Python/Scipy Kolmogorov-Zurbenko過濾器?
謝謝!
我正在尋找一個基於Python的Kolmogorov-Zurbenko過濾器,它接收一個時間序列輸入,並根據窗口大小和迭代次數對其進行過濾,但沒有發現任何似乎可行的東西。有沒有人比我有更好的運氣?Python/Scipy Kolmogorov-Zurbenko過濾器?
謝謝!
我剛剛查看了相同的問題。實際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)的自適應版本。這至少需要一個rolling_mean方法,該方法允許在中心的左側和右側指定不同的窗口長度。在https://cran.r-project.org/web/packages/kza/index.html的C代碼看起來相當簡單直接,但它需要循環,因此如果直接在Python中實現,會很慢。