平均値の差を統合する方法
| 治療群 | 対照群 | |||||
| 研究名 | 例数 n1i | 平均値 mean1i | 不偏分散 var1i | 例数 n2i | 平均値 mean2i | 不偏分散 var2i |
| case1 | n11 | mean11 | var11 | n21 | mean21 | var21 |
| case2 | n12 | mean12 | var12 | n22 | mean22 | var22 |
| case3 | n13 | mean13 | var13 | n23 | mean23 | var23 |
| ・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
・ ・ ・ |
| case_k | n1k | mean1k | var1k | n2k | mean2k | var2k |
統合平均値の差の推定
ここに,
ただし,
統合平均値の差の95%信頼区間
均質性の検定
有意性の検定
☆Perlプログラム
⇒ 使用ファイル 丹後俊郎「メタ・アナリシス入門」朝倉書店p83-表3.4より引用
#データファイルの読み込み
$pathname="mean.dat";
open MYFILE, "$pathname";
while (<MYFILE>) {
chomp;
@{"case$."} = split /\t/;
}
$k=$.;
close MYFILE;
#下処理
for($i=1;$i<=$k;$i++){
$n1[$i]=@{"case$i"}[0];
$mean1[$i]=@{"case$i"}[1];
$var1[$i]=@{"case$i"}[2];
$n2[$i]=@{"case$i"}[3];
$mean2[$i]=@{"case$i"}[4];
$var2[$i]=@{"case$i"}[5];
}
#統合平均値の差の推定
for($i=1;$i<=$k;$i++){
$s[$i]=(($n1[$i]-1)*$var1[$i]+($n2[$i]-1)*$var2[$i])/($n1[$i]+$n2[$i]-2);
$w[$i]=((1/$n1[$i]+1/$n2[$i])*$s[$i])**-1;
$AD[$i]=$mean1[$i]-$mean2[$i];
$sum_wAD+=$w[$i]*$AD[$i];
$sum_w+=$w[$i];
}
$ADm=$sum_wAD/$sum_w;
print "ADm = $ADm \n";
#統合平均値の差の95%信頼区間
$lower=$ADm-1.96*sqrt(1/$sum_w);
$upper=$ADm+1.96*sqrt(1/$sum_w);
print "95%C.I. = [$lower , $upper] \n";
#均質性の検定
for($i=1;$i<=$k;$i++){
$Q1+=$w[$i]*($AD[$i]-$ADm)**2;
}
use Statistics::Distributions;
$a=Statistics::Distributions::chisqrprob($k-1,$Q1);
print "Q1 = $Q1 \t (df=$k-1,p=$a) \n";
#有意性の検定
$Q2=$ADm**2*$sum_w;
$b=Statistics::Distributions::chisqrprob(1,$Q2);
print "Q2 = $Q2 \t (df=1,p=$b) \n";
☆実行例
C:\Perl>sample.pl ADm = -3.48258732038898 95%C.I. = [-5.0321989241595 , -1.93297571661847] Q1 = 241.049677879624 (df=9-1,p=0.000000000000000000000000000000000000000000000013573) Q2 = 19.403070071715 (df=1,p=0.000010584)
参考文献
丹後俊郎『メタ・アナリシス入門』朝倉書店 P83,84