時系列データの変化点検出

参考:
1.Prophet で有効な変化点だけを抽出する – Qiita
2.時系列予測ツールPROPHETによるトレンド分析(変化点)- 西陣に住むデータ分析屋のブログ

簡単に,

オンラインで時系列の変化点検出を行うpythonライブラリ「changefinder」

のデータでみていく.

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from fbprophet import Prophet


data=np.concatenate([np.random.normal(0.7, 0.05, 300),
np.random.normal(1.5, 0.05, 300),
np.random.normal(0.6, 0.05, 300),
np.random.normal(1.3, 0.05, 300)])

df = pd.DataFrame({'y': data, 'ds': list(range(len(data)))})

prpht = Prophet()
prpht.fit(df)

plt.plot(data)
plt.scatter(list(range(len(data))), [1.0 if i in prpht.changepoints.index else 0.75 for i in range(len(data))])

FireShot Capture 118 - JupyterLab Alpha Preview - http___localhost_8888_lab

デフォルトでは,「n_changepoints=25」

みて分かる通り,変化点は3つしかないので,「n_changepoints=3」にしてみる.

prpht = Prophet(n_changepoints=3)
prpht.fit(df)
plt.plot(data)
plt.scatter(list(range(len(data))), [1.0 if i in prpht.changepoints.index else 0.75 for i in range(len(data))])

FireShot Capture 119 - JupyterLab Alpha Preview - http___localhost_8888_lab

「n_changepoints=6」にしてみる.

prpht = Prophet(n_changepoints=6)
prpht.fit(df)

plt.plot(data)
plt.scatter(list(range(len(data))), [1.0 if i in prpht.changepoints.index else 0.75 for i in range(len(data))])

FireShot Capture 120 - JupyterLab Alpha Preview - http___localhost_8888_lab

prpht = Prophet(n_changepoints=10)
prpht.fit(df)

plt.plot(data)
plt.scatter(list(range(len(data))), [1.0 if i in prpht.changepoints.index else 0.75 for i in range(len(data))])

FireShot Capture 121 - JupyterLab Alpha Preview - http___localhost_8888_lab

変化点を自動で検出して,時系列データの変化近傍で変化点がプロットされている事が分かる.

だから,こんなに適当でも,

prpht = Prophet()
prpht.fit(df)
prpht_pred = prpht.predict(df)
plt.plot(prpht_pred['y'])
plt.plot(prpht_pred['yhat'])

FireShot Capture 122 - JupyterLab Alpha Preview - http___localhost_8888_lab

割と尤もらしい結果が出る.
 
 
 
 
関連:
例題

Prophet?ARIMA?外れ値検出?

状態の判別(異常検知,変化検出)

オンラインで時系列の変化点検出を行うpythonライブラリ「changefinder」

日本銀行マネタリーベース(5月)

広告
カテゴリー: 未分類 パーマリンク

時系列データの変化点検出 への1件のフィードバック

  1. ピンバック: お山を探して間隔をみる | 粉末@それは風のように (日記)

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中