logo

百科事典 📂統計的分析

百科事典

定義

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

実践 1

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

1.png

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

2.png

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

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

3.png

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

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

数式的説明

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

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

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

フィルタπ(B)\pi (B)線形であるため、XtX_{t}YtY_{t}の性質を保ちながら相関関係を分析する根拠となる。XtX_{t}YtY_{t}が互いに独立だとした場合、標準化されたCCF(sCCF)rkr_{k}が以下のように正規分布に従うためだ。 rkN(0,1n[1+2k=1ρk(Xt)ρk(Yk)]) 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) もちろん、ρk\rho_{k}自己相関関数を意味する。しかし、プリホワイトニングを行った後は、ρk(X~)=0\rho_{k} \left( \tilde{X} \right) = 0であり、実際の仮説検定は帰無仮説H0H_{0}の下で次を仮定する。 rkN(0,1n) 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. ↩︎