はじめに
Facebook社が提供しているProphetという時系列を解析するパッケージを用いて、時系列分析する方法を記載しています。
ProphetのQuick Start( https://facebook.github.io/prophet/docs/quick_start.html )をベースに記載しつつ、いくつか補足を追記しています。
テストデータ ダウンロード
以下からダウンロードしてください。
このデータはWikipediaのPeyton Manningの日次ログページビューの時系列だそうです。
このデータを用いて未来の日次ページビューの予測などを行います。
インストール
pip install fbprophet
データインポート
pandasを用いてcsvを読み込みます
import pandas as pd
from fbprophet import Prophet
df = pd.read_csv('./example_wp_log_peyton_manning.csv')
データの中身の確認
読み込んだデータの先頭5行を表示します。
df.head()
読み込んだデータの末尾5件を表示します。
df.tail()
2007年12月10日から2016年1月20日までの日数は2963日ですが、2905行しかありません。一部のデータが欠損しているようですが、Prophetの使い方を説明する上では大きな問題ではありませんのでこのまま進めようと思います。
学習
Prophetのモデルを用いて先ほど読み込んだデータを学習させます。
m = Prophet()
m.fit(df)
予測するための準備
まず何日先まで予測するか範囲を決めます。
365日先まで予測する場合は、periods
を365
にします。
future = m.make_future_dataframe(periods=365)
末尾5件を表示します。
future.tail()
365日先までのびていることがわかります。
予測1
予測を行います。
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
上記のコマンドを実行すると以下のグラフが表示されます。
yhatが予測値で、yhat_lowerが予測される最小の値、yhat_upperが予測される最大の値というような意味です。
グラフにプロット
表で表示してもわかりづらいので、先ほど予測したデータをグラフにプロットします。
fig1 = m.plot(forecast)
上記のコマンドを実行すると以下のグラフが表示されます。
黒い点が実データ(y)の値です。
水色の部分がyhat_lowerとyhat_upperの範囲です。
予測2
今度は時系列の予測だけでなく、年次と週次の予測も行います。
fig2 = m.plot_components(forecast)
上記のコマンドを実行すると以下のグラフが表示されます。
時系列の予測、年間の予測、週次の予測の3つのグラフが表示されます。
簡単な使い方の説明は以上です。
Prophetを用いれば簡単に時系列解析ができることがわかっていただけたかと思います。