複数の検定結果を統合する手法(1) Stouffer-method (Rosenthal, 1984)
対象とする研究は「片側検定」である。
\[ p_i \Rightarrow z_i \] 逆の結論を与えた研究の $P$ 値を変換するときには注意(求められた $Z$ 値の符号を逆にする)
\[ Z_{overall} = \frac{\displaystyle \sum_{i=1}^k z_i}{\sqrt{k}} \]
\[ Z_{overall} \Rightarrow p_{overall} \]
これを R で書いてみると以下のようになる。
{ p <- c(0.1662, 0.0000023, 0.04559, -0.03981) # テストデータ z <- ifelse(p > 0, qnorm(abs(p), lower.tail=FALSE), -qnorm(abs(p), lower.tail=FALSE)) z.overall <- sum(z)/sqrt(length(p)) p.overall <- pnorm(z.overall, lower.tail=FALSE) data.frame(p.i=p, z.i=z) cat("z(overall) =", z.overall, "\n") cat("p(overall) =", pnorm(z.overall, lower.tail=FALSE), "\n }
テストデータ p は,各研究で得られた $P$ 値(片側検定)。4番目の $-0.0398100$ は,他の研究と逆の結論を与えたもので,スクリプトの都合でそのような場合には $P$ 値に負の符号をつけて用意する(元の $0.0398100$ を $Z$ に 変換してその符号を負にすることなどと同じ意味)。 得られる結果は,
4 $p_{overall} = 0.003035464$ を見ることで,4つの研究成果をまとめて,「有意差あり」という結論を得る。z(overall) = 2.743926 p(overall) = 0.00303546
さらに,「どの程度の有意な差であるか」を検討する必要がある。
参考文献