ボックス-コックス変換
ビルドアップ
$x > 0$に対する$g(x) := \begin{cases} \displaystyle {{ x^{\lambda} - 1 } \over { \lambda }} & , \lambda \ne 0 \\ \log x & , \lambda = 0 \end{cases}$のボックス-コックス変換と言う。
$g$は元々べき乗変換power transformationと呼ばれるが、ボックスとコックスによって紹介されたため、ボックス-コックス変換とも呼ばれる。ボックス-コックス変換の主な用途は、データを正規分布に近づけるかデータの分散を安定させることで、正規性を仮定する分析法や定常性を求める分析法を使用する前のデータの前処理に有益に使用できる。べき乗変換を行うためには、データがすべて正でなければならないという条件が必要だが、通常は単に何らかの値を加えてデータの最小値が正になるようにシフトする方法で解決する。この方法が適切でないか気に入らない場合は、実数全体に対して一般化されたイェオ-ジョンソン変換 Yeo-Johnson Transformationを検討することができる。
数式的には$\displaystyle \lim_{\lambda \to 0} {{ x^{\lambda} - 1 } \over { \lambda }} = \log x$なので、実際には$\displaystyle g(x) = {{ x^{\lambda} - 1 } \over { \lambda }}$ぐらいまでわかっていれば問題なく認識できる。また$g$は$\lambda$にも依存しているため、持っているものは関数のファミリー$\left\{ g_{\lambda} : \lambda \in \mathbb{R} \right\}$だ。$g_{\lambda}$は$\lambda$に従って柔軟に形を変え、分析者は目的に合わせて$\lambda$を正しく決める必要がある。
特に注目すべきは$\lambda$である$0,1,2$だ。$g_{0} (x) = \log(x)$は最も頻繁に使用される変換で、$\displaystyle g_{2} (x) = {{\sqrt{x} - 1} \over {2}}$も$\displaystyle h(x) = {{x - 1} \over {2}}$が線形変換であるため、$\displaystyle g_{2} (x) \approx \sqrt{x}$が発見されることがわかる。ボックス-コックス変換によって好ましいルート$\sqrt{}$とログ$\log$がカバーされる事実は、理論的に興味深いと同時に実際には当然のことであるべきだ。
$\lambda = 1$の場合は$g(x) = x - 1$となり、実質的に恒等変換となる。通常、データから値が$1$ほど落ちるのは、変換と呼ぶには足りない。与えられたデータに対して適切な$\lambda$が$1$とわかった場合、これは「変換が不要だ」と解釈しても問題ない。
同じ感覚で時系列分析を考えると、ボックス-コックス変換の$\lambda$の信頼区間を求めることは、データの分散が一定かを仮説検定することと見なすことができる。$\lambda$の信頼区間に$1$が含まれていれば、データを変換するかしないかの差はない。変換をする必要がないということは、すなわち分散が既に一定であることを意味する。
仮説検定
データ$\left\{ x_{t} \right\}$が与えられているとする。
- $H_{0}$: $\lambda = 1$つまり、データ$\left\{ y_{t} \right\}$は定常性を持つ。
- $H_{1}$: $\lambda \ne 1$つまり、データ$\left\{ y_{t} \right\}$は定常性を持たない。
このような診断は分散に対してのみ発生することに注意する必要がある。平均については気にしないため、別のテストが必要である。
コード
実践
Rでは、TSA
パッケージのBoxCox.ar()
関数を通じて簡単に仮説検定ができる。
内蔵データUKgas
を読み込んでみよう。
UKgas
はイギリスでのガス消費量を四半期ごとに記録したデータで、見ての通り、年を追うごとに変動がより一層激しくなることが分かる。一方で、仮説検定結果は信頼区間に$0$が含まれており、これによりボックス-コックス変換はロク変換となる。
実際にログを取ると、分散がかなり安定することが分かる。確認のためもう一度仮説検定を行うと、信頼区間に$1$が含まれている。これは、信頼水準$95\%$で、これ以上の変換は不要だと解釈できる。しかし、グラフで示されるように、完全に分散が安定したわけではなく、$2$も信頼区間に含まれるため、もう一度変換を行う根拠として受け入れても妥当である。このような状況での選択は最終的に信頼水準に依存し、信頼水準が$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))