カイ二乗分布と指数分布の交叉

  • こちらなどで、2つの相互に非独立な検定を組合すときにガンマ分布を持ち込む話をしている
  • ガンマ分布とカイ二乗分布・指数分布との関係などのメモも残しておくことにする
  • ガンマ分布の確率密度分布
    • P_{\Gamma} = \frac{x^{(k-1)}e^{-\frac{x}{\theta}}}{\Gamma(k)\theta^k}
  • カイ二乗分布の確率密度分布
    • P_{\chi^2,df} = \frac{x^{(\frac{df}{2}-1)}e^{-\frac{x}{2}}}{\Gamma(\frac{df}{2})2^{\frac{df}{2}}}=\frac{x^{(k-1)}e^{-\frac{x}{2}}}{\Gamma(k)2^k}ただし自由度はdf=2k
      • これは、k=\frac{df}{2},\theta=2のガンマ分布
  • 指数分布の確率密度分布
    • P_{e,\lambda} = \lambda e^{-\lambda x} = \frac{x^{(1-1)}e^{-\frac{x}{\theta}}}{\Gamma(1)\theta^1}ただしk=1,\lambda = \frac{1}{\theta}
      • これは、k=1,\theta=\frac{1}{\lambda}のガンマ分布
  • ガンマ関数は2つのパラメタk,\thetaで決まる。平均(期待値)と分散はk\theta, k\theta^2
    • 2つのパラメタで2次元をとり、その平均で色分けしたプロットをする
    • このプロットの上で、k = 1の直線上に来るのが、指数分布。指数分布は0よりの山が高いものと、より平坦なものとがあるが、その違いが、この直線上の位置に相当する。平坦であれば、2次元プロットの上方(の点に相当するガンマ分布)がその指数分布に相当する
    • 他方、カイ二乗分布\theta=2の分布。それは水平線上に乗る。df = 2 kなので、自由度は1,2,3...なので、相当する点はk=0.5,1,1.5,...(半整数)と離散的である。逆に言うと、自由度が半整数でない場合のカイ二乗分布というのも、定義できて、それがこの水平線上に乗っているとも見える
    • 垂直線と水平線の交点は、指数分布でもあってカイ二乗分布でもあるものであり、それは自由度2のカイ二乗分布であり、期待値が2の指数分布である

  • さて、2つの統計量を併せることを考える
    • ある統計量を単純に2倍にするとき、「平均」は2倍になって、自由度は変わらない。その変化は縦軸に2倍の変化
    • 自由度1のカイ二乗分布を単純に2倍にすると、(k = 0.5, theta = 2 )から(k = 0.5, theta =4)へと移動する。ガンマ分布の期待値的に考えても、k\thetaが2倍になっている。
    • もし、2つの相互に独立なカイ二乗検定(自由度1)を2つ足し合わせると、やはり、期待値は2倍になる。しかし自由度は2になる。この変化は(k = 0.5, theta = 2) から(k = 1, theta = 2)への変化。ガンマ分布の期待値的に考えても同様。
    • 実は、2つの自由度1のカイ二乗統計量の和を取ると、2つの統計量の間が独立であろうと非独立であろうと、期待値は、それぞれの統計量の期待値の和になるから、ガンマ分布とみなすなら、k\theta=C(期待値)の曲線上のどこかに来る。自由度1と自由度2との外側には来なさそうなので、自由度1と自由度2の点を端点とする曲線分のどこか、ということになるだろう
  • こちらで紹介した論文で非独立2統計量の和の分布をガンマ分布になぞらえて、ガンマ分布の2つのパラメタを推定しているが、その推定結果(a,bの2変数)を見ると、その積がほぼ4になっていること(論文では、両パラメタ値を別々に出しているので、きっちり4にはなっていないけれども…)がわかる
N.sample <- 10000
n.iter <- 1000
X <- matrix(sample(0:1,N.sample*n.iter,replace=TRUE),n.iter,N.sample)

hist(apply(X,1,sum))

x <- seq(from=-10,to=10,length=1000)
y <- dnorm(x)

plot(sign(x)*x^2,y)

k <- seq(from = 0, to =5, length = 100)
t <- k

kt <- expand.grid(k,t)

m <- kt[,1]*kt[,2]
v <- kt[,1] * kt[,2]^2
library(rgl)
plot3d(cbind(kt,m))
plot3d(cbind(kt,v))

image(matrix(m,length(k),length(t)))

plot(kt[,1],kt[,2],col=m%%4+2,pch=15,xlab = "k", ylab = "theta")
abline(h = 2,lwd = 3)
abline(v=1, lwd = 3)