logo

RでARIMAモデルを使った予測方法 📂統計的分析

RでARIMAモデルを使った予測方法

実習

1.png

Rの内蔵データUKDriverDeathsは、1969年から1984年までのイギリスの月別運転手死亡者数に関するデータだ。一見すると季節性アリマモデルに従っており、実際にモデルを見つけることはそれほど難しくない。

20190722\_131357.png

しかし、最終的に得たモデルの式を直接使って計算するのは、非常に手間がかかり複雑だ。だからpredict()関数を使う。

  • n.aheadオプションを通して、どれくらい先まで予測するかを決めることができ、
  • 予測値$pred
  • 표준오차 $seを使って予測区間を見つけることもできる。

20190722\_131423.png

可視化

可能なこととは別に、予測区間を描くコードを実際に書くこともかなり面倒だが、幸いにもTSAパッケージを使用しているなら、plot()関数だけで簡単に予測区間を描くことができる。

2.png

以下は便利に使えるいくつかのオプションだ:

  • n.ahead: predict()関数でと同様に、どれくらい先まで予測するかを決める。
  • n1: プロットをどこから始めるかを決める。
  • newxreg: 時系列回帰分析をするときに必要なデータを与える。

ちなみにplot()関数自体も、予測値と予測区間をリターンする。残念ながら予測区間の信頼水準を決めるオプションはないので、変えたい場合は面倒でもpredict()関数を通して直接描くしかない。

注意事項

一方で、arima()で得たモデルではなくauto.arima()で得たモデルをplot()に直接入れると、次のような(我々があまり望まない)図が描かれる。これはエラーではなく、arima()auto.arima()の違いによって異なる結果を得たためだ。この事実を知っているだけでも、例を探したりパッケージを再びインストールする手間を省けるので、このような形の図を覚えておくことを強く勧める。

3.png

コード

library(TSA)
win.graph(6,4); plot(UKDriverDeaths,main='UKDriverDeaths')
out<-arima(UKDriverDeaths,order=c(1,0,1)
           ,seasonal = list(order=c(1,0,1),period=12)); out
predict(out,n.ahead = 24)
win.graph(6,4); plot(out,n.ahead = 24, type='l'
                     ,n1=1980, main='95% 예측구간')
 
library(forecast)
wrong<-auto.arima(UKDriverDeaths); summary(wrong)
win.graph(6,4); plot(wrong)