二群の平均値の差を検討するような研究では,平均値($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