金融時系列データのノイズを除去しようとしています (秒ごと)。私は非常に長い時系列を持っていますが、ウェーブレットのノイズ除去 (haar) がどれだけうまく機能するかをテストするためだけに、100,000 回の観測を行ってきました。そうではありません。
私が何をしても、再構成された信号は元の信号とほぼ同じになります。明らかに、元の信号を保持したいのですが、シリーズのノイズが除去されていないように感じます-数秒の解像度でノイズのみが発生する金融時系列ですか? さらに、最小の時間スケールでも、再構築されたグラフと元のグラフのグラフはほとんど同じままです。
マザーウェーブレット、時系列の長さ、時系列の再構築が行われるモード(ソフト対ハード)を変更しようとしましたが、明らかに、しきい値自体を台無しにしました。推奨/標準のしきい値である sqrt(2*log(len(signal))) から始めましたが、それではほとんど効果がなかったため、完全にばかげた 2*len(signal)* になるまで徐々に値を上げました。 *2 -- 認識できないほどグラフを滑らかにする必要がありましたが、基本的に何もしませんでした。
WAVELET = "haar"
LEVEL = 2
signal = training_series
mean = signal.mean()
mean_series = [mean] * len(signal)
signal = [a - b for a, b in zip(signal, mean_series)]
coeffs = pywt.wavedec(signal, WAVELET, level=LEVEL)
sigma = mad(coeffs[-LEVEL])
threshold = sigma * np.sqrt(2*np.log(len(signal)))
coeffs[1:] = (pywt.threshold(i, value=threshold, mode="soft" ) for i in coeffs[1:])
reconstructed_signal = pywt.waverec(coeffs, WAVELET)
再構築された信号は元の信号とは大幅に異なると予想していましたが (平滑化され、ノイズが除去され、元の信号とまったく同じではありません)、そうではありませんでした。最小のスケール (100,000 秒のスケールで 10 秒または 20 秒ごとと考えてください) では、サイズ 0.01 のピークと谷を本質的に無視する非常にマイナーなスムージングがあります (可能な最小の変化) が、ほとんど無視できます。
私は信号を期待していました。私は何か間違ったことをしていますか?