SciPy でデータの線形傾向を除去

SciPy でデータの線形傾向を除去する方法についてメモ。
データの変動について洞察する場合、データから線形傾向 (最小二乗法の意味での平均)を取り除きたいことがあります。
SciPy では detrend 関数でデータから線形傾向を除去することができます。

# coding: utf-8
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
書籍更新情報
2016-10-21
Pythonによる科学技術計算 基礎編
PDF版の販売を開始しました。
販売ページはこちら

2016-09-09
Pythonによる科学技術計算 基礎編
1.2版への更新が可能になりました。
サポートページはこちら
電子書籍
Pythonによる科学技術計算 基礎編
Kindle ストア、Leanpubで販売中です
Pythonによる科学技術計算 基礎編
PDF版の販売はこちら
同人誌
技術書典(2016/6/25)
Emacs/org-modeのPDF作成術
電子版をBOOTHで販売中です
Emacs/org-modeのPDF作成術
Share