<<目次へ


DerSimonian-Laird methodによるリスク差の統合



 まずgeneral variance-based methodによって均質性の検定のための統計量Q1を計算し,次式よりτを求めます。

 ただし, τ<0 ⇒ τ=0


統合リスク差の推定

 ただし,


統合リスク差の95%信頼区間


有意性の検定



☆Perlソースコード *使用ファイルはPeto methodのページで用いたものと同じ

注意!! "tauの計算"の部分での22.192393019482という値は均質性の検定統計量Q1であり,これはgeneral variance-based methodによってあらかじめ計算しておく必要がある。

#データファイルの読み込み
$pathname="Peto.dat";
open MYFILE, "$pathname";
while (<MYFILE>) {
        chomp;
        @{"dat$."} = split /\t/;
}
$k=$.;
close MYFILE;

#tauの計算
for($i=1;$i<=$k;$i++){
        $n1[$i]=@{"dat$i"}[0]+@{"dat$i"}[1];
        $n0[$i]=@{"dat$i"}[2]+@{"dat$i"}[3];
        $w[$i]=(((@{"dat$i"}[0]*@{"dat$i"}[1])/$n1[$i]**3)
                +((@{"dat$i"}[2]*@{"dat$i"}[3])/$n0[$i]**3))**-1;
        $sum_w+=$w[$i];
        $sum_w2+=$w[$i]**2;
}
$x=(22.192393019482-($k-1))/($sum_w-$sum_w2/$sum_w); #Q1=22.192393019482
$t=max($x);
print "t = $t \n";

#統合リスク差
for($i=1;$i<=$k;$i++){
        $ast_w[$i]=1/((@{"dat$i"}[0]*@{"dat$i"}[1])/$n1[$i]**3
                     +(@{"dat$i"}[2]*@{"dat$i"}[3])/$n0[$i]**3+$t);
        $RD[$i]=@{"dat$i"}[0]/$n1[$i]-@{"dat$i"}[2]/$n0[$i];
        $sum_astRD+=$ast_w[$i]*$RD[$i];
        $sum_ast+=$ast_w[$i];
}
$RDdl=$sum_astRD/$sum_ast;
print "RDdl = $RDdl \n";

#統合リスク差の95%信頼区間
$lower=$RDdl-1.96*sqrt(1/$sum_ast);
$upper=$RDdl+1.96*sqrt(1/$sum_ast);
print "95%C.I. = [$lower , $upper] \n";

#有意性の検定
$Q2=$RDdl**2*$sum_ast;
use Statistics::Distributions;
$a=Statistics::Distributions::chisqrprob(1,$Q2);
print "Q2 = $Q2 \t (df=1,p=$a) \n";


sub max{
        if(0<$_[0]){
                return($_[0]);
        }else{
                return(0);
        }
}


☆実行例

C:\Perl>sample.pl
t = 0.00113441366832866
RDdl = -0.0597674559896085
95%C.I. = [-0.0919055402317441 , -0.0276293717474729]
Q2 = 13.2862283973354    (df=1,p=0.00026736)

参考文献

丹後俊郎『メタ・アナリシス入門』朝倉書店 P81