標準化された平均値の差を統合する方法
統合平均値の差の推定
ここに,
統合平均値の差の95%信頼区間
均質性の検定
有意性の検定
☆Perlプログラム *使用ファイルはこちらのページ
#データファイルの読み込み $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); $STD[$i]=($mean1[$i]-$mean2[$i])/sqrt($s[$i]); $w[$i]=(($n1[$i]+$n2[$i])/($n1[$i]*$n2[$i]) +($STD[$i]**2)/(2*($n1[$i]+$n2[$i])))**-1; $sum_wSTD+=$w[$i]*$STD[$i]; $sum_w+=$w[$i]; } $STDm=$sum_wSTD/$sum_w; print "STDm = $STDm \n"; #統合平均値の差の95%信頼区間 $lower=$STDm-1.96*sqrt(1/$sum_w); $upper=$STDm+1.96*sqrt(1/$sum_w); print "95%C.I. = [$lower , $upper] \n"; #均質性の検定 for($i=1;$i<=$k;$i++){ $Q1+=$w[$i]*($STD[$i]-$STDm)**2; } use Statistics::Distributions; $a=Statistics::Distributions::chisqrprob($k-1,$Q1); print "Q1 = $Q1 \t (df=$k-1,p=$a) \n"; #有意性の検定 $Q2=$STDm**2*$sum_w; $b=Statistics::Distributions::chisqrprob(1,$Q2); print "Q2 = $Q2 \t (df=1,p=$b) \n";
☆実行例
C:\Perl>sample.pl STDm = -0.412561851769232 95%C.I. = [-0.534276275516688 , -0.290847428021775] Q1 = 125.180239049059 (df=9-1,p=0.000000000000000000000028171) Q2 = 44.1373427810714 (df=1,p=0.000000000030612)
参考文献
丹後俊郎『メタ・アナリシス入門』朝倉書店 P89