独立性の検定     Last modified: Apr 20, 2005

例題

 「13 人の学生について,自動車運転免許を持っているかどうかを調査した結果が,表 4 のようにまとめられた。男女で免許保有率に差があるかどうか検定しなさい。」

表 4.性別の運転免許保有状況(その 1)

あり なし 合計
男子 4 2 6
女子 1 6 7
合計 5 8 13


R による解析

> tbl4 <- matrix(c(4, 2, 1, 6), ncol=2, byrow=T)

> tbl4
     [,1] [,2]
[1,]    4    2
[2,]    1    6

> chisq.test(tbl4, correct=F) # 連続性の補正をしない場合

	Pearson's Chi-squared test

data:  tbl4 
X-squared = 3.7452, df = 1, p-value = 0.05296

Warning message: 
Chi-squared approximation may be incorrect in: chisq.test(tbl4, correct = F) 

> chisq.test(tbl4) # 連続性の補正をする場合

	Pearson's Chi-squared test with Yates' continuity correction

data:  tbl4 
X-squared = 1.8591, df = 1, p-value = 0.1727

Warning message: 
Chi-squared approximation may be incorrect in: chisq.test(tbl4) 

注意

4 つの桝目の数値を a,b,c,d,および,n = a + b + c + d としたとき,abs(a * d - b * c) - n / 2 が負の値になるときに,R の chisq.test は誤った答えを表示してしまう。

abs(a*d-b*c)-n/2 が負の値になるときには,補正カイ二乗値は無条件に 0 にしなければならない(手法の解説ページを参照のこと)。

表 5.問題の生じる分割表の例

あり なし 合計
男子 10 15 25
女子 11 16 27
合計 21 31 52

R での計算結果

> tbl5 <- matrix(c(10, 15, 11, 16), ncol=2, byrow=TRUE)
> tbl5
     [,1] [,2]
[1,]   10   15
[2,]   11   16
> chisq.test(tbl5)

	Pearson's Chi-squared test with Yates' continuity correction

data:  tbl5 
X-squared = 0.0522, df = 1, p-value = 0.8193

この結果は,間違いである。

abs(10*16-15*11)-52/2 = -21 である。これは,修正される前の数値より,修正すべき数値が大きいという例外が生じているのである。意味的に考えれば,このようなときには修正後の値は 0 とすべきである。そのようにすればカイ二乗値は 0 になり,P 値は 1 になるのである。

対処法は R の chisq.test 関数の中の

            if (correct && nrow(x) == 2 && ncol(x) == 2) {
                YATES <- 0.5
                METHOD <- paste(METHOD, "with Yates' continuity correction")
            }
            else YATES <- 0
            STATISTIC <- sum((abs(x - E) - YATES)^2/E)
という部分を
            if (correct && nrow(x) == 2 && ncol(x) == 2) {
                STATISTIC <- if (abs(x[1,1]*x[2,2]-x[1,2]*x[2,1]) < sum(x)/2) 0 else sum((abs(x - E) - 0.5)^2/E)
                METHOD <- paste(METHOD, "with Yates' continuity correction")
            }
            else STATISTIC <- sum((abs(x - E))^2/E)
のように変更すればよい。
・ 手法の解説ページ
・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI