DerSimonian-Laird methodによるオッズ比の統合
まずgeneral variance-based methodによって均質性の検定のための統計量Q1を計算し,次式よりτを求めます。
統合オッズ比の推定
統合オッズ比の95%信頼区間
有意性の検定を行う
☆Perlソースコード *使用ファイルはPeto methodのページのものと同じ
注意!! "tauの計算"の部分での21.4797764115429という値は均質性の検定統計量Q1であり,これはgeneral variance-based methodによってあらかじめ計算しておく必要がある。
#データファイルの読み込み $pathname="Peto.dat"; open MYFILE, "$pathname"; while (<MYFILE>) { chomp; @{"dat$."} = split /\t/; } $k=$.; close MYFILE; for($i=1;$i<=$k;$i++){ $w[$i]=(1/@{"dat$i"}[0]+1/@{"dat$i"}[1]+1/@{"dat$i"}[2]+1/@{"dat$i"}[3])**-1; $logOR[$i]=log((@{"dat$i"}[0]*@{"dat$i"}[3])/(@{"dat$i"}[1]*@{"dat$i"}[2])); $sum+=$w[$i]; $sum2+=$w[$i]**2; } #tauの計算 $x=(21.4797764115429-($k-1))/($sum-$sum2/$sum); #Q1=21.4797764115429 $t=max($x); print "t = $t \n"; #統合オッズ比の推定 for($i=1;$i<=$k;$i++){ $ast_w[$i]=1/((1/@{"dat$i"}[0]+1/@{"dat$i"}[1]+1/@{"dat$i"}[2]+1/@{"dat$i"}[3])+$t); $sum3+=$ast_w[$i]*$logOR[$i]; $sum4+=$ast_w[$i]; } $ORdl=exp($sum3/$sum4); print "ORdl = $ORdl \n"; #統合オッズ比の95%信頼区間 $upper=exp(log($ORdl)+1.96*sqrt(1/$sum4)); $lower=exp(log($ORdl)-1.96*sqrt(1/$sum4)); print "95%C.I. = [$lower , $upper] \n"; #有意性の検定 $Q2=(log($ORdl)**2)*$sum4; use Statistics::Distributions; $a=Statistics::Distributions::chisqrprob(1,$Q2); print "Q2 = $Q2\t(df=$k-1,p=$a)\n"; sub max{ if(0<$_[0]){ return($_[0]); }else{ return(0); } }
☆実行例
C:\Perl>sample.pl t = 0.0168629918871095 ORdl = 0.790750930258783 95%C.I. = [0.694891666782952 , 0.899833835394715] Q2 = 12.6793960292967 (df=17-1,p=0.00036971)
参考文献
[1]丹後俊郎『メタ・アナリシス入門-エビデンスの統合をめざす統計手法-』朝倉書店 P72, 73