二群の平均値の差を検討するような研究では,平均値($M$),標準偏差($SD$),サンプルサイズ($N$) という情報も提供される。
\[ g = \frac{M_e-M_c}{SD} \] $SD$ は,対照群の標準偏差($SD_c$)でもよいが,多くの場合は
\[ SD = \sqrt{\frac{(N_e-1)\ SD_e^2+(N_c-1)\ SD_c^2}{N_e+N_c-2}} \] が使われる。
\[ d = \left \{ 1-\frac{3}{4\ (N_e+N_c)-9} \right \} \ g \]
\[ d{+} = \frac{\displaystyle \sum_{i=1}^k \displaystyle \frac{d_i}{S_{est}^2(d_i)}} {\displaystyle \sum_{i=1}^k \displaystyle \frac{1}{S_{est}^2(d_i)}} \] ただし,$S_{est}^2(d_i)$ は個々の $d$ の分散で,
\[ S_{est}^2(d_i) = \frac{N_e+N_c}{N_e\ N_c} + \frac{d^2}{2\ (N_e+N_c)} \]
テストデータは,各研究で得られた,処理群と対照群の平均値,標準偏差,標本サイズ。 このデータは,前のページ(no01, no02)で使った P 値のデータの元になったものである。
Me SDe Ne Mc SDc Nc 1 130 15 10 140 20 5 2 120 12 40 140 15 20 3 140 20 30 150 25 30 4 160 20 40 145 35 20 R で書いてみると以下のようになる。 # effect size の統合 平均値の差 { Me <- c(130, 120, 140, 160) # 処理群 SDe <- c(15, 12, 20, 20) Ne <- c(10, 40, 30, 40) Mc <- c(140, 140, 150, 145) # 対照群 SDc <- c(20, 15, 25, 35) Nc <- c(5, 20, 30, 20) SD <- sqrt(((Ne-1)*SDe^2 + (Nc-1)*SDc^2) / (Ne+Nc-2)) g <- (Me-Mc)/SD d <- (1-3/(4*(Ne+Nc)-9))*g S2est <- (Ne+Nc)/(Ne*Nc)+d^2/(2*(Ne+Nc)) print(data.frame(Me, SDe, Ne, Mc, SDc, Nc, g, d)) cat("\naverage of effect sizes\n") cat("g =", mean(g), "\n") cat("d =", mean(d), "\n") cat("d+ =", sum(d/S2est) / sum(1/S2est), "\n") }
得られる結果は,
meta-analysis により,「処理群は対照群に比べて,標準偏差のほぼ半分に相当するだけ平均値が低い」ということがわかる。単に,P 値を統合した結果(no01, no02)よりは有用な情報を引き出している。Me SDe Ne Mc SDc Nc g d 1 130 15 10 140 20 5 -0.5988495 -0.5636230 2 120 12 40 140 15 20 -1.5315243 -1.5116344 3 140 20 30 150 25 30 -0.4417261 -0.4359894 4 160 20 40 145 35 20 0.5793887 0.5718642 average of effect sizes g = -0.4981778 d = -0.4848456 d+ = -0.4089653