logo

百科事典 📂統計的分析

百科事典

定義

プリホワイトニングprewhiteningとは、CCFを計算する際に時系列データを白色ノイズに変換し、二つのデータ間の相関関係をより正確に把握する方法だ。

実践 1

できれば、これがどのように可能かを数式的にも完全に理解することをお勧めするが、まずは以下のデータを見てみよう。

1.png

bluebirdは、ニュージーランドのポテトチップスを製造するブルーバード社に関するデータであり、平均価格と販売量のログを取った二つの時系列データを含んでいる。データだけを見ると、販売量と価格は強い負の相関関係を持っているように思える。これをCCFで確認してみよう。

2.png

思った通り、二つのデータは負の相関関係を持っている。しかし、ラグ$k = 0$だけでなくその周辺のラグにも相関関係があることをどう受け止めるべきか考える必要がある。基本的にパターンがあるかないかにかかわらず、$X_{t}$、$X_{t-1}$、$X_{t+1}$は本質的にその値に大きな違いはない。急騰や急落はないが、直前や直後であればある程度似た値であることが普通だからだ。

もし$X_{t}$と$Y_{t}$が相関関係を持つなら、$X_{t}$と$Y_{t-1}$、$Y_{t+1}$もある程度希薄な相関関係を持つのは普通だ。これは、実際に相関関係があるとかないとかよりも、数式的にあまりにも当然の結論なので、本当に相関関係があってもなくても、何とも言えない状況なのだ。

3.png

一方、プリホワイトニングをすると、上のように$k=0$についてのみ相関関係があることが明らかになる。Rではccf()の代わりにprewhiten()を使うことで、プリホワイトニングされたデータのCCFを簡単に見ることができる。

プリホワイトニングは、このように数式的に生じる相関関係を取り除く。プリホワイトニングされたデータ同士のCCFを計算したときにも相関関係が明らかになるなら、これらの変数は相関関係があると見なされる。反対に、プリホワイトニングによってCCFが意味がないものとして現れたら、それは本当の相関関係ではなかったとみなされる。

数式的説明

数式的に見ると、なぜこの方法がプリホワイトニングなのか理解しやすくなる。簡単な例として、$X_{t}$がARIMAモデル$ARIMA(1,1,0)$から出てきたと考えてみよう。 $$ \nabla X_{t} = \phi \nabla X_{t-1} + e_{t} $$ これを$e_{t}$に関して表すと、 $$ e_{t} = \nabla X_{t} - \phi \nabla X_{t-1} $$ 差分$\nabla$をバックシフト$B$に関して解くと、 $$ \begin{align*} e_{t} =& (1 - B ) X_{t} - \phi (1 - B ) B X_{t} \\ =& \left[ 1 - ( 1 + \phi ) B + \phi B^2 \right] X_{t} \\ =& \left(1 - \pi_{1} B - \pi_{2} B^2 \right) X_{t} \end{align*} $$ この方程式を満たす線形オペレータ$\pi ( B) := 1 - \pi_{1} B - \pi_{2} B^2$をフィルタfilterと呼び、フィルタによって$X_{t}$が白色ノイズ$\tilde{X_{t}}$に変換されるプロセスをプリホワイトニングという2

一般的なARIMAモデルもこのようにしてプリホワイトニングする。人の手ではなくコンピューターで行う場合は、変数選択基準に従って自動的にモデルをフィッティングし、その残差を使用すればいい。

$\tilde{X_{t}}$は白色ノイズとは言え、あくまでも$X_{t}$自体の情報を通してのみ、$e_{t}$と同様に扱われる。新しい変数$Y_{t}$と何らかの関係があるとしても、プリホワイトニングをする際にはその情報は考慮されないため、その相関関係は残差に残る。したがって、プリホワイトニングされた$\tilde{X_{t}}$と$\tilde{Y_{t}}$間のCCFを計算することで、実際にどのような時差で交差相関関係を持っているかがわかる。

フィルタ$\pi (B)$が線形であるため、$X_{t}$と$Y_{t}$の性質を保ちながら相関関係を分析する根拠となる。$X_{t}$と$Y_{t}$が互いに独立だとした場合、標準化されたCCF(sCCF)$r_{k}$が以下のように正規分布に従うためだ。 $$ r_{k} \sim N \left( 0 , {{1} \over {n}} \left[ 1 + 2 \sum_{k=1}^{\infty} \rho_{k} (X_{t}) \rho_{k} (Y_{k} ) \right] \right) $$ もちろん、$\rho_{k}$は自己相関関数を意味する。しかし、プリホワイトニングを行った後は、$\rho_{k} \left( \tilde{X} \right) = 0$であり、実際の仮説検定は帰無仮説$H_{0}$の下で次を仮定する。 $$ r_{k} \sim N \left( 0 , {{1} \over {n}} \right) $$ 要するに、プリホワイトニングを行った後でも、仮説検定自体は変わらないということだ。

コード

library(TSA)
data("bluebird")
win.graph(6,5); plot(bluebird,yax.flip = T)
 
win.graph(6,4)
ccf(bluebird[,1],bluebird[,2],main="가격과 판매량의 CCF",ylab="CCF")
win.graph(6,4)
prewhiten(bluebird[,1],bluebird[,2],main="가격과 판매량의 사전백화 CCF",ylab="CCF")
 
out<-lm(log.sales~price,data=bluebird); summary(out); plot(rstudent(out))

  1. Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p268. ↩︎

  2. Cryer. (2008). Time Series Analysis: With Applications in R(2nd Edition): p265. ↩︎