ARIMAモデルの残差分析
説明
回帰分析と同様に、時系列分析も残差分析を行う。アリマモデルの仮定によると、残差はすべてホワイトノイズなので、線形性、等分散性、独立性、正規性を満たすかどうかを確認する。回帰分析と比較すると、一般的にそこまで厳格ではないが、独立性だけは徹底的にチェックする。そもそも時系列分析自体が自己相関性を解明するためのものだから、残差にまだ独立性が欠けていれば、分析が不十分だということだ。
説明
Rでは、tsdiag()
関数で簡単に残差分析を行うことができる。
例として組み込みデータのWWWusage
を見てみよう。WWWusage
は、昔のインターネットへのアクセス数を示す時系列データだ。これに対するアリマモデルは$ARIMA(1,1,1)$で、赤い実線がその適合だ。このモデルをtsdiag()
関数に入れると、次の3つのプロットが出力される。
- (1) 標準化残差:スキャッタープロットで表されていないが、いつも見る標準化残差のグラフだ。線形性と等分散性を目で確認すれば良い。
- (2) 残差のACF:残差でACFを計算した時、ある関係が現れてはいけない。もちろん、自己相関係数は必ず$\rho = 1$であるため、このグラフに問題はないと断言できる。
- (3) ルーンボックス統計のp値:時差$k = 1, 2, \cdots$に対してルーンボックステストを繰り返し、そのp値を点で打ったものだ。下の青い実線以下に下がれば、現在使っているアルマモデル$ARMA(p,q)$が有意水準$\alpha = 5 \%$で適していないと見なされる。このグラフを見る限り、分析はうまく行われていると言える。
- (4) 正規性検定:図にはなく、とても重要ではないが、余裕があれば、そして分析をより正確にしたいなら、シャピロ-ウィルク検定やハーケ-ベラ検定を使ってみる価値があるだろう。理論上は必ず行うべきだが、実際のデータ分析では異常値が多く、正規性が欠ける場合が多いため、しばしば省略される。幸いなことに、この例では次のように正規性も満たされている。
コード
library(TSA)
out<-arima(WWWusage,order=c(1,1,1)); out
win.graph(6,3); plot(WWWusage,main='WWWusage\'); lines(fitted(out),col='red')
win.graph(6,6); tsdiag(out)
shapiro.test(out$residuals)