<<目次へ


general variance-based methodによるオッズ比の統合



統合オッズ比の推定

 ただし,


統合オッズ比の95%信頼区間


均質性の検定


有意性の検定



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

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

#wiとlogORiの計算
for($i=1;$i<=$size;$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]));
}

#統合オッズ比の推定値
for($i=1;$i<=$size;$i++){
        $sum+=($w[$i]*$logOR[$i]);
        $sum2+=$w[$i];
}
$ORv=exp($sum/$sum2);
print "ORv = $ORv \n";

#統合オッズ比の95%信頼区間
$lower=exp(log($ORv)-1.96*sqrt(1/$sum2));
$upper=exp(log($ORv)+1.96*sqrt(1/$sum2));
print "95%C.I. = [$lower , $upper] \n";

#均質性の検定
for($i=1;$i<=$size;$i++){
        $Q_1+=$w[$i]*($logOR[$i]-log($ORv))**2;
}
use Statistics::Distributions;
$a=Statistics::Distributions::chisqrprob($size-1,$Q_1);
print "Q_1 = $Q_1 \t (df=$size-1,p=$a) \n";

#有意性の検定
$Q_2=log($ORv)**2*$sum2;
$b=Statistics::Distributions::chisqrprob(1,$Q_1);
print "Q_2 = $Q_2 \t (df=1,p=$b) \n";


実行例

C:\Perl>vbm_odds.pl
ORv = 0.783085002584917
95%C.I. = [0.70670451464622 , 0.867720678960714]
Q_1 = 21.4797764115429   (df=17-1,p=0.16080)
Q_2 = 21.8063398450552   (df=1,p=0.0000035758)



参考文献

[1]丹後俊郎『メタ・アナリシス入門-エビデンスの統合をめざす統計手法-』朝倉書店 P67, 68