ケィオスの時系列解析メモランダム

時系列解析、生体情報解析などをやわらかく語ります

Box-Cox変換について考えてみた:なぜ正規でも対数正規でもない半端な分布?

 統計の検定では、データが正規分布に従うことを前提とする場合が多いです。そのため、正規分布からずれた歪んだ分布に従うデータは、Box-Cox変換と呼ばれるべき乗変換(対数変換も含む)を用いて、正規分布に近づけることがよく行われます。

Box-Cox変換で、歪んだ分布 (左)を正規分布 (右)に近づける。

 Box-Cox変換を使うと、データの分布を正規分布に近づけることができる場合があります。しかし、ここでいう「正規分布に近づける」には、次の2つの解釈があります。

1. 本質的には正規分布とは関係ないが、統計的手法を適用しやすくするために無理やり正規分布に近づける

2. データの真の分布は、Box-Cox変換の下で完全な正規分布に従っている

この2つの解釈は異なる意味を持ちます。

 例えば、多くの人が同意するように、現実には対数正規分布に従う現象が存在します。これは、複数のランダムな要因が掛け算(相乗的な関係)で影響を与えると、中心極限定理の結果として対数正規分布になるためです。そして、対数正規分布に従うデータに対し、\displaystyle{
\lambda = 0
} のBox-Cox変換(対数変換)を適用すると、完全な正規分布に従うデータに変換できます。

 このことから、対数変換によって正規分布が得られるという事実は、データの背後にある仕組みとして「ランダム要因の積の効果」が存在することを示唆しています。

観測されたデータが確率変数の積になっている場合

 一方で、 \displaystyle{
\lambda = 1
} の場合、何も変換しなくてもデータは正規分布に従います。このときも、データの背後には「ランダム要因の和の効果」があると解釈できます。

観測されたデータが確率変数の和になっている場合

 では、 \displaystyle{
\lambda = 1
}(そのまま)や \displaystyle{
\lambda = 0
}(対数変換)の場合にはデータが完全な正規分布に従うのに対し、それ以外のBox-Cox変換は単なる「ごまかしの変換」にすぎないのでしょうか?

 それとも、もっと深い意味があるのでしょうか?

 私の妄想的な答えは、 \displaystyle{
\lambda \neq 0, 1
} のBox-Cox変換で完全な正規分布に変換できるデータが存在するという事実は、我々の世界には「足し算でも掛け算でもなく、その中間の演算が存在する」ことを意味するというものです。

統計と物理の重なり

 物理学の統計力学では、エントロピーは通常、加法性(足し算できる性質)を持ちます。しかし、「もしもエントロピーが加法的ではなく、掛け算的な性質を持っていたら?」という発想から生まれたのが、Tsallisエントロピーです。これは、ドラえもんの「もしもボックス」的発想ですが、「現実にもあるかも」と物理の分野では考えている人がいます。

 みなさんは統計力学のことなんて知ったことではないし、興味はないかもしれません。ただ、このアイデアをもっと一般化された概念でとらえれば、私たちが住んでいる世界には、足し算と掛け算の中間的な計算が存在するかもという革新的な可能性を考えていることになります。

 今回の記事では、Tsallisエントロピーに関連する数学であるq代数に注目し、そこで用いられるq指数関数q対数関数を紹介します。さらに、それらがBox-Cox変換とどのように関係しているのかについて考察します。

 ポイントと狙いは以下です:

  • q対数関数は,Box-Cox変換の式と同じ形
  • 世の中には足し算と掛け算を結んだ中間の計算があるかも
  • 従来のBox-Cox変換で使う最尤法とは違う方法で,変形パラメタを推定できることを示す (近い将来の目標で、今回は説明しません)

Box-Cox変換のおさらい

 Box-Cox変換について簡単に紹介します。この変換を用いることで、データの正規性を改善し、統計的手法(回帰分析や分散分析など)を適用しやすくなります。

 Box-Cox変換は,データの値  x (正の値)を正規分布に近づけるための変換で、以下の式で定義されます。

\displaystyle{
y =
\begin{cases}
\frac{x^{\lambda} - 1}{\lambda}, & (\lambda \neq 0) \\
\ln x, & (\lambda = 0)
\end{cases}
}

この場合、変換後の  y をできるだけ正規分布に近づける、パラメタ \displaystyle{
\lambda
} を推定します。Box-Cox変換では、尤度関数を最大化する値を推定して決めることが一般的です。ただし、パラメタ \displaystyle{
\lambda
} を一発で与える公式 (閉じた式)は存在せず、探索的に最適な値を見つけることになります。

 Box-Cox変換では、

  • \displaystyle{
\lambda = 1
} のとき、
\displaystyle{
y=x−1 
}

つまり、値が1減るけど変換なし、

  • \displaystyle{
\lambda = 0
} のとき、対数変換
\displaystyle{
y = \ln x
}

になります。

q指数関数,q対数関数,q積の紹介

 Box-Cox変換のパラメタは、\displaystyle{
\lambda
} でしたが、ここでは、パラメタは、\displaystyle{
q
} (実数)です。

 \displaystyle{
1+(1-q) x\gt0
} を満たす実数  x に対してq指数関数とq対数関数は定義されます。

q指数関数
\displaystyle{
\exp _q x =[1+(1-q) x]^{\frac{1}{1-q}}
}

q対数関数
\displaystyle{
\ln _q x =\frac{x^{1-q}-1}{1-q}
}

Box-Cox変換とq対数関数の式を見比べれば、

\displaystyle{
\frac{x^{\lambda} - 1}{\lambda}=\frac{x^{1-q}-1}{1-q}
}

のように対応するので、

