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()
15072201.png

コメント

Comments powered by Disqus
書籍更新情報
2017-02-18
Pythonによる科学技術計算 基礎編
1.4版への更新が可能になりました。
サポートページはこちら
電子書籍
Pythonによる科学技術計算 基礎編
電子書籍
線形代数(1): Pythonによる科学技術計算 実践編