Prophetとは
ProphetはFacebookが開発した時系列データを予測するツールです。速いのと完全自動が売りらしいです。ちょっと使ってみましょう。
対象データ
1948年からの日足のダウ工業平均株価を使用します。
インストール
pip install fbprophet
import fbprophet
fbprophet.__version__
#'0.6'
データのインポート
形式は、columns=["ds", "y"]
である必要があります。
ds | y | |
---|---|---|
18356 | 2020-04-23 | 23515.26 |
18357 | 2020-04-24 | 23775.27 |
18358 | 2020-04-27 | 24133.78 |
18359 | 2020-04-28 | 24101.55 |
18360 | 2020-04-29 | 24633.86 |
18361 | 2020-04-30 | 24345.72 |
18362 | 2020-05-01 | 23723.69 |
18363 | 2020-05-04 | 23749.76 |
18364 | 2020-05-05 | 23883.09 |
18365 | 2020-05-06 | 23664.64 |
18366 | 2020-05-07 | 23875.89 |
18367 | 2020-05-08 | 24331.32 |
Prophet objectのインスタンスを作成し、fitさせる。
m = Prophet(daily_seasonality=True)
m.fit(df)
時系列データの頻度が一日単位ではなく、一時間単位などであれば daily_seasonality=True
にしておく。
将来のデータフレームの作成する。
future = m.make_future_dataframe(periods=365)
future.tail()
ds | |
---|---|
18728 | 2021-05-04 |
18729 | 2021-05-05 |
18730 | 2021-05-06 |
18731 | 2021-05-07 |
18732 | 2021-05-08 |
予測する。
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
ds | yhat | yhat_lower | yhat_upper | |
---|---|---|---|---|
18728 | 2021-05-04 | 25240.993067 | 23775.034765 | 26676.954454 |
18729 | 2021-05-05 | 25241.812462 | 23873.631394 | 26743.879477 |
18730 | 2021-05-06 | 25248.372948 | 23662.176440 | 26658.218006 |
18731 | 2021-05-07 | 25251.123010 | 23590.352159 | 26721.447848 |
18732 | 2021-05-08 | 25258.034603 | 23780.066094 | 26742.194673 |
ここで、変数の説明をしておくと
- yhat : 予測値
- yhat_lower : 予測値の誤差の下限
- yhat_upper : 予測値の誤差の上限
プロットする。
fig1 = m.plot(forecast)
大体誤差の範囲に収まっている。
個別要素を見る。
fig2 = m.plot_components(forecast)
確か、相場には "Sell in May and go away, and come on back on St. Leger's Day."(5月に株を売って、そしてセントレジャー・デー(9月中旬)まで戻って来るな)という格言があります。これはなんかありそうですね(笑)
こちらが基本的な使い方でより詳細はドキュメントの方をご覧ください。