\displaystyle{
\lambda = 1 - q
}

であることがわかります。

 もちろん、q指数関数は、Box-Cox変換の逆関数を求めれば形が一致します。ですので、Box-Cox変換とq対数関数が同じってことに深い意味はないように感じますが、以下で説明するq積を考えれば、新しい視界が開けます。

q積  q代数には、q積という演算が定義されています。

\displaystyle{
x^ {1-q}+y^ {1-q}-1\gt0
} を満たす x >0 y >0 のq積は、
\displaystyle{
x \otimes_q y=\left[x^{1-q}+y^{1-q}-1\right]^{\frac{1}{1-q}}
}

 q積では、\displaystyle{
q=0
} のとき、

\displaystyle{
x \otimes_1 y=\left[x^{1}+y^{1}-1\right]^{\frac{1}{1}} = x + y - 1
}

と足し算になります。足し算と考えれば、-1 が邪魔ですが、 と呼ぶからには、

\displaystyle{
x \otimes_1 1=\left[x^{1}+1^{1}-1\right]^{\frac{1}{1}} = x
}

のように、1をかけても何も変わらないように定義されています。ですので、一般に、

\displaystyle{
x \otimes_q 1= x
}

が成り立ちます。

また、\displaystyle{
q \to 1
} のとき、

\displaystyle{
x \otimes_0 y= \lim_{q \to 1} \left[x^{1-q}+y^{1-q}-1\right]^{\frac{1}{1-q}} = x y
}

と、使い慣れた掛け算と一致します。

xyq積:x \otimes_q y q=0は足し算 x + y-1q=1は普通の掛け算 x y

 このq積を使えば、以下の関係が成り立ちます。

\displaystyle{
\begin{align}
\exp _q(x) \otimes_q \exp _q(y) &=\exp _q(x+y) \\ \\
\ln _q\left(x \otimes_q y\right) &=\ln _q(x)+\ln _q(y)
\end{align}
}

 上の2番目の式のように、q積でくっついていた2つの変数は、q対数をとると和の形に分解できます。

q対数正規分布の登場

 以上の議論から、私が言いたいことは、独立同分布に従う確率変数のq積は漸近的に q対数正規分布に従うのではないかということです。

観測されたデータが確率変数のq積になっている場合

 q対数正規分布 とは、この分布に従う確率変数に q対数変換(=Box-Cox変換)を施すと、正規分布に従うようになるものです。

 q対数正規分布は以下で与えれられます。

\displaystyle{
f(x)=\frac{1}{\sqrt{2 \pi}\sigma x^q} \exp \left(-\frac{\left(\ln _q x-\mu\right)^2}{2 \sigma^2}\right)
}

 今回のお話はここまでにします。一般に、Box-Cox変換は「正規分布に近づける」ための手法として捉えられがちですが、q対数変換は時系列解析においても重要な意味を持つと考えています。というのも、足し算や掛け算の拡張は、あらゆる計算に影響を及ぼす可能性があるからです。

 この点については、今後論文をまとめながら、こちらでも結果を共有していきたいと思います。

Box-Cox変換の数値実験

 q対数正規分布に従う乱数は、q指数関数を使って簡単に生成可能です。この乱数を使ってBox-Cox変換の数値実験ができます。Rスクリプトの例を以下に掲載しておきます。

# 真のラムダの値
lmd <- 0.3
##########################################
# q指数関数の定義
q_exp <- function(x, q) {
  if (q == 1) {
    return(exp(x))
  } else {
    return((1 + (1 - q) * x)^(1 / (1 - q)))
  }
}
# q対数関数の定義
q_ln <- function(x, q) {
  if (q == 1) return(log(x))  # q=1の場合はlog(x)
  return((x^(1-q) - 1) / (1 - q))
}
##########################################
N <- 1000
x <- rnorm(N,5,1) # 負にならないようにしてください
# λをqに変換
q <- 1-lmd
# xをq指数変換してq対数正規分布に従う乱数を生成
x.q <- q_exp(x,q)
require(car)
lmd.est <- powerTransform(x.q)$lambda
#######################
x.bc <- bcPower(x.q, lmd.est)
par(mfrow=c(2,1))
hist(x.q,freq=FALSE,breaks="FD",xlab="x",main=sprintf("True lambda = %.3f",lmd),col=4,border=NA)
# パラメタは解析的に計算せずサンプルから計算しています
mu <- mean(x)
sig2 <- var(x)
curve(exp(-(q_ln(x,q)-mu)^2/(2*sig2))/sqrt(2*pi*sig2)/x^q,add=TRUE,col=2,lwd=3)
hist(x.bc,freq=FALSE,breaks="FD",xlab="x",main=sprintf("Estimated lambda = %.3f",lmd.est),col=4,border=NA)
# パラメタは解析的に計算せずサンプルから計算しています
Mu <- mean(x.bc)
Stdev <- sd(x.bc)
curve(dnorm(x,Mu,Stdev),add=TRUE,col=2,lwd=3)

Rスクリプトの実行例

最後に一言

 私の考えはあくまで一つの仮説に過ぎませんが、私たちの世界をより深く記述するためには、意外なところで q積 が鍵を握るのではないか、そんな気がしています。今後は特に、時系列解析への q積 の応用という新たな可能性を探っていきたいと考えています。

 今回お話しした内容は、Box-Cox変換やTsallisエントロピーに触れたことのある方なら、一度は思い至るものかもしれません。しかし私自身は、それらの枠を超え、時系列解析における q積 の真価を見出し、新たな地平を切り拓いていきたいです。

 以下のページを参考にさせていただきました。大変勉強になりました。

sites.google.com