二乗検定・Rで検定
昨日の理論編(といっても期待値と検定についてしか述べてないが)を理解していれば、Rを使ったχ二乗検定は非常に楽。
以下のサイトを参考にした。
まずtblbiというオブジェクトに2群(ボディイメージ群、統制群)、2分類(脱頭足画、頭足画)からなる2×2分割表を代入する。
> tblbi<-matrix(c(10,10,0,20),ncol=2,byrow=T)
- matrix:文字通り、マトリクスを作成する関数。
- ncol:列数。当然nrowで行数の指定もできる。
- byrow:デフォルトはFALSEで、マトリクスは列で埋め尽くされる。T(=TRUE)を選択したので行で埋め尽くされるマトリクスをつくろうとする。列数が指定されているので、列数を満たしながら行を作る。
- c:ベクトルをつくる関数。
tblbiオブジェクトの中身を見てみる。
> tblbi [,1] [,2] [1,] 10 10 [2,] 0 20
2×2分割表ができている。これをカイ二乗検定にかける。
> chisq.test(tblbi) Pearson's Chi-squared test with Yates' continuity correction data: tblbi X-squared = 10.8, df = 1, p-value = 0.001015
with Yates' continuity correctionとあるように、デフォルトでイェーツ補正をかけてくれる。
他の分割表もつくり、中身を見て、カイ二乗検定にかける、という手順を踏んでみることにする。
> tblpz<-matrix(c(4,16,0,20),ncol=2,byrow=T) > tblpz [,1] [,2] [1,] 4 16 [2,] 0 20 > chisq.test(tblpz) Pearson's Chi-squared test with Yates' continuity correction data: tblpz X-squared = 2.5, df = 1, p-value = 0.1138 Warning message: Chi-squared approximation may be incorrect in: chisq.test(tblpz) > tblms<-matrix(c(8,12,0,20),ncol=2,byrow=T) > tblms [,1] [,2] [1,] 8 12 [2,] 0 20 > chisq.test(tblms) Pearson's Chi-squared test with Yates' continuity correction data: tblms X-squared = 7.6562, df = 1, p-value = 0.005658 Warning message: Chi-squared approximation may be incorrect in: chisq.test(tblms)
tblpz(パズル群)とtblms(模写群)に関して検定を行なったわけだが、近似値は正しくない恐れがある、という警告が出ている。これはおそらく期待値が5以下のものがいずれかのセルに含まれているからである。この点に関して、次項目で触れる。
フィッシャーの正確確率検定(直接確率)
下記サイトによると、
2 × 2 分割表において,4 つの桝目のいずれかの期待値が 5 以下のときには,「χ2 分布を利用する独立性の検定」は不適当である。
そこで、フィッシャーの正確確率検定(たいていの教科書では「直接検定」exact testと訳されている)についても検討する。
理論的には上記サイトの説明で充分。ようは、その2×2分割表の生起確率が極端なものかいなかを検定している。
- 前提:
これらの前提をそのまま採用できる。
解説ページに、高校で数学を履修していないと理解できない表記があるので若干の注意書きを記す(ぼくもこれで統計の勉強につまづきました。入試に数学が必要じゃない方は高校で数学を履修していないことが多いと思いますが、青チャートの「個数の処理」あたりだけでも読んでおくとよいかもしれません)。
- 作者: チャート研究所
- 出版社/メーカー: 数研出版
- 発売日: 2003/03
- メディア: 単行本
- 購入: 4人 クリック: 225回
- この商品を含むブログ (17件) を見る
- n!:nの階乗と読む。
- n! = n(n-1)(n-2)……2・1 という意味。ただし、0! = 1と定義する。
- nCr:n個の異なるものからr個とる組合せの総数。
- nCr = n! / r!(n-r)!
とりあえず、カイ二乗検定で使った3つのマトリクスをフィッシャーの正確確率検定にかける。まずはボディイメージ群から。
> fisher.test(tblbi) Fisher's Exact Test for Count Data data: tblbi p-value = 0.0004359 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval: 3.428934 Inf sample estimates: odds ratio Inf > fisher.test(tblbi,alternative="g") Fisher's Exact Test for Count Data data: tblbi p-value = 0.0002180 alternative hypothesis: true odds ratio is greater than 1 95 percent confidence interval: 4.500512 Inf sample estimates: odds ratio Inf
上が両側検定で、下が片側検定。
両側検定ではp値が0.0004359(<5%)で、帰無仮説を棄却する。
片側検定(alternative="g"という引数を渡している)では、p値が0.000218で、帰無仮説は棄却できる。
> fisher.test(tblpz) Fisher's Exact Test for Count Data data: tblpz p-value = 0.1060 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval: 0.7060941 Inf sample estimates: odds ratio Inf > fisher.test(tblpz,alternative="g") Fisher's Exact Test for Count Data data: tblpz p-value = 0.05301 alternative hypothesis: true odds ratio is greater than 1 95 percent confidence interval: 0.9713421 Inf sample estimates: odds ratio Inf
これはパズル群。両側でp = 0.106、片側でp = 0.05301なので、帰無仮説を採択する。
> fisher.test(tblms) Fisher's Exact Test for Count Data data: tblms p-value = 0.003276 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval: 2.260980 Inf sample estimates: odds ratio Inf > fisher.test(tblms,alternative="g") Fisher's Exact Test for Count Data data: tblms p-value = 0.001638 alternative hypothesis: true odds ratio is greater than 1 95 percent confidence interval: 2.984197 Inf sample estimates: odds ratio Inf
模写群。両側でp = 0.003276、片側でp = 0.001638なので、帰無仮説を棄却する。
……と、2日にわたって2標本検定を行なってきたが、これはあくまでもぼくが勝手に帰無仮説を設定して行なった「例示」なので、卒論にする際には、何を帰無仮説にすれば自分の書きたい論文になるのかを考えて、再度検定をおこなってください。