薬指使えないだけで、こうも作業効率が下がるとは、、、
前回のおさらいから
odds ratioの比較に、ただただ区間推定して比較してみたが、vcdパッケージには、woolf検定(層ごとにオッズ比は同じという帰無仮説を検定)をしてくれるパッケージもある。
library(vcd) woolf_test(data2) Woolf-test on Homogeneity of Odds Ratios (no 3-Way assoc.) data: data2 X-squared = 11.1711, df = 1, p-value = 0.0008308
と層ごとに違うんじゃないかという結果が返される。
woolf_testってアンダーバーが関数に含まれていることに気付かず、何回か
エラー: 関数 "woolf.test" を見つけることができませんでした
という、表示をしてしまった。
さて、いわゆる3次元表を一般化線形モデルを使って、Rでやるためには2つの方法がある。
- ポワソン分布を誤差分布として、解析
- (おそらく最も)注目したいカテゴリを目的変数とみなし、その変数を2値応答数として(cbind関数を使って)解析
まずはポワソン分布を誤差分布とした解析から。
データをmatrix構造からdata frame構造にする(関数があるかもしれませんが、とりあえず自力でやった)
count <- c(45, 13, 27, 21, 19, 17, 39, 11) pop <- c(rep("tokyo", 4), rep("osaka", 4)) spi <- c(rep(c("saku", "saku", "ume", "ume"), 2)) state <- c(rep(c("ok", "out"), 4)) data3 <- data.frame(count, pop, spi, state) data3 count pop spi state 1 45 tokyo saku ok 2 13 tokyo saku out 3 27 tokyo ume ok 4 21 tokyo ume out 5 19 osaka saku ok 6 17 osaka saku out 7 39 osaka ume ok 8 11 osaka ume out mosaicplot(xtabs(count ~ pop + spi + state, data3), color = TRUE, main = NULL, las=1)
これを単純にポワソン分布を誤差構造にした、3次の交互作用を含めたモデル(いわゆる飽和モデル)を当てはめると、
fitglm <- glm(count ~ pop * spi * state, data = data3, family = poisson) fitglm Call: glm(formula = count ~ pop * spi * state, family = poisson, data = data3) Coefficients: (Intercept) poptokyo spiume 2.9444 0.8622 0.7191 stateout poptokyo:spiume poptokyo:stateout -0.1112 -1.2299 -1.1305 spiume:stateout poptokyo:spiume:stateout -1.1544 2.1448 Degrees of Freedom: 7 Total (i.e. Null); 0 Residual Null Deviance: 41.49 Residual Deviance: -1.599e-14 AIC: 55.32
となる。すべてのパラメータを使って推定しているため、自由度は0である。これを高次の交互作用を取り除いたモデルと逸脱度分析すると、
fitglm2 <- update(fitglm, ~. - pop:spi:state) anova(fitglm, fitglm2, test = "Chi") Analysis of Deviance Table Model 1: count ~ pop * spi * state Model 2: count ~ pop + spi + state + pop:spi + pop:state + spi:state Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 0 0.00 2 1 11.54 -1 -11.54 0.0006812 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
交互作用が重要な説明を与えている、つまり東京と大阪で、種の罹病率が異なる(共通オッズ比が異なるという前回の結果と一致)のではないかと考察することができる。
(続く)