見出し画像

書記が数学やるだけ#637 基本的な時系列モデルの推測

実際のデータから時系列モデルを推測してみる。


問題

データは前回と同じものを用いる。


説明

自己回帰と移動平均を合わせたARMAモデルは,時系列モデルの基本として用いられる。さらに,差分系列を用いるARIMAモデル,季節周期を加えたSARIMAモデルなどと応用を広げることができる。


モデルの同定は,大まかには以下の手順を辿る。


トレンドを含むデータでは,差分を取ることで定常となるものもある(単位根過程)。


単位根の有無を判定するにはいくつかの検定があり,この結果を踏まえて差分を取るかどうかを決めていく。


解答

ARMAモデルの次数については,AICが最小になるものを選ぶことにする。モデルが複雑になりすぎないよう,ここでは各次数を3までとしている。

#自動ARMAパラメータ推定関数
res_selection = sm.tsa.arma_order_select_ic(ts, ic='aic', max_ar=3, max_ma=3, trend='nc')
res_selection


するとこの中ではARMA(3,3)が最適と判断できる。


ARMA(3,3)の各係数を推定することでモデルを作ることができる。

#ARMAモデル
arma_model = sm.tsa.ARMA(ts, order=(3,3))
arma_result = arma_model.fit()
arma_result.summary()



しかしこれはうまくいかない。元のデータに対する当てはまりはいいが,予測となるとかなり怪しい。

#ARMAモデルの2年後の予想
arma_pred = arma_result.predict('1951-01', '1962-12') 

plt.figure(figsize=(8, 4))

plt.plot(ts, label="original")
plt.plot(arma_pred, c="r", label="arma_pred", alpha=0.7)
plt.legend(loc='best')



コレログラムを再掲,自己相関があり非定常であることが予想できる。

fig = plt.figure(figsize=(8, 8))

#自己相関(ACF)のグラフ
ax1 = fig.add_subplot(211)
sm.graphics.tsa.plot_acf(ts, lags=40, ax=ax1)

#偏自己相関(PACF)のグラフ
ax2 = fig.add_subplot(212)
sm.graphics.tsa.plot_pacf(ts, lags=40, ax=ax2)

plt.tight_layout()



例えばADF検定を行ってみると,帰無仮説「単位根あり」が棄却できないことから,次に差分系列(ARIMAモデル)を試すことにする。

#ADF検定(原系列)
dftest = sm.tsa.adfuller(ts)
print('ADF Statistic: %f' % dftest[0])
print('p-value: %f' % dftest[1])

ADF Statistic: 0.815369
p-value: 0.991880


ARIMAモデルを作るために,上と同様に次数を決める。

#ARIMAの次数推定
res_selection = sm.tsa.arma_order_select_ic(delts, ic='aic', max_ar=3, max_ma=3 ,trend='nc')
res_selection


#ARIMAモデル
arima = sm.tsa.SARIMAX(passengers,
order=(3, 1, 3),
seasonal_order=(0, 0, 0, 0),
enforce_stationarity = False,
enforce_invertibility = False
).fit()

arima.summary()



しかしこれもうまくいかない。


残差の自己相関を見ると1年ごとに周期が見られるので,これを除去したSARIMAモデルを次に考える(コードは上とほぼ同様のため省略)。


#SARIMAモデル
sarima = sm.tsa.SARIMAX(passengers,
order=(3, 1, 3),
seasonal_order=(1, 1, 1, 12),
enforce_stationarity = False,
enforce_invertibility = False
).fit()

sarima.summary()



予測の当てはまりが改善され,残差の自己相関が無くなっており、上手くいっていそうである。



実際の分析ではさらに評価すべき点はあるのだが,とりあえず今回はこのモデルを採用することとした。


本記事のもくじはこちら:


学習に必要な本を買います。一覧→ https://www.amazon.co.jp/hz/wishlist/ls/1XI8RCAQIKR94?ref_=wl_share