LoginSignup
7
10

More than 3 years have passed since last update.

Prophet + Pythonで時系列解析

Last updated at Posted at 2019-09-16

はじめに

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()

image.png

読み込んだデータの末尾5件を表示します。

df.tail()

image.png

2007年12月10日から2016年1月20日までの日数は2963日ですが、2905行しかありません。一部のデータが欠損しているようですが、Prophetの使い方を説明する上では大きな問題ではありませんのでこのまま進めようと思います。

学習

Prophetのモデルを用いて先ほど読み込んだデータを学習させます。

m = Prophet()
m.fit(df)

予測するための準備

まず何日先まで予測するか範囲を決めます。
365日先まで予測する場合は、periods365にします。

future = m.make_future_dataframe(periods=365)

末尾5件を表示します。

future.tail()

image.png

365日先までのびていることがわかります。

予測1

予測を行います。

forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

上記のコマンドを実行すると以下のグラフが表示されます。
yhatが予測値で、yhat_lowerが予測される最小の値、yhat_upperが予測される最大の値というような意味です。

image.png

グラフにプロット

表で表示してもわかりづらいので、先ほど予測したデータをグラフにプロットします。

fig1 = m.plot(forecast)

上記のコマンドを実行すると以下のグラフが表示されます。
黒い点が実データ(y)の値です。
水色の部分がyhat_lowerとyhat_upperの範囲です。

image.png

予測2

今度は時系列の予測だけでなく、年次と週次の予測も行います。

fig2 = m.plot_components(forecast)

上記のコマンドを実行すると以下のグラフが表示されます。
時系列の予測、年間の予測、週次の予測の3つのグラフが表示されます。

image.png

簡単な使い方の説明は以上です。
Prophetを用いれば簡単に時系列解析ができることがわかっていただけたかと思います。

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10