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