general variance-based methodによるリスク比の統合
統合リスク比の推定
ただし,
統合リスク比の95%信頼区間
均質性の検定
有意性の検定
〜Perlソースコード〜 使用ファイルはPeto methodのページを参照
#データファイルの読み込み
$pathname="Peto.dat";
open MYFILE, "$pathname";
while (<MYFILE>) {
chomp;
@{"dat$."} = split /\t/;
}
$k=$.;
close MYFILE;
#統合リスク比の計算
for($i=1;$i<=$k;$i++){
$n1[$i]=@{"dat$i"}[0]+@{"dat$i"}[1];
$n0[$i]=@{"dat$i"}[2]+@{"dat$i"}[3];
$logRR[$i]=log((@{"dat$i"}[0]/$n1[$i])/(@{"dat$i"}[2]/$n0[$i]));
$w[$i]=(@{"dat$i"}[1]/(@{"dat$i"}[0]*$n1[$i])+
@{"dat$i"}[3]/(@{"dat$i"}[2]*$n0[$i]))**-1;
$sum+=$w[$i]*$logRR[$i];
$sum2+=$w[$i];
}
$RRv=exp($sum/$sum2);
print "RRv = $RRv \n";
#統合リスク比の95%信頼区間
$lower=exp(log($RRv)-1.96*sqrt(1/$sum2));
$upper=exp(log($RRv)+1.96*sqrt(1/$sum2));
print "95%C.I. = [$lower , $upper] \n";
#均質性の検定
for($i=1;$i<=$k;$i++){
$Q1+=$w[$i]*($logRR[$i]-log($RRv))**2;
}
use Statistics::Distributions;
$a=Statistics::Distributions::chisqrprob($k-1,$Q1);
print "Q1 = $Q1\t(df=$k-1,p=$a) \n";
#有意性の検定
$Q2=log($RRv)**2*$sum2;
$b=Statistics::Distributions::chisqrprob(1,$Q2);
print "Q2 = $Q2\t(df=1,p=$b) \n";
実行例
C:\Perl>sample.pl RRv = 0.899874923481587 95%C.I. = [0.852547969286044 , 0.949829108840793] Q1 = 22.6598843820859 (df=17-1,p=0.12313) Q2 = 14.6488130170813 (df=1,p=0.00012952)
参考文献
丹後俊郎『メタ・アナリシス入門』朝倉書店 P75