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

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

【第4弾】SARIMAで時系列分析に挑戦【SARIMAモデルで利用するパラメータの推定】

雨模様がずっと続いているが、

 

SARIMAを利用して、時系列データ分析に挑戦中である。

 

ADF検定で帰無仮説を棄却できたため、

 

今回は、SARIMAモデルの構築の前準備として、

 

SARIMAモデルで利用するパラメータの推定を行う。

 

さあ、今日もほんのわずかでも前進していきたい。

 

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

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

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

 

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

当然ですが、データは前回と同じでございます。

 

f:id:takanarukodou2:20210706182147p:plain

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

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

■■■■■SARIMAのパラメータ推定■■■■■■

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

 

 model = 
 pm.auto_arima(df['Production'], 
 d=1,       d個分離れた階差(差分)【OK】
 D=1,       D個分離れた季節性差分【OK】
 seasonal=True,  Seasonal ARIMAに適合するかどうか?【OK】
 m=12,       各季節の期間数(四半期の場合は 4、月次の場合は 12)【OK】
 trend='c',    トレンド(傾向) ※(cは傾向有、ncは傾向無?)【OK】
 start_p=0,    pの開始値ARモデルの次元数?【OK】
 start_q=0,    qの開始値、MRモデルの次元数?【OK】
 max_order=6,   p+q+P+Qの最大値(モデル選択がステップワイズでない場合)【OK】
 test='adf',    定常状態の推定に利用する単位根検定の種類(ADF)【OK】
 stepwise=True,  ステップワイズを用いて最適なモデルパラメータを特定するか【OK】
 trace=True)   デバッグ情報を出力するかどうか【OK】

pmdarima.arima.auto_arima — pmdarima 1.8.2 documentation (alkaline-ml.com)

Python と自動 ARIMA を使用して季節時系列の|を予測するホセ・マルシャル・ポルシージャ・|中程度 (medium.com)

じっくり学ぶ時系列解析~ARIMAの予測と季節調整SARIMA編~ - 医療職からデータサイエンティストへ (medi-08-data-06.work)

[Python] ARIMA/SARIMAによる時系列データの予測 (fc2.com)

ARIMAモデル(自己回帰和分移動平均モデル)について分かりやすく解説! | AVILEN AI Trend (ai-trend.jp)

※ステップワイズ:説明変数の中で、 目的変数と関係する変数を”自動”で選択する方法

※pとは、過去データをどの位利用するか。2の場合、時点tの予測に時点t-1と時点t-2を利用。【NoSeason】

※qとは、過去の予測と観測値の違い(残差)のデータをどの程度利用するか。【NoSeason】

※dとは、時点tと時点t+nの差を計算する時のnを指す。【NoSeason】

※Pとは、過去データをどの位利用するか。2の場合、時点tの予測に時点t-1と時点t-2を利用。【Season】

※Qとは、過去の予測と観測値の違い(残差)のデータをどの程度利用するか。【Season】

※Dとは、時点tと時点t+nの差を計算する時のnを指す。【Season】

※p,d,qは、p次ARモデル、d階差分系列、q次MAモデルを表す。


 SARIMAモデルの構築の前に、パラメータを推定する。

 何のパラメータか?

 進めながら理解しているので当然現時点ではまったくわかっていない。

 auto_arima関数は、モデルに最適なパラメータを特定するもの。

 まずは、auto_arima関数の各引数の意味を理解していきたい。

 公式のドキュメントを参照しても、引数の大変の意味を捉えられない。

 さて、どうしたものか?

 気を取り直して、有識者の見解を参照した。

 上記に結果は反映済みだが、何となく意味が理解出来てきた。

 

 なお、auto_arima関数自体については、SARIMAモデルに必要な、

 最適なパラメータを算出する関数であることが判明した。

 パラメータは下記に示す合計7個(①の3個、②の4個)。

 ---

 ①ARIMAは以下の3個パラメータを適切に決める必要がある。

  ・p(p次元のAR(自己回帰)モデル)

    ※どれくらい過去のデータ数を利用するか

  ・d(d階差分系列)

   ※時点tと時点t+nの差を計算する時のnを指す 

  ・q(q次元のMA(移動平均)モデル)

   ※平均を計算する際に考慮するデータ数

 ②SARIMAは、ARIMAに加えてseasonal_orderというパラメータを決める必要がある。

  seasonal_orderは4個の引数を持つ。

  ・P:どれくらい過去のデータを利用するか。

   p=2の場合、時点tの予測に時点t-1と時点t-2を利用。

  ・D:定常状態に変形する時に用いるパラメータ。

   時点tと時点t+nの差を計算する時のnを指す。通常は、0,1,2のいずれか。

  ・Q:過去の予測と観測値の違い(残差)のデータをどの程度利用するか。

   q=2の場合、1個前のresidualと2個前のresidualを使用する。

  ・M:frequency年間の観測回数。周期が発生する間隔。

  ---

※ARモデルは、ある時刻tの値を、時刻tより古いデータを使って回帰するモデル

※回帰とは、Y = f(X) というモデルにあてはめること

 時系列解析 その4 | 獣医 x プログラミング (jpn.org)

 

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

■■■■■■推定されたパラメータ■■■■■

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

 

 「Best model: ARIMA(1,1,0)(0,1,1)[12] intercept」

 

 今まで学習したことをより踏まえると、ARIMA(p,d,q)(P,D,Q)[M]より、

 pは1、dは1、qは0、

 Pは0、Dは1、Qは1、Mは12となった。

 これらのパラメータを利用して、SARIMAのモデルを構築する。

 

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

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

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

 

 ついに、SARIMAのモデル構築のフェーズに突入する予定。