カイ二乗検定

カイ二乗検定は、適合度検定および独立性検定に用いられる。適合度検定は、観測された度数分布が、理論分布(あるいは母集団の分布)と等しいかどうかを調べるときに利用される。独立性検定は、複数のグループをいくつかの属性で分類したとき、それぞれのグループが独立しているかどうかを調べるときに利用される。

なお、カイ二乗検定は、サンプルサイズがある程度大きいときに、統計検定量 Χ2 がカイ二乗分布に従うことを仮定している。そのため、サンプルサイズが小さいときに、統計検定量 Χ2 がカイ二乗分布に近似できなくなるので、検定結果が不正確になる。一般に、すべての(実験)項目における観測値が 10 以上のとき、カイ二乗検定が有効であるとされている。サンプルサイズが小さいときは、フィッシャーの正確確率検定や二項検定などを用いる必要がある。

適合度検定

適合度検定を使ってサイコロが公平であるかどうかを調べる例を示す。サイコロを 60 回振ったとき、各目が出る回数が、12, 10, 9, 9, 13, 7 であったとする。もし、このサイコロが公平であれば、各目が出る回数が理論上 10, 10, 10, 10, 10, 10 となるはずである。

サイコロ目123456
観測値121099137
理論値101010101010

サイコロが公平であるかどうかを調べる方法の 1 つとして、観測値 oi が理論値 ei からどれぐらい離れているのかを調べればよい。そこで、両者の差を計算する。観測値と理論値の大小関係によって、両者の差がプラスになったり、マイナスになったりする。両者の差がプラス・マイナスのいずれとなっても、観測値と理論値がかけ離れていることを意味する。そこで、プラス・マイナスの差を同じように扱うために、差の二乗を考える。その誤差の二乗和を統計検定量 Χ2 とする。観測値と理論値が大きくことなれば、統計検定量 Χ2 の値も大きくなることが考えられる。

\[ \chi ^{2} = \sum_{i=1}^{n}\frac{(o_{i} - e_{i})^{2}}{e_{i}} \]

サイコロの実験データから 統計検定量 Χ2 を計算すると次のようになる。

\[ \begin{eqnarray} \chi^{2} &=& \frac{(12-10)^{2}}{10} + \frac{(10-10)^{2}}{10} + \cdots + \frac{(7-10)^2}{2} \\ &=& 2.4 \end{eqnarray} \]

観測値と理論値の分布と同じであれば、統計検定量 Χ2 は自由度 6 - 1 = 5 のカイ二乗分布 Χ2(5) に従うことが知られている。そこで、Χ2(5) 分布を調べてみると、11.0705 以下の値はよく観測されることがわかる。逆に 11.0705 を超えるような値は全体ではわずか 5% しか観測されない。この分布に、サイコロの実験結果を照らし合わせてみると、サイコロの統計検定量 Χ2 は 2.4 となっている。この値はよく観測される値となっている。つまり、このサイコロは公平なサイコロと言える。もし、不公平なサイコロであれば、観測値と理論値の差がきっともっと大きな値で、そこから計算される差の二乗和は 11.0705 を超えるはずである。

R でカイ二乗検定(適合度検定)を行うには chisq.test 関数を利用する。上記サイコロの実験の場合は次のように chisq.test 関数を実行する。

o <- c(12, 10, 9, 9, 13, 7)
e <- c(10, 10, 10, 10, 10, 10)

chisq.test(o, p = e / sum(e))
## 
## 	Chi-squared test for given probabilities
## 
## data:  o 
## X-squared = 2.4, df = 5, p-value = 0.7915

qchisq(.95, df=5)
## [1] 11.0705

p-value が 0.05 よりも大きいので、危険率 5% のもとで帰無仮説を保留することになる。このサイコロ実験で得られた観測値は理論値と等しいと考えられる。

独立性検定

カイ二乗検定はフィッシャーの正確確率検定のように、分割表(クロス集計表)でまとめられたデータに対して、グループ間の分類が独立しているかどうかを検定する方法である。例えば、あるシーズンにおいて、インフルエンザ予防接種を受けなかった 532 人を追跡調査した際に、238 人が感染し、294 人が感染しなかった。これに対して、予防接種を受けた 386 人のうち 121 人が感染し、265 人が感染しなかった。予防接種を行ったグループの感染者数・非感染者数の割合は、そうでないグループの割合と関係しているのかどうか(独立しているかどうか)を検定する際に、カイ二乗検定(独立性検定)が使われる。

このデータでは、調査対象者数は 532 + 386 = 918 人であり、そのうち 238 + 121 = 359 人がインフルエンザに感染した。感染率は 359/918 = 0.391 である。もし、予防接種を受けても効果がないと仮定した場合、予防接種を受けたグループも、そうでないグループも感染率がともに 0.391 になるはずである。カイ二乗検定は、両グループの感染率が理論値(0.391)に等しいかどうかを検定する。

R でカイ二乗検定(独立性検定)を行うには次のようにする。

dat <- matrix(c(238, 121, 294, 265), ncol = 2)
rownames(dat) <- c("uninoculated", "inoculation")
colnames(dat) <- c("infection", "uninfected")
dat
##              infection uninfected
## uninoculated       238        294
## inoculation        121        265

chisq.test(dat)
## 	Pearson's Chi-squared test with Yates' continuity correction
## 
## data:  dat
## X-squared = 16.284, df = 1, p-value = 5.453e-05