DerSimonian-Laird methodによるリスク比の統合
まずgeneral variance-based methodによって均質性の検定のための統計量Q1を計算し,次式よりτを求めます。
ただし, τ<0 ⇒ τ=0
統合リスク比の推定
統合リスク比の95%信頼区間
有意性の検定
☆Perlソースコード *使用ファイルはPeto methodのページのものと同じ
注意!! "tauの計算"の部分での22.6598843820859という値は均質性の検定統計量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"}[1]/(@{"dat$i"}[0]*$n1[$i])+
@{"dat$i"}[3]/(@{"dat$i"}[2]*$n0[$i]))**-1;
$sum+=$w[$i];
$sum2+=$w[$i]**2;
}
$x=(22.6598843820859-($k-1))/($sum-$sum2/$sum); #Q1=22.6598843820859
$t=max($x);
print "t = $t \n";
#統合リスク比の推定
for($i=1;$i<=$k;$i++){
$ast_w[$i]=1/((@{"dat$i"}[1]/(@{"dat$i"}[0]*$n1[$i])+
@{"dat$i"}[3]/(@{"dat$i"}[2]*$n0[$i]))+$t);
$logRR[$i]=log((@{"dat$i"}[0]/$n1[$i])/(@{"dat$i"}[2]/$n0[$i]));
$sum3+=$ast_w[$i]*$logRR[$i];
$sum4+=$ast_w[$i];
}
$RRdl=exp($sum3/$sum4);
print "RRdl = $RRdl \n";
#統合リスク比の95%信頼区間
$lower=exp(log($RRdl)-1.96*sqrt(1/$sum4));
$upper=exp(log($RRdl)+1.96*sqrt(1/$sum4));
print "95%C.I. = [$lower , $upper] \n";
#有意性の検定
$Q2=log($RRdl)**2*$sum4;
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.00563638624919127 RRdl = 0.89897423421123 95%C.I. = [0.837989866079219 , 0.964396714672525] Q2 = 8.82970689374449 (df=1,p=0.0029637)
参考文献
丹後俊郎『メタ・アナリシス入門』朝倉書店 P76,77