カイ二乗適合度検定は、観測された度数分布が、理論分布と等しいかどうかを調べるときに利用される。これは、多項分布の出力値から算出された統計量がカイ二乗分布に従うことを根拠としている。
ここでは多項分布に従う乱数を出力し、統計量がカイ二乗分布に従うことをシミュレーションによって確かめてみよう。

1 多項分布とカイ二乗値

nは試行回数、sizeは1回の試行における頻度の総数、probは各クラスの実現確率 (確率は自動的に正規化される) 関数chisq.testの出力からカイ二乗値をrsとして取り出す。
これを1000回繰り返してヒストグラムを描く。
理論上の分布は自由度1のカイ二乗分布

X = c()
s <- rmultinom(n=1000, size = 10, prob = c(0.5,0.5)) 
for (i in 1:1000) {
  res <- chisq.test(s[,i], p = c(0.5,0.5))
  rs <- res$ statistic
  X <-c(X,rs)
}
hist(X,prob=T)
curve(dchisq(x,1),add=T)

今度は関数を用いずカイ二乗値の定義に従って計算する。

s <- rmultinom(n=1000, size = 10, prob = c(0.5,0.5)) 
#ds <- data.frame(X=s[1,],Y=s[2,])
Z=c()
for (i in 1:1000){
  z <- sum((s[,i]-10*c(0.5,0.5))^2/(10*c(0.5,0.5)))
  Z <- c(Z,z)
}
#Z
hist(Z,prob=T)