Prophetで時系列解析をしてみました。

Metaの時系列解析ライブラリ、Prophetを試してみました。

当初は、M1 MacBook Proで動かしたかったのですが、prophetライブラリのインストールはできても、エラーが発生して動かすことができませんでした。

そこで、試しに、intel MacBook Proが手元にあったので、動くか試してみたところ、動きました。ちなみに、スペックは以下の通りです。

  • MacBook Pro 2017 13-inch
  • プロセッサ:3.1 GHz デュアルコアIntel Core i5
  • メモリ:8GB
  • SSD :256GB

なので、どうやらM1 Macとの相性が良くないようです。

目次

仮想環境の作成

 いつもの通り、仮想環境を作成します。

 prophetを動かすためには、pythonは3.8以下じゃないとダメとか、いろいろ書いている人がいますが、最新の3.11でも動きました。

$conda create -n prophet-env python=3.11

作成したら、アクティベートします。

$conda activate prophet-env

ライブラリのインストール

データ分析、機械学習に必要なライブラリを一式入れます。

$conda install pandas pandas-datareader numpy Jupyter matplotlib plotly

次にprophetをインストールします。Minicondaですが、condaでインストールできます。

$conda install prophet

Jupyter Labを立ち上げる

Jupyter Labを立ち上げます。今まではJupyter Notobookを使用していましたが、すでに開発が終了し、後継のJupyter Labに移っているので、こちらを使うようにしています。Jupyter Labの方が便利ですね。

$jupyter lab

Metaのサイトのサンプルファイルを動かしてみる

とりあえず、きちんとコードが動くか、確かめてみます。Metaの公式ガイドに載っているコードをJupyter Labで動かしてみます。

import pandas as pd
from prophet import Prophet

df = pd.read_csv('https://raw.githubusercontent.com/facebook/prophet/main/examples/example_wp_log_peyton_manning.csv')
df.head()
df.tail()

pandasでデータを読み込みます。中身はPeyton Manningという人のWikipediaの日次のページビューの時系列データです。先頭と末尾の5行分だけを表示して、どのようなデータ、データ数かを表示しています。

ちなみに、prophetへのデータの入力は、必ず、時間軸のdsと値yとしなければなりません。

 prophetにデータフレームを渡して学習させます。

m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()

結果を表示してみましょう。prophetにはすでに可視化のためのメソッドが用意されています。

fig1 = m.plot(forecast)

成分ごとにみたい時には、以下のコマンドを実行します。デフォルトでは、年間、週間、月次の季節性について見ることができます。

fig2 = m.plot_components(forecast)
目次