SciPy でデータの線形傾向を除去
SciPy でデータの線形傾向を除去する方法についてメモ。 データの変動について洞察する場合、データから線形傾向 (最小二乗法の意味での平均)を取り除きたいことがあります。 SciPy では detrend 関数でデータから線形傾向を除去することができます。
import numpy as np from scipy import signal import matplotlib.pyplot as plt # 時系列のサンプルデータ作成 n = 512 # データ数 dt = 0.01 # サンプリング間隔 f = 1 # 周波数 t = np.linspace(1, n, n)*dt-dt y = 2*t+1+np.sin(2*np.pi*f*t)+0.5*np.random.randn(t.size) yd = signal.detrend(y) plt.figure(figsize=(12,9)) plt.plot(t, y, label="Original Data") plt.plot(t, y-yd, "--r", label="Trend") plt.plot(t, yd, "c", label="Detrended Data") plt.axhline(0, color="k", linestyle="--", label="Mean of Detrended Data") plt.axis("tight") plt.legend(loc=0) plt.show()
