個数
は独立な標準正規分布の2乗の
具体的な問題を考えましょう。毎年の事故発生件数が
になります。したがって,これらが独立にポアソン分布に従うという帰無仮説のもとで
は自由度
個数の列が与えられたとき,上の
例えばPISA「盗難事件」問題ほかで挙げた6年間の事故発生件数
> x = c(762,792,795,794,849,834)
が独立なポアソン分布に従うという帰無仮説についてカイ2乗検定をしてみましょう。Rでは次のようにして簡単に計算できます。
> chisq.test(x)
Chi-squared test for given probabilities
data: x
X-squared = 6.2329, df = 5, p-value = 0.2842
2×2分割表の縦計・横計
が与えられたとき,もし表の各行(各列)が独立ならば,
になるはずです。この予測値(期待度数)と実際の値(観測度数)との差の2乗を予測値で割ったものの合計
は近似的に自由度1の
Rで chisq.test()
です。単に
> chisq.test(matrix(c(228,863,284,851),nrow=2))
などとすれば,
> chisq.test(matrix(c(228,863,284,851),nrow=2), correct=FALSE)
のようにします。結果は
「カイ2乗…」と書いても「カイじじょう…」と読む人が多いのは,昔「2乗」のことを「自乗」(じじょう)と言ったことの名残りだろうと思います(私は「にじょう」と読みます)。
[この項要再検討]
観測度数を
を使いますが,類似のものとして,G検定(G-test)があります。これは
の分布が同じ
少なくともこの場合にはG検定の
このシミュレーションに使ったプログラムは次の通りです:
prob = c(0.12,0.18,0.28,0.42)
ni = 1000
pfis = pchi = pg = numeric(ni)
for (i in 1:ni) {
k = sample(1:4, 50, replace=TRUE, prob=prob)
na = sum(k == 1)
nb = sum(k == 2)
nc = sum(k == 3)
nd = sum(k == 4)
a = matrix(c(na, nb, nc, nd), nrow=2)
pfis[i] = fisher.test(a)$p.value
pchi[i] = chisq.test(a, correct=FALSE)$p.value
pg[i] = g.test(a)$p.value
}
plot(pfis, pchi, xlim=c(0,0.1), ylim=c(0,0.1), xlab="", ylab="")
abline(0,1)
for (i in 1:ni) {
if (!is.na(pchi[i])) {
points(pfis[i], pg[i], pch=4)
lines(c(pfis[i],pfis[i]), c(pchi[i],pg[i]))
}
}
度数分布データと仮説との整合性を調べる
Last modified: