「時系列データ」とは、時間とともに変化するデータを指します。
今回は、タダケンさんのブログやQiitaなど(参照サイトに掲載)を参考に、アメリカのS&P500のデータ(2000年1月1日から2019年3月31日まで)を基に、未来予測を行います。
S&P500のデータの準備
S&P500のデータのダウンロード
S&P500のデータはWall Street Journalのサイトから期間を指定しダウンロードしました。CSVファイルの取り込み
Google Colaboratoryを用い、ダウンロードしたS&P500のCSVファイルをColabに取り込みます。
データの整形と確認
Prophetでデータを扱うには、「ds」「y」を指定しておく必要があります。
予測モデルの作成
prophetのインストールとモデルの作成
prophetをインストールし、予測モデルを作成します。
モデルを基にS&P500の未来予測
モデルを使って、未来予測をしましょう。
「yhat」が予測値です。
対数変換しているため、e(約2.6)をyhatの値で乗算すると、実際の値になります。
例えば、2020年3月28日の実際の値は、1934.54(?合ってるのかな?)になりそうです。
トレンドや周期性についての分析結果
分析結果は、model.plot_components()で見ることができます。
トレンド性、週周期性、年周期性のグラフです。
トレンドから、2009年あたりが底で、そこから上昇トレンドに入っていることが分かります。週周期性では、土日がなぜか上がっているように見えますが、相場は閉まっています。年周期性からは10月あたりが底で、そこから3月まで上昇傾向にあり、3月からは逆に下降傾向にあることが分かります。
予測モデルの精度の検証
検証用データの生成
精度検証をするためには、prophetのdiagnosticsクラスを使用します。
cross_validationメソッドを使って(交差検証法)、訓練データとテストデータに分けて、何度か予測値の算出を行います。
yが実績値、yhatが予測値。
MAPE(平均絶対誤差率)
実績値に対して予測値にどれくらい誤差率があるのか、を測ります。
今回、MAPE(平均絶対誤差率)は0.018なので、それなりの精度になったんじゃないかな、と思います。
参照サイト
- 【Python】誰でも簡単に予測モデルが作れるProphetでTOPIXの予測モデルを作ってみた
- Prophetを使って、30分でコウメ太夫の努力の結果をビジュアライズする。/Qiita
- ダウ平均株価をスクレイピングで自動取得しProphetで値動きを予測する/Qiita
- Prophetで日経平均株価を予測 #1 ~Prophetモデルでとりあえず予測してみた~/Qiita
- Prophetで日経平均株価を予測#2〜株価を対数収益率に変換しモデリング〜
- あまりに暑いのでProphetで140年分の気温を分析した
- Prophet入門【Python編】Facebookの時系列予測ツール
0 件のコメント:
コメントを投稿