楽しんで学習するITエンジニアの備忘録ブログ

~日常生活の中にも楽しみを見出したい~

【第6弾】SARIMAで時系列分析に挑戦【構築したSARIMAモデルは妥当と言えるか?】

今日は有給休暇を取得して勉強に励む!、なんてことはない。

 

でも、どんな日であったとしても、

 

時系列データ分析への愛は忘れないはずw

 

今日も、自分史上最幸の一日を目指していきたいと思います。

 

■■■■■■■■■■■■■■■■■■■■■■■■

■■■時系列データは、月別の牛乳生産量■■■

■■■■■■■■■■■■■■■■■■■■■■■■

 

1962年1月から1975年12月までの約14年間で、レコード数は168行。

 

f:id:takanarukodou2:20210706182147p:plain

          図1.月別牛乳生産量の推移(1カ月単位)
 

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

■■■■■■■■■■SARIMAモデルをチェック■■■■■■■■■■■

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

 

統計モデルをチェックするplot_diagnostics関数(残差を確認)の実行結果を見ていくこととする。

plot_diagnostics()関数を実行した結果は以下のとおり。plot_diagnostics()関数は、残差の状況を参照して、逃しているトレンド(傾向)がないかを確認できる。

左上から、標準化残差、残差のヒストグラム、標準化残差のQQプロット、残差の自己相関。周期性や自己相関の残差が大きな値になっていると、予測モデルとしては使えず、モデルの再考が必要となる。

下記図を参照して、①残差のヒストグラムが通常の正規分布なので特別な傾向は見られない、かつ、②残差の自己相関を見る限り低い値に留まっていることから、 統計モデルとして、ほぼ問題がないと判断した。

※QQプロットは実測値と理想値(正規分布)をプロットしたもの。直線になっている場合、実測値は理想値に近く正規分布であると言える。

 

f:id:takanarukodou2:20210712202403p:plain

          図2.SARIMAモデルの妥当性(残差)チェック

statsmodels.tsa.statespace.sarimax.SARIMAXResults.plot_diagnostics — 統計モデル

PythonによるSARIMAXモデルを使った「TVCMの効果検証」への挑戦 - LIFULL Creators Blog

定常時系列の解析に使われるSARIMAモデルとは? | AVILEN AI Trend (ai-trend.jp)

 

■■■■■■■■■■■■■■■■■■■■■■■■

■■■■■■■■■■未来予測■■■■■■■■■■■

■■■■■■■■■■■■■■■■■■■■■■■■

 

results = model.fit()
pred_f = results.get_forecast(steps=60)
pred_ci = pred_f.conf_int()
ax = df.plot(label='Production', figsize=(147))
pred_f.predicted_mean.plot(ax=ax, label='Forecast')
ax.fill_between(pred_ci.index,
                pred_ci.iloc[:, 0],
                pred_ci.iloc[:, 1], color='k', alpha=.25)

 

・get_forecast関数は、学習データの範囲外の予測を行うもの。get_forecast関数の引数stepsは、整数の場合、サンプルの最後から予測するステップ数(60個)。

・conf_int関数は、信頼区間(区間予測)。

・predicted_mean関数は、予測の期待値。

・fill_between関数は、区間予測の描画。

statsmodels.tsa.statespace.sarimax.SARIMAXResults.get_forecast — 統計モデル

statsmodels.tsa.arima_model。ARIMAResults.conf_int — 統計モデル

f:id:takanarukodou2:20210712221441p:plain

               図3.未来予測

 

■■■■■■■■■■■■■■■■■■■■■■■■

■■■■■■■■■■次回■■■■■■■■■■■

■■■■■■■■■■■■■■■■■■■■■■■■

 

正直、SARIMAを理解しきれたかというと怪しいが、

次は、Facebookが開発した時系列予測のオープンソースソフトウェア(OSS)ライブラリProphetを利用してみたい。

 「Prophet」とは――Facebook製時系列予測OSSは何が便利なのか:非統計家が高精度な時系列予測を行えるProphet(前編)(1/2 ページ) - @IT (atmarkit.co.jp)

 

■■■■■■■■■■■■■■■■■■■■■■■■

■■■(番外編)時系列予測の完全ガイド■■■

■■■■■■■■■■■■■■■■■■■■■■■■

まだ、この文章は残しておいて、いつか読みたい。

でも、いつ読むのか?

ARIMA モデル - Python |における時系列予測の完全ガイドML+ (machinelearningplus.com)