logo

ARIMAモデルにおけるドリフト 📂統計的分析

ARIMAモデルにおけるドリフト

説明

時系列分析をしていると、ドリフトdriftという係数をよく見かける。

20190716\_155512.png

もちろん、上の場合、標準誤差に比べて係数の大きさがとても小さいから、無視しても問題ない。しかし、実際に有意な係数であり、式で書かなければならない場合は、ドリフトが何であるかを知る必要がある。残念ながら、国内にはドリフトが一体何なのかについての良い説明がなく、式を使わずに、‘定数項のようなもの’という説明しかできない。

式を読む気がなく、分析にそれほど重要でもなく、だから気にもならないなら、ただ定数項、平均程度と知っていれば問題ない。もし、その場合は以下の二番目の分析だけを見ればいい。もちろん、専門家なら、少なくとも一度は式の展開を追うことを強くお勧めする。

式的な説明

アリマモデル $$ \nabla^{d} Y_{t} := \sum_{i = 1}^{p} \phi_{i} \nabla^{d} Y_{t-i} + e_{t} - \sum_{i = 1}^{q} \theta_{i} e_{t-i} $$ から始めよう。いや、差分がないので、もっと単純なアルマモデルから始めよう。 $$ \begin{align} \displaystyle Y_{t} - \sum_{i = 1}^{p} \phi_{i} Y_{t-i} = e_{t} - \sum_{i = 1}^{q} \theta_{i} e_{t-i} \end{align} $$ 簡単にするために、バックシフト $B$を使った以下の表現を使ってみよう。 $$ \phi (B) := \left( 1 - \phi_{1} B \cdots - \phi_{p} B^{p} \right) $$

$$ \theta (B) := \left( 1 - \theta_{1} B \cdots - \phi_{q} B^{q} \right) $$ この表現を$(1)$に適用すると $$ \phi (B) Y_{t} = \theta (B) e_{t} $$ これはアルマモデルの別の表現で、ここに定数項$c$を以下のように追加してみよう。 $$ \phi (B) \left( Y_{t} - c \right) = \theta (B) e_{t} $$ 式$(1)$の$c$がまさにドリフトだ。式を見れば、ドリフトをなぜ’定数項’あるいは’平均’と説明するか理解できるだろう。もちろんこれはアルマモデルであり、差分が含まれているアリマモデルでは異なる姿で現れる。便宜上、差分は$d=1$回だけとってみる$ARIMA(p,1,q)$を考えてみよう。 $$ \begin{align} \phi (B) \nabla \left( Y_{t} - a - b t \right) = \theta (B) e_{t} \end{align} $$ 式$(2)$で、$a$を切片intercept、$b$をドリフトdriftと呼ぶ。差分を解析すると $$ \begin{align*} & \phi (B) (1 - B) \left( Y_{t} - a - b t \right) = \theta (B) e_{t} \\ \iff & \phi (B) \left[ \left( Y_{t} - a - b t \right) - \left( Y_{t-1} - a - b (t-1) \right) \right] = \theta (B) e_{t} \\ \iff & \phi (B) \left[ Y_{t} - Y_{t-1} - a + a - bt - b(t-1) \right] = \theta (B) e_{t} \\ \iff & \phi (B) \left( \nabla Y_{t} - b \right) = \theta (B) e_{t} \end{align*} $$

結局、$b$は$(1)$の$c$と同じ役割をするため、ドリフトと呼ぶのが妥当だとわかる。もちろん、2回以上の差分が必要な分析はほとんどないが、この方法で自然数$d$についても一般化できる。[ NOTE: 数学の直感に慣れている人なら、$(2)$の定数項$a$に差分を取ると消える現象から、微分を思い出すかもしれない。 ]

実習

20190716\_155837.png 分析に戻ろう。見ての通り、または予想通り、データの$ARIMA(1,1,2)$と差分を取ったデータの$ARIMA(1,0,2)$は当然同じになる。ただ一つ変わったのは、$ARIMA(1,1,2)$でdriftと書かれていた係数の名前が$ARIMA(1,0,2)$ではmeanに変わったことだ。式を理解したらもっと良いが、理解できなくても、ドリフトが’定数項、平均のようなもの’という程度は推測できるだろう。

コード

library(TSA)
data("oil.price")
out<-auto.arima(oil.price); summary(out)
out<-auto.arima(diff(oil.price)); summary(out)