logo

ボックス-コックス変換 📂統計的検定

ボックス-コックス変換

ビルドアップ

x>0x > 0に対するg(x):={xλ1λ,λ0logx,λ=0g(x) := \begin{cases} \displaystyle {{ x^{\lambda} - 1 } \over { \lambda }} & , \lambda \ne 0 \\ \log x & , \lambda = 0 \end{cases}ボックス-コックス変換と言う。

ggは元々べき乗変換power transformationと呼ばれるが、ボックスとコックスによって紹介されたため、ボックス-コックス変換とも呼ばれる。ボックス-コックス変換の主な用途は、データを正規分布に近づけるかデータの分散を安定させることで、正規性を仮定する分析法や定常性を求める分析法を使用する前のデータの前処理に有益に使用できる。べき乗変換を行うためには、データがすべて正でなければならないという条件が必要だが、通常は単に何らかの値を加えてデータの最小値が正になるようにシフトする方法で解決する。この方法が適切でないか気に入らない場合は、実数全体に対して一般化されたイェオ-ジョンソン変換 Yeo-Johnson Transformationを検討することができる。

数式的にはlimλ0xλ1λ=logx\displaystyle \lim_{\lambda \to 0} {{ x^{\lambda} - 1 } \over { \lambda }} = \log xなので、実際にはg(x)=xλ1λ\displaystyle g(x) = {{ x^{\lambda} - 1 } \over { \lambda }}ぐらいまでわかっていれば問題なく認識できる。またggλ\lambdaにも依存しているため、持っているものは関数のファミリー{gλ:λR}\left\{ g_{\lambda} : \lambda \in \mathbb{R} \right\}だ。gλg_{\lambda}λ\lambdaに従って柔軟に形を変え、分析者は目的に合わせてλ\lambdaを正しく決める必要がある。

特に注目すべきはλ\lambdaである0,1,20,1,2だ。g0(x)=log(x)g_{0} (x) = \log(x)は最も頻繁に使用される変換で、g2(x)=x12\displaystyle g_{2} (x) = {{\sqrt{x} - 1} \over {2}}h(x)=x12\displaystyle h(x) = {{x - 1} \over {2}}が線形変換であるため、g2(x)x\displaystyle g_{2} (x) \approx \sqrt{x}が発見されることがわかる。ボックス-コックス変換によって好ましいルート\sqrt{}とログlog\logがカバーされる事実は、理論的に興味深いと同時に実際には当然のことであるべきだ。

λ=1\lambda = 1の場合はg(x)=x1g(x) = x - 1となり、実質的に恒等変換となる。通常、データから値が11ほど落ちるのは、変換と呼ぶには足りない。与えられたデータに対して適切なλ\lambda11とわかった場合、これは「変換が不要だ」と解釈しても問題ない。

同じ感覚で時系列分析を考えると、ボックス-コックス変換のλ\lambdaの信頼区間を求めることは、データの分散が一定かを仮説検定することと見なすことができる。λ\lambdaの信頼区間に11が含まれていれば、データを変換するかしないかの差はない。変換をする必要がないということは、すなわち分散が既に一定であることを意味する。

仮説検定

データ{xt}\left\{ x_{t} \right\}が与えられているとする。

  • H0H_{0}: λ=1\lambda = 1つまり、データ{yt}\left\{ y_{t} \right\}は定常性を持つ。
  • H1H_{1}: λ1\lambda \ne 1つまり、データ{yt}\left\{ y_{t} \right\}は定常性を持たない。

このような診断は分散に対してのみ発生することに注意する必要がある。平均については気にしないため、別のテストが必要である。

コード

実践

Rでは、TSAパッケージのBoxCox.ar()関数を通じて簡単に仮説検定ができる。

内蔵データUKgasを読み込んでみよう。

ukgas.png boxcoxukgas.png

UKgasはイギリスでのガス消費量を四半期ごとに記録したデータで、見ての通り、年を追うごとに変動がより一層激しくなることが分かる。一方で、仮説検定結果は信頼区間に00が含まれており、これによりボックス-コックス変換はロク変換となる。

logukgas.png boxcoxlogukgas.png

実際にログを取ると、分散がかなり安定することが分かる。確認のためもう一度仮説検定を行うと、信頼区間に11が含まれている。これは、信頼水準95%95\%で、これ以上の変換は不要だと解釈できる。しかし、グラフで示されるように、完全に分散が安定したわけではなく、22も信頼区間に含まれるため、もう一度変換を行う根拠として受け入れても妥当である。このような状況での選択は最終的に信頼水準に依存し、信頼水準が95%95 \%であれば、分析者が選ぶことにかかっている。

全コード

UKgas
win.graph(3.5,3.5); plot(UKgas,main='UKgas')
win.graph(3.5,3.5); BoxCox.ar(UKgas)
win.graph(3.5,3.5); plot(log(UKgas),main='log(UKgas)')
win.graph(3.5,3.5); BoxCox.ar(log(UKgas))