RにおけるEACFを利用したARMAモデルの選択法
実習 1
PACFは、の次数を決めるのに、ACFは、の次数を決めるのに大いに役立つ。
直接その例を見てみよう。ma1.2.s
データはモデルから、ar1.s
データはモデルから来たTSA
パッケージのサンプルデータだ。TSA
パッケージのacf()
関数とpacf()
関数を使うと、以下のように様々な時差に対してコレログラムcorrelogramを描いてくれる。
図だけを見て、青い線を超えるが多いからと言ってアルマモデルだと判断するのは危険だ。アルマモデルの可逆性のために、でものように見えるかもしれないし、でものように見えるかもしれないからだ。実際に、左上ののACFと右下ののPACFは、その大きさが徐々に減少するような変な傾向を呈示している。一方でのPACFとのACFは、以降にパッと落ちる。
問題は、実際のデータがなのかなのかあらかじめ知る方法がないことだ。
例えばarma11.s
は、方程式で定義されたモデルからのサンプルデータだが、そのACFとPACFを描いてみると、下のように現れる。
arma11.s
は明らかにに従うべきだが、上記の図だけを見ても明らかにモデルだ。これは逆に言うと、ACFとPACFだけでモデルを探していたら、モデルであるにもかかわらずモデルと判断していた可能性があるということだ。
通常、ACFとPACFでモデルを調べると、通常、上の表のような傾向が現れると言われている。のPACFに「徐々に減少?」と疑問符が付いている理由は、まさにarma11.s
のように、突然急激に減少するケースもあるからだ。時系列を説明するどの文献もこの表を参照しているわけではないが、絶対に必要十分ではない。ACFとPACFが徐々に減少するならを疑うことができるが、でACFとPACFが両方とも徐々に減少するわけではない。
それに比べて、EACFはからサンプリングされたことを検出する。
別の例として、内蔵データのlynx
を見てみよう。lynx
は、1821年から1934年までカナダで罠にかかったオオヤマネコの年間データだ。
ACFとPACFだけを見た場合、lynx
は明らかにモデルに従うべきだが、実際には以下のようにモデルに従う可能性がある。
実際に、auto.arima()
関数を使って簡単に確認してみても、少なくともではないことは明らかだ。このように、専門家と非専門家、ちゃんと勉強した人と適当に勉強した人の差は、分析そのものを出せるかどうかではなく、ACF、PACF、EACFを見て一目で違和感、問題点を素早く察知できるかどうかの差がある。図だけを見る知識があっても大いに役立ち、理論的にも理解していればなお良い。
コード
以下は例のコードだ。
library(TSA)
win.graph(6,6); par(mfrow=c(2,2))
data(ar1.s); acf(ar1.s, main="ACF of AR(1)"); pacf(ar1.s, main="PACF of AR(1)")
data(ma1.2.s); acf(ma1.2.s, main="ACF of MA(1)"); pacf(ma1.2.s, main="PACF of MA(1)")
win.graph(6,3); par(mfrow=c(1,2))
data(arma11.s); acf(arma11.s, main="ACF of ARMA(1,1)"); pacf(arma11.s, main="PACF of ARMA(1,1)")
eacf(arma11.s)
win.graph(6,3); par(mfrow=c(1,2))
data(lynx); acf(lynx, main="ACF of lynx"); pacf(lynx, main="PACF of lynx")
eacf(lynx)
library(forecast)
out<-auto.arima(lynx); summary(out)
併せて見る
Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p117. ↩︎