<<目次へ


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