RでARIMAモデルを使った予測方法
実習
Rの内蔵データUKDriverDeaths
は、1969年から1984年までのイギリスの月別運転手死亡者数に関するデータだ。一見すると季節性アリマモデルに従っており、実際にモデルを見つけることはそれほど難しくない。
しかし、最終的に得たモデルの式を直接使って計算するのは、非常に手間がかかり複雑だ。だからpredict()
関数を使う。
n.ahead
オプションを通して、どれくらい先まで予測するかを決めることができ、- 予測値
$pred
와 - 표준오차
$se
を使って予測区間を見つけることもできる。
可視化
可能なこととは別に、予測区間を描くコードを実際に書くこともかなり面倒だが、幸いにもTSA
パッケージを使用しているなら、plot()
関数だけで簡単に予測区間を描くことができる。
以下は便利に使えるいくつかのオプションだ:
n.ahead
:predict()
関数でと同様に、どれくらい先まで予測するかを決める。n1
: プロットをどこから始めるかを決める。- newxreg: 時系列回帰分析をするときに必要なデータを与える。
ちなみにplot()
関数自体も、予測値と予測区間をリターンする。残念ながら予測区間の信頼水準を決めるオプションはないので、変えたい場合は面倒でもpredict()
関数を通して直接描くしかない。
注意事項
一方で、arima()
で得たモデルではなくauto.arima()
で得たモデルをplot()
に直接入れると、次のような(我々があまり望まない)図が描かれる。これはエラーではなく、arima()
とauto.arima()
の違いによって異なる結果を得たためだ。この事実を知っているだけでも、例を探したりパッケージを再びインストールする手間を省けるので、このような形の図を覚えておくことを強く勧める。
コード
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)