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