# varor.s : Variance-based method for odds ratio # + cumulative meta analysis # dat<-scan("c:/MetaAnalysis/Rcode/beta2.txt",list(a=0,n1=0,c=0,n0=0,d=0)) k<-length(dat$a) # # parameters for figures xposi <- 4 # x-axis for titles yup <- 20 # upper limit of y-axis ylow <- -3 # lower limit of y-axis label<-rep("",k) label[1]<-"Reynolds" label[2]<-"Wilhelmesson" label[3]<-"Ahlmark" label[4]<-"Multicenter Int." label[5]<-"Baber" label[6]<-"Rehnqvist" label[7]<-"Norwegian" label[8]<-"Taylor" label[9]<-"Hansteen" label[10]<-"BHAT" label[11]<-"Julian" label[12]<-"Australian/Swedis" label[13]<-"Manger Cats" label[14]<-"EIS" label[15]<-"Rehnqvist (3y)" label[16]<-"LIT" label[17]<-"Boissel" # # par(mar=c(5,4,4,3)) dd<-dat ai<-dat$a bi<-dat$n1-dat$a ci<-dat$c di<-dat$n0-dat$c tn<-dat$n1+dat$n0 lgor<-log(ai*di/bi/ci) se<-sqrt(1/ai+1/bi+1/ci+1/di) low<-exp(lgor-1.96*se) upp<-exp(lgor+1.96*se) # ---------- individual graph ------------------ id<-k:1 ind<-1:k res<-0.3 plot(exp(lgor),id,ylim=c(ylow, yup), log="x", xlim=c(0.1,10),yaxt="n",pch=" ", ylab="Citation",xlab="Odds ratio") title(main=" Variance-based method ( circles are cumulative MA ) ") symbols(exp(lgor),id+res,squares=sqrt(tn), add=T,inches=0.20) for (i in 1:k){ j<-k-i+1 x<-c(low[i],upp[i]) y<-c(j,j)+0.3 lines(x,y,type="l") text(xposi ,i, label[j]) } # ----- cumulative graph ---- hh<-1:k xh<-hh xhl<-hh xhu<-hh for (ir in 1:k){ dat$a <-dd$a[ind<=ir] dat$n1<-dd$n1[ind<=ir] dat$c <-dd$c[ind<=ir] dat$n0<-dd$n0[ind<=ir] ai<-dat$a bi<-dat$n1-dat$a ci<-dat$c di<-dat$n0-dat$c tn<-dat$n1+dat$n0 n1<-dat$n1 n0<-dat$n0 lgor<-log(ai*di/bi/ci) se<-sqrt(1/ai+1/bi+1/ci+1/di) hh[ir]<-sum(tn) # ----- fixed effects ---- w<-1/se/se sw<-sum(w) varor<-exp( sum(lgor*w)/sw ) varorl<-exp( log(varor)-1.96*sqrt(1/sw)) varoru<-exp( log(varor)+1.96*sqrt(1/sw)) q1<-sum(w*(lgor-log(varor))^2) df1<-k-1 pval1<- 1-pchisq(q1,df1) # I2 <- (q1-df1)/q1 * 100 # q2<-log(varor)^2*sw df2<-1 pval2<- 1-pchisq(q2,df2) # ----- random-effects ---- if (ir == 1){ varord<-exp( lgor[1] ) varordl<-low[1] varordu<-upp[1] } if (ir > 1){ tau2<-(q1-(k-1))/(sw-sum(w*w)/sw) tau2<-max(0,tau2) wx<-1/(tau2+se*se) swx<-sum(wx) varord<-exp( sum(lgor*wx)/swx ) varordl<-exp(log(varord)-1.96*sqrt(1/swx)) varordu<-exp(log(varord)+1.96*sqrt(1/swx)) qx2<-log(varord)^2*swx pvalx2<- 1-pchisq(qx2,df2) } # -- graph of cumulative meta ---- j<- k-ir+1 x<-c(varordl, varordu) xh[ir]<- varord xhl[ir]<-varordl xhu[ir]<-varordu y<-c(j,j) lines(x,y,type="l",lty=3) } # -------- graph ---------------- symbols(xh,id,circles=sqrt(hh), add=T,inches=0.10) x<-c(varorl,varoru) y<-c(-1, -1) lines(x,y,type="b") x<-c(varordl,varordu) y<-c(-2, -2) lines(x,y,type="b",lty=1) abline(v=c(varor,varord), lty=2) abline(v=1) text(xposi, -1, "Combined:fixed") text(xposi, -2, "Combined:random") # ------ output variables ------- out <- round( c(varor, varorl, varoru), 4) outq1<- round( c(q1, df1, pval1), 6) outq2<- round( c(q2, df2, pval2), 6) outR<- round( c(varord, varordl, varordu), 4) outq2R<- round( c(qx2, df2, pvalx2), 6)