capture log close set more off log using snasug, replace postutil clear postfile compfile str30 Model nparm nobs LL BIC AIC Deviance /// pet_sen pet_spe pet_senlo pet_spelo pet_senhi pet_spehi pet_sense pet_spese /// ct_sen ct_spe ct_senlo ct_spelo ct_senhi ct_spehi ct_sense ct_spese using compresults, replace use "F:\snasug.dta", clear version 9 gen study = _n *Study-Specific Classification Probabilities And 95% Confidence Intervals gen alph=(100-95)/200 gen psens=tp0/(tp0+fn0) gen psenslo = invbinomial(tp0+fn0,tp0,alph) gen psenshi = invbinomial(tp0+fn0,tp0,1-alph) gen psensse=(psenshi-psenslo)/(2*invnorm(0.975)) gen pfpr=fp0/(fp0+tn0) gen pspec=tn0/(tn0+fp0) gen pspeclo = invbinomial(tn0+fp0,tn0,alph) gen pspechi = invbinomial(tn0+fp0,tn0,1-alph) gen pspecse=(pspechi-pspeclo)/(2*invnorm(0.975)) gen csens=tp1/(tp1+fn1) gen csenslo = invbinomial(tp1+fn1,tp1,alph) gen csenshi = invbinomial(tp1+fn1,tp1,1-alph) gen csensse=(csenshi-csenslo)/(2*invnorm(0.975)) gen cfpr=fp1/(fp1+tn1) gen cspec=tn1/(tn1+fp1) gen cspeclo = invbinomial(tn1+fp1,tn1,alph) gen cspechi = invbinomial(tn1+fp1,tn1,1-alph) gen cspecse=(cspechi-cspeclo)/(2*invnorm(0.975)) version 10 #delimit; twoway (pci 0 0 1 1, clpat(solid) clc(black))(pcspike psens pfpr csens cfpr, lwidth(vvthin) lpatt(solid) lcol(black*5)) (scatter psens pfpr, mlab(study) msize(*1.5) mlabsize(*.5) mlabpos(0) mcolor(blue*2) mlabc(black*2) msym(Oh) sort) (scatter csens cfpr, mlabel(study) mlabpos(0) mlabsize(*.5) mlabc(black*2) mcolor(red*2) msize(*1.5) msym(Sh) sort) , legend(order(3 "PET Observed Data" 4 "CT Observed Data" 1 "Null Line") size(*.75) symxsize(2) pos(2) col(1)) aspect(1) xsc(range(0 1)) ysc(range(0 1)) xla(0(.1)1, nogrid format(%7.1f) labsize(*0.5)) yla(0(.1)1, nogrid angle(horizontal) format(%7.1f) labsize(*0.5)) plotregion(margin(zero)) xti(1-Specificity, size(*0.75)) yti(Sensitivity, size(*0.75)); #delimit cr graph2tex, epsfile(bivroc) *Multi-column Forest Plot set graphics off tempvar obs wgt1 wgt2 wgt3 wgt4 wgt5 gen `obs' = _n local mscale2 = 0.5 count local max1 = r(N) label value `obs' obs forval i = 1/`max1'{ local value = `"`value' `i'"' label define obs `i' "`=Author[`i']'", modify } gen line=_n gen textx=0 local n1=_N+2 local n2=_N+1 local ylabopt "labsize(*.75) tl(*0) labgap(*3)" local xxline "xline(0.25 0.5 0.75, lpattern(dash) lwidth(thin))" local xlab1 "xlab(0(.25)1, format(%5.2f) labsize(*.50))" gen `wgt1' = 1/(psensse *psensse) #delimit ; twoway (rspike psenslo psenshi `obs', ylabel(`"`value'"', valuelabel labsize(*.75) tl(*0) angle(360)) hor s(i) lpat(blank) `xlab1')(scatter `obs' psens[aw = `wgt1'], ms(i) msize(`mscale2') mcolor(gs10)), legend(off) xtitle("", size(*.5)) yscale(noline) xscale(off fill) plotregion(style(none)) ytitle("", size(*.5)) title("Author", size(*.5) pos(1)) fxsize(0) name(mplot, replace); #delimit cr #delimit ; twoway (rspike psenslo psenshi `obs', ylabel(`"`value'"', nolabel `ylabopt' angle(360)) hor s(i) blpattern(solid) blwidth(medthick) blcolor(black) `xlab1') (scatter `obs' psens [aw = `wgt1'], ms(O) msize(`mscale2') mcolor(gs10)) (scatter `obs' psens, ms(o) msize(*`mscale') mcolor(black)), ytitle("", size(*.5)) legend(off) xtitle("", size(*.5)) title("PET Sensitivity", size(*.5) justification(left)) name(mplot1, replace) `xxline' ; #delimit cr gen `wgt2' = 1/(pspecse*pspecse) #delimit ; twoway (rspike pspeclo pspechi `obs', ylabel(`"`value'"', nolabel `ylabopt' angle(360)) hor s(i) blpattern(solid) blwidth(medthick) blcolor(black) `xlab1') (scatter `obs' pspec [aw = `wgt2'], ms(O) msize(`mscale2') mcolor(gs10)) (scatter `obs' pspec, ms(o) msize(*`mscale') mcolor(black)), legend(off) xtitle("", size(*.5)) ytitle("", size(*.5)) title("PET Specificity", size(*.5) justification(left)) nodraw name(mplot2, replace) `xxline' ; #delimit cr gen `wgt3' = 1/(csensse*csensse) #delimit ; twoway (rspike csenslo csenshi `obs', ylabel(`"`value'"', nolabel `ylabopt' angle(360)) hor s(i) blpattern(solid) blwidth(medthick) blcolor(black) `xlab1')(scatter `obs' csens [aw = `wgt3'], ms(O) msize(`mscale2') mcolor(gs10))(scatter `obs' csens, ms(o) msize(*`mscale') mcolor(black)), nodraw legend(off) title("CT Sensitivity", size(*.5) justification(left)) ytitle("", size(*.5)) `xxline' xtitle("", size(*.5)) name(mplot3, replace) ; #delimit cr gen `wgt4' = 1/(cspecse*cspecse) #delimit ; twoway (rspike cspeclo cspechi `obs', ylabel(`"`value'"', nolabel `ylabopt' angle(360)) hor s(i) blpattern(solid) blwidth(medthick) blcolor(black) `xlab1')(scatter `obs' cspec [aw = `wgt4'], ms(O) msize(`mscale2') mcolor(gs10))(scatter `obs' cspec, ms(o) msize(*`mscale') mcolor(black)) , nodraw legend(off) xtitle("", size(*.5)) ytitle("", size(*.5)) title("CT Specificity", size(*.5) justification(left)) `xxline' name(mplot4, replace); #delimit cr set graphics on nois graph combine mplot mplot1 mplot2 mplot3 mplot4, row(1) ysize(`vsize') reshape long tp fp fn tn, i(study) j(testtype) gen num0 = tp + fn gen num1 = fp + tn gen d0 = tp gen d1 = tn gen i = _n reshape long d num, i(i) j(dtruth) tab dtruth, gen(disgrp) forvalues i=1/2 { g testtype_`i' = disgrp`i'*testtype } rename disgrp1 logitse rename disgrp2 logitsp rename d ttruth save "f:\BIVARIATE MODELS\PETCTbiv.dta", replace use "f:\BIVARIATE MODELS\PETCTbiv.dta", clear nois di "" nois di "" nois di as text "{title: Fitting Bivariate Model with Test Type as Fixed Effect Covariate}" nois di "" nois di "" xtmelogit (ttruth logitse logitsp testtype_1 testtype_2, noc) /// (study: logitse logitsp, noc cov(unstr)), bin(num) nolr variance nolog nohead estimates store mod1 local model Bivariate-FECov local ll1 = e(ll) local k1 = e(k) local NOBS1 = e(N) local dev1 = -2 * `ll1' local AIC1 = -2 * `ll1' + 2*`k1' local BIC1= -2 * `ll1' + `k1' * log(`NOBS1') estimates restore mod1 nlcom (pet_sen:invlogit(_b[logitse]))/* */(pet_spe:invlogit(_b[logitsp]))/* */(pet_lrp: invlogit(_b[logitse])/(1-invlogit(_b[logitsp])))/* */(pet_lrn: (1-invlogit(_b[logitse]))/invlogit(_b[logitsp]))/* */(pet_ldor:(_b[logitse]+_b[logitsp])) /* */(pet_dor:exp(_b[logitse]+_b[logitsp]))/* */(ct_sen: invlogit(_b[logitse] + _b[testtype_1]))/* */(ct_spe: invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_lrp: invlogit(_b[logitse] + _b[testtype_1])/(1-invlogit(_b[logitsp] + _b[testtype_2])))/* */(ct_lrn: (1-invlogit(_b[logitse] + _b[testtype_1]))/invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_ldor:((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))) /* */(ct_dor: exp((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k1') (`NOBS1') (`ll1') (`BIC1') (`AIC1') (`dev1') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCTbiv.dta", clear nois di "" nois di "" nois di as text "{title: Fitting Laplace Bivariate Model with Test Type as Fixed Effect Covariate}" nois di "" nois di "" use "f:\BIVARIATE MODELS\PETCTbiv.dta", clear nois di "" nois di "" nois di as text "{title: Fitting Bivariate Model with Test Type as Fixed Effect Covariate}" nois di "" nois di "" xtmelogit (ttruth logitse logitsp testtype_1 testtype_2, noc) /// (study: logitse logitsp, noc cov(unstr)), bin(num) nolr laplace variance nolog nohead estimates store mod2 local model Bivariate-FECov local ll1 = e(ll) local k1 = e(k) local NOBS1 = e(N) local dev1 = -2 * `ll1' local AIC1 = -2 * `ll1' + 2*`k1' local BIC1= -2 * `ll1' + `k1' * log(`NOBS1') estimates restore mod2 nlcom (pet_sen:invlogit(_b[logitse]))/* */(pet_spe:invlogit(_b[logitsp]))/* */(pet_lrp: invlogit(_b[logitse])/(1-invlogit(_b[logitsp])))/* */(pet_lrn: (1-invlogit(_b[logitse]))/invlogit(_b[logitsp]))/* */(pet_ldor:(_b[logitse]+_b[logitsp])) /* */(pet_dor:exp(_b[logitse]+_b[logitsp]))/* */(ct_sen: invlogit(_b[logitse] + _b[testtype_1]))/* */(ct_spe: invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_lrp: invlogit(_b[logitse] + _b[testtype_1])/(1-invlogit(_b[logitsp] + _b[testtype_2])))/* */(ct_lrn: (1-invlogit(_b[logitse] + _b[testtype_1]))/invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_ldor:((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))) /* */(ct_dor: exp((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k1') (`NOBS1') (`ll1') (`BIC1') (`AIC1') (`dev1') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCTbiv.dta", clear nois di "" nois di "" nois di as text "{title: Fitting Bivariate Model with Test Type as Random Effect Covariate}" nois di "" nois di "" local model Bivariate-RECov xtmelogit (ttruth logitse logitsp testtype_1 testtype_2, noc) /// (study: logitse logitsp, noc cov(unstr))(study: testtype, noc), bin(num) nolr variance estimates store mod3 local model Bivariate-FECov local ll2 = e(ll) local k2 = e(k) local NOBS2 = e(N) local dev2 = -2 * `ll2' local AIC2 = -2 * `ll2' + 2*`k2' local BIC2= -2 * `ll2' + `k2' * log(`NOBS2') estimates restore mod3 nlcom (pet_sen:invlogit(_b[logitse]))/* */(pet_spe:invlogit(_b[logitsp]))/* */(pet_lrp: invlogit(_b[logitse])/(1-invlogit(_b[logitsp])))/* */(pet_lrn: (1-invlogit(_b[logitse]))/invlogit(_b[logitsp]))/* */(pet_ldor:(_b[logitse]+_b[logitsp])) /* */(pet_dor:exp(_b[logitse]+_b[logitsp]))/* */(ct_sen: invlogit(_b[logitse] + _b[testtype_1]))/* */(ct_spe: invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_lrp: invlogit(_b[logitse] + _b[testtype_1])/(1-invlogit(_b[logitsp] + _b[testtype_2])))/* */(ct_lrn: (1-invlogit(_b[logitse] + _b[testtype_1]))/invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_ldor:((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))) /* */(ct_dor: exp((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k2') (`NOBS2') (`ll2') (`BIC2') (`AIC2') (`dev2') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCTbiv.dta", clear nois di "" nois di "" nois di as text "{title: Fitting Laplace Bivariate Model with Test Type as Random Effect Covariate}" nois di "" nois di "" xtmelogit (ttruth logitse logitsp testtype_1 testtype_2, noc) /// (study: logitse logitsp, noc cov(unstr))(study: testtype, noc), bin(num) laplace nolr variance estimates store mod4 local model Bivariate-FECov local ll2 = e(ll) local k2 = e(k) local NOBS2 = e(N) local dev2 = -2 * `ll2' local AIC2 = -2 * `ll2' + 2*`k2' local BIC2= -2 * `ll2' + `k2' * log(`NOBS2') estimates restore mod4 nlcom (pet_sen:invlogit(_b[logitse]))/* */(pet_spe:invlogit(_b[logitsp]))/* */(pet_lrp: invlogit(_b[logitse])/(1-invlogit(_b[logitsp])))/* */(pet_lrn: (1-invlogit(_b[logitse]))/invlogit(_b[logitsp]))/* */(pet_ldor:(_b[logitse]+_b[logitsp])) /* */(pet_dor:exp(_b[logitse]+_b[logitsp]))/* */(ct_sen: invlogit(_b[logitse] + _b[testtype_1]))/* */(ct_spe: invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_lrp: invlogit(_b[logitse] + _b[testtype_1])/(1-invlogit(_b[logitsp] + _b[testtype_2])))/* */(ct_lrn: (1-invlogit(_b[logitse] + _b[testtype_1]))/invlogit(_b[logitsp] + _b[testtype_2]))/* */(ct_ldor:((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))) /* */(ct_dor: exp((_b[logitse] + _b[testtype_1]) + (_b[logitsp] + _b[testtype_2]))), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k2') (`NOBS2') (`ll2') (`BIC2') (`AIC2') (`dev2') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCT.dta", clear gen num1 = tp0 + fn0 gen num2 = fp0 + tn0 gen num3 = tp1 + fn1 gen num4 = fp1 + tn1 gen d1 = tp0 gen d2 = tn0 gen d3 = tp1 gen d4 = tn1 gen study = _n reshape long d num, i(study) j(dtruth) tab dtruth, gen(disgrp) rename disgrp1 lgtsePET rename disgrp2 lgtspPET rename disgrp3 lgtseCT rename disgrp4 lgtspCT rename d ttruth save "f:\BIVARIATE MODELS\PETCT2.dta", replace use "f:\BIVARIATE MODELS\PETCT2.dta", clear local model Bivariate-Bivariate xtmelogit (ttruth lgtsePET lgtspPET lgtseCT lgtspCT, noc) /// (study: lgtsePET lgtspPET, noc cov(unstr)) /// (study: lgtseCT lgtspCT, noc cov(unstr)), bin(num) nolr variance nolog nohead estimates store mod5 local ll3 = e(ll) local k3 = e(k) local NOBS3 = e(N) local BIC3= -2 * `ll3' + `k3' * log(`NOBS3') local dev3 = -2 * `ll3' local AIC3 = -2 * `ll3' + 2*`k3' estimates restore mod5 nlcom (pet_sen:invlogit(_b[lgtsePET]))/* */(pet_spe:invlogit(_b[lgtspPET]))/* */(pet_lrp: invlogit(_b[lgtsePET])/(1-invlogit(_b[lgtspPET])))/* */(pet_lrn: (1-invlogit(_b[lgtsePET]))/invlogit(_b[lgtspPET]))/* */(pet_ldor:(_b[lgtsePET]+_b[lgtspPET])) /* */(pet_dor:exp(_b[lgtsePET]+_b[lgtspPET])) /* */(ct_sen:invlogit(_b[lgtseCT]))/* */(ct_spe:invlogit(_b[lgtspCT]))/* */(ct_lrp: invlogit(_b[lgtseCT])/(1-invlogit(_b[lgtspCT])))/* */(ct_lrn: (1-invlogit(_b[lgtseCT]))/invlogit(_b[lgtspCT]))/* */(ct_ldor:(_b[lgtseCT]+_b[lgtspCT])) /* */(ct_dor:exp(_b[lgtseCT]+_b[lgtspCT])), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k3') (`NOBS3') (`ll3') (`BIC3') (`AIC3') (`dev3') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCT2.dta", clear local model Laplace_Bivariate-Bivariate xtmelogit (ttruth lgtsePET lgtspPET lgtseCT lgtspCT, noc) /// (study: lgtsePET lgtspPET, noc cov(unstr)) /// (study: lgtseCT lgtspCT, noc cov(unstr)), laplace bin(num) nolr variance nolog nohead estimates store mod6 local ll3 = e(ll) local k3 = e(k) local NOBS3 = e(N) local BIC3= -2 * `ll3' + `k3' * log(`NOBS3') local dev3 = -2 * `ll3' local AIC3 = -2 * `ll3' + 2*`k3' estimates restore mod6 nlcom (pet_sen:invlogit(_b[lgtsePET]))/* */(pet_spe:invlogit(_b[lgtspPET]))/* */(pet_lrp: invlogit(_b[lgtsePET])/(1-invlogit(_b[lgtspPET])))/* */(pet_lrn: (1-invlogit(_b[lgtsePET]))/invlogit(_b[lgtspPET]))/* */(pet_ldor:(_b[lgtsePET]+_b[lgtspPET])) /* */(pet_dor:exp(_b[lgtsePET]+_b[lgtspPET])) /* */(ct_sen:invlogit(_b[lgtseCT]))/* */(ct_spe:invlogit(_b[lgtspCT]))/* */(ct_lrp: invlogit(_b[lgtseCT])/(1-invlogit(_b[lgtspCT])))/* */(ct_lrn: (1-invlogit(_b[lgtseCT]))/invlogit(_b[lgtspCT]))/* */(ct_ldor:(_b[lgtseCT]+_b[lgtspCT])) /* */(ct_dor:exp(_b[lgtseCT]+_b[lgtspCT])), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] post compfile ("`model'") (`k3') (`NOBS3') (`ll3') (`BIC3') (`AIC3') (`dev3') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCT2.dta", clear local model Quadrivariate xtmelogit (ttruth lgtsePET lgtspPET lgtseCT lgtspCT, noc) /// (study: lgtsePET lgtspPET lgtseCT lgtspCT, noc cov(unstr)), bin(num) nolr variance nolog nohead estimates store mod7 local ll4 = e(ll) local k4 = e(k) local NOBS4 = e(N) local BIC4 = -2 * `ll4' + `k4' * log(`NOBS4') local dev4 = -2 * `ll4' local AIC4 = -2 * `ll4' + 2*`k4' estimates restore mod7 nlcom (pet_sen:invlogit(_b[lgtsePET]))/* */(pet_spe:invlogit(_b[lgtspPET]))/* */(pet_lrp: invlogit(_b[lgtsePET])/(1-invlogit(_b[lgtspPET])))/* */(pet_lrn: (1-invlogit(_b[lgtsePET]))/invlogit(_b[lgtspPET]))/* */(pet_ldor:(_b[lgtsePET]+_b[lgtspPET])) /* */(pet_dor:exp(_b[lgtsePET]+_b[lgtspPET])) /* */(ct_sen:invlogit(_b[lgtseCT]))/* */(ct_spe:invlogit(_b[lgtspCT]))/* */(ct_lrp: invlogit(_b[lgtseCT])/(1-invlogit(_b[lgtspCT])))/* */(ct_lrn: (1-invlogit(_b[lgtseCT]))/invlogit(_b[lgtspCT]))/* */(ct_ldor:(_b[lgtseCT]+_b[lgtspCT])) /* */(ct_dor:exp(_b[lgtseCT]+_b[lgtspCT])), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] post compfile ("`model'") (`k4') (`NOBS4') (`ll4') (`BIC4') (`AIC4') (`dev4') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCT2.dta", clear local model Laplace_Quadrivariate xtmelogit (ttruth lgtsePET lgtspPET lgtseCT lgtspCT, noc) /// (study: lgtsePET lgtspPET lgtseCT lgtspCT, noc cov(unstr)), laplace bin(num) nolr variance nolog nohead estimates store mod8 local ll4 = e(ll) local k4 = e(k) local NOBS4 = e(N) local BIC4 = -2 * `ll4' + `k4' * log(`NOBS4') local dev4 = -2 * `ll4' local AIC4 = -2 * `ll4' + 2*`k4' estimates restore mod8 nlcom (pet_sen:invlogit(_b[lgtsePET]))/* */(pet_spe:invlogit(_b[lgtspPET]))/* */(pet_lrp: invlogit(_b[lgtsePET])/(1-invlogit(_b[lgtspPET])))/* */(pet_lrn: (1-invlogit(_b[lgtsePET]))/invlogit(_b[lgtspPET]))/* */(pet_ldor:(_b[lgtsePET]+_b[lgtspPET])) /* */(pet_dor:exp(_b[lgtsePET]+_b[lgtspPET])) /* */(ct_sen:invlogit(_b[lgtseCT]))/* */(ct_spe:invlogit(_b[lgtspCT]))/* */(ct_lrp: invlogit(_b[lgtseCT])/(1-invlogit(_b[lgtspCT])))/* */(ct_lrn: (1-invlogit(_b[lgtseCT]))/invlogit(_b[lgtspCT]))/* */(ct_ldor:(_b[lgtseCT]+_b[lgtspCT])) /* */(ct_dor:exp(_b[lgtseCT]+_b[lgtspCT])), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] post compfile ("`model'") (`k4') (`NOBS4') (`ll4') (`BIC4') (`AIC4') (`dev4') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') use "f:\BIVARIATE MODELS\PETCT2.dta", clear local model Gllamm_Quadrivariate eq lgtsePET: lgtsePET eq lgtspPET: lgtspPET eq lgtseCT: lgtseCT eq lgtspCT: lgtspCT gllamm ttruth lgtsePET lgtspPET lgtseCT lgtspCT, nocons /// i(study) eqs(lgtsePET lgtspPET lgtseCT lgtspCT) /// f(bin) l(logit) denom(num) nip(7) nrf(4) ip(m) adapt estimates store mod9 local ll4 = e(ll) local k4 = e(k) local NOBS4 = e(N) local BIC4 = -2 * `ll4' + `k4' * log(`NOBS4') local dev4 = -2 * `ll4' local AIC4 = -2 * `ll4' + 2*`k4' estimates restore mod11 nlcom (pet_sen:invlogit(_b[lgtsePET]))/* */(pet_spe:invlogit(_b[lgtspPET]))/* */(pet_lrp: invlogit(_b[lgtsePET])/(1-invlogit(_b[lgtspPET])))/* */(pet_lrn: (1-invlogit(_b[lgtsePET]))/invlogit(_b[lgtspPET]))/* */(pet_ldor:(_b[lgtsePET]+_b[lgtspPET])) /* */(pet_dor:exp(_b[lgtsePET]+_b[lgtspPET])) /* */(ct_sen:invlogit(_b[lgtseCT]))/* */(ct_spe:invlogit(_b[lgtspCT]))/* */(ct_lrp: invlogit(_b[lgtseCT])/(1-invlogit(_b[lgtspCT])))/* */(ct_lrn: (1-invlogit(_b[lgtseCT]))/invlogit(_b[lgtspCT]))/* */(ct_ldor:(_b[lgtseCT]+_b[lgtspCT])) /* */(ct_dor:exp(_b[lgtseCT]+_b[lgtspCT])), post local pet_sen = _b[pet_sen] local pet_senlo = _b[pet_sen] - invnorm(0.975) * _se[pet_sen] local pet_senhi = _b[pet_sen] + invnorm(0.975) * _se[pet_sen] local pet_sense = _se[pet_sen] local pet_spese = _se[pet_spe] local ct_sense = _se[ct_sen] local ct_spese = _se[ct_spe] local pet_spe = _b[pet_spe] local pet_spelo = _b[pet_spe] - invnorm(0.975) * _se[pet_spe] local pet_spehi = _b[pet_spe] + invnorm(0.975) * _se[pet_spe] local ct_sen = _b[ct_sen] local ct_senlo = _b[ct_sen] - invnorm(0.975) * _se[ct_sen] local ct_senhi = _b[ct_sen] + invnorm(0.975) * _se[ct_sen] local ct_spe = _b[ct_spe] local ct_spelo = _b[ct_spe] - invnorm(0.975) * _se[ct_spe] local ct_spehi = _b[ct_spe] + invnorm(0.975) * _se[ct_spe] post compfile ("`model'") (`k4') (`NOBS4') (`ll4') (`BIC4') (`AIC4') (`dev4') /// (`pet_sen') (`pet_spe') (`pet_senlo') (`pet_spelo') (`pet_senhi') (`pet_spehi') /// (`pet_sense') (`pet_spese') (`ct_sen') (`ct_spe') (`ct_senlo') (`ct_spelo') /// (`ct_senhi') (`ct_spehi') (`ct_sense') (`ct_spese') postclose compfile postutil clear use compresults, clear format pet_sen pet_senlo pet_senhi pet_spe pet_spelo pet_spehi %7.2f format ct_sen ct_senlo ct_senhi ct_spe ct_spelo ct_spehi %7.2f qui { foreach var of varlist pet_sen pet_spe ct_sen ct_spe{ tostring `var'lo `var' `var'hi, gen(`var'lo1 `var'1 `var'hi1) format(%7.2f) force replace `var'lo1=" " + "(" + `var'lo1 +" - " replace `var'hi1= `var'hi1+ ")" gen str21 `var'_ci=`var'1+`var'lo1+`var'hi1 format `var'_ci %40s force } } log close exit, clear