Rでカイ二乗検定 - 例:血液型にまつわる妄想
先日、カイ二乗検定を行う機会があったのでメモ。
カイ二乗検定は大きく分けて、観測された頻度分布が理論分布と同じかどうかを検定する「適合度検定」と、2つの変数に対する2つの観察(2x2分割表で表される)が互いに独立かどうかを検定する「独立性検定」の2種類あります。
Rでのカイ二乗検定は、chisq.testで行います。
(1)「適合度検定」の場合
例えば、赤い花と白い花を交配して、その孫集団F2の植物のつける花の色がそれぞれ461, 112個体というデータが得られた時に、この集団が理論値の3:1に分離しているかを以下のように検定します。
> chisq.test(c(461,112), p=c(0.75, 0.25))
Chi-squared test for given probabilities
data: c(461, 112)
X-squared = 9.0896, df = 1, p-value = 0.002571
カイ二乗検定を行うと,χ2=9.09, P<0.01であり,この場合は3:1に分離していると考えてよいでしょう。
(2)「独立性検定」の場合
A工場では4800個の製品を作った時に12個の不良品が出てきて、B工場では7000個の製品を作った際に10個の不良品が出てきた場合、A工場とB工場で差があるかどうかの検定は以下のように行います。
というようなcsvファイルを用意して、
> x<-read.csv("test.csv")
でデータを読み込みます。
データの確認を行います。
> x
A B
1 4800 7000
2 12 10
カイ二乗検定をします。
> chisq.test(x, correct=FALSE)
Pearson's Chi-squared test
data: x
X-squared = 1.7496, df = 1, p-value = 0.1859
p値が0.18程度なので、6回データを取ると1回程度はこういったデータが偶然出てくる、つまりA工場とB工場では有意な差は認められないということになります。
わざわざcsvファイルと作るのもめんどくさいので、こういう場合にはmatrixで行列を使うと便利です。
次の例で試してみましょう。
Aさんが700回の実験で20回間違える、Bさんが650回の実験で11回間違えるとすると、感覚的にはAさんの方がうっかりさんに思えますが、以下のように検定してみると…
> y <- matrix(c(700,20,650,11), nrow=2, ncol=2)
> y
[,1] [,2]
[1,] 700 650
[2,] 20 11
カイ二乗検定をします。
> chisq.test(y, correct=FALSE)
Pearson's Chi-squared test
data: y
X-squared = 1.9477, df = 1, p-value = 0.1628
p値は、0.16程度なので、AさんもBさんもそれほど変わらないかもしれません。
ちなみに、correct=FALSEは通常のカイ二乗検定、correct=TRUEはイェイツ補正を行うパラメーターです。
ーーー
以下、胡散臭い話をカイ二乗検定してみましょう。
サッカーブラジルW杯時に話題になったニュースで、
というものがありました。
さっそく統計検定をしてみましょう!
日本人の血液型は、およそA型40%, B型20%、AB型10%, O型30%なので、その割合を理論値として検定します。
> chisq.test(c(9,3,3,8), p=c(0.4, 0.2, 0.1, 0.3))
Chi-squared test for given probabilities
data: c(9, 3, 3, 8)
X-squared = 0.9493, df = 3, p-value = 0.8135
全然、有為な差はありませんね。
偶然、偶然。
(ちなみに、サンプル数が少ないので「カイ二乗検定は不正確かもしれません」とのメッセージが出てきます)
また、別の記事で
というものもありました。
ほぉ~、早生まれが多いのかぁ~。
ではでは、さっきと同様に。
> chisq.test(c(10,13), p=c(0.25, 0.75))
Chi-squared test for given probabilities
data: c(10, 13)
X-squared = 4.1884, df = 1, p-value = 0.0407
ん~、なんか微妙。
サッカーのユース国際大会は1月生まれが学年の基準だそうで、そういう意味では早生まれの方が多少有利なのかもしれません。
この記事が気に入ったらサポートをしてみませんか?