多次元の分割表

コンサルで多次元の分割表を考える機会があったので、メモを残す。


多次元の分割表を考えるうえで陥ってしまいがちなのが、「シンプソンのパラドックス」。要するに、多次元の分割表を勝手に統合したり、分割したりすると、誤った結果を導いてしまうかもしれない。よって、そのままの形で解析せよ、ということ。


 

東京 大阪

健康 病気 健全病気
サクラ 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関数でできる