<<目次へ


平均値の差を統合する方法



治療群 対照群
研究名 例数 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