多次元の分割表
コンサルで多次元の分割表を考える機会があったので、メモを残す。
多次元の分割表を考えるうえで陥ってしまいがちなのが、「シンプソンのパラドックス」。要するに、多次元の分割表を勝手に統合したり、分割したりすると、誤った結果を導いてしまうかもしれない。よって、そのままの形で解析せよ、ということ。
例
東京 | 大阪 | |||
---|---|---|---|---|
健康 | 病気 | 健全 | 病気 | |
サクラ | 45 | 13 | 19 | 17 |
ウメ | 27 | 21 | 39 | 11 |
大阪と東京で、病気の有無をサクラとウメで調べたとする。
調べたいのは、
- 樹種によって、病気の罹病度合いが異なるか?を東京、大阪を区別した上で解析したい
これをRでは以下のようにして行う。
地域ごとに解析した場合。
tokyo <- matrix(c(45, 13, 27, 21), nrow = 2, byrow = T) osaka <- matrix(c(19, 17, 39, 11), nrow = 2, byrow = T) chisq.test(tokyo) Pearson's Chi-squared test with Yates' continuity correction data: tokyo X-squared = 4.5522, df = 1, p-value = 0.03288 chisq.test(osaka) Pearson's Chi-squared test with Yates' continuity correction data: osaka X-squared = 4.9696, df = 1, p-value = 0.0258
となり、どちらも有意となる。
しかし、これを地域差を考慮せず、一括してχ2検定してしまうと、
data <- matrix(c(45 + 19, 13 + 17, 27 + 39, 21 + 11), nrow = 2) chisq.test(data) Pearson's Chi-squared test with Yates' continuity correction data: data X-squared = 0.002, df = 1, p-value = 0.9641
となり、有意差は出なくなる。(これがシンプソンのパラドックス)
これを地域ごとの差を考慮して、全体でやる場合、Mantel-Haenszel検定を行う。
- MH検定
MH検定には、ある仮定がある。それは、各層(今回の場合は地域間)でオッズ比が同じであるという仮定である。
そこで、オッズ比を求めてみる。
library(vcd) odds.data <- oddsratio(data2, log = F) odds.data [1] 2.6923077 0.3152338 confint(odds.data) lwr upr [1,] 1.175082 6.1685245 [2,] 0.125531 0.7916157
で、これらが東京と大阪のオッズ比になるわけだが、どうも違うみたい(信頼区間が被っていない)。
というわけで、今回はMH検定すべきではない。となってしまった(例がよくなかったか)*1。
さて、こういうときには一般化線形モデルの登場となる。
(続く)
*1:ちなみにMantel-Haenszelの検定をRでやるときは、Mantelhaen.test関数でできる