270 likes | 414 Views
Network meta-analysis in SAS Danish Society of Biopharmaceutical Statistics, Elsinore, May 27, 2014. David A. Scott MA MSc Senior Director, ICON Health Economics Visiting Fellow, SHTAC, University of Southampton. Network Meta-Analysis: Software. winBUGS / OpenBUGS /JAGS (DSU series)
E N D
Network meta-analysis in SASDanish Society of Biopharmaceutical Statistics, Elsinore, May 27, 2014 David A. Scott MA MSc Senior Director, ICON Health Economics Visiting Fellow, SHTAC, University of Southampton
Network Meta-Analysis: Software • winBUGS/OpenBUGS/JAGS (DSU series) • R e.g. rmeta, netmeta, mvmeta packages • Statamvmeta • SAS e.g. procglimmix, procmcmc
A brief history of NMA in SAS • Lots of different procedures to implement NMA in SAS • proc mixed, proc mixed, procnlmixed,procgenmod, proc glimmix1-3 • Frequentist techniques • Difficult to fit complex hierarchical models2 • MCMC techniques • procgenmod (using Easy Bayes) -> procmcmc • SAS 9.2 (level 2M3), SAS 9.3 (sas stat 12) 1 Glenny AM et al, Health Technology Assessment 2005; 9(26) 2 Jones B et al, Pharmaceutical Statistics 2011; 10:523-31 3 Piepho HP et al. Biometrics 2012; 68:1269-77
Potential barriers • DSU series winBUGS-focused • SAS not yet used in UK reimbursement submissions • ERG limited experience of SAS • Limited published code/articles • Validation exercise
Syntax: load data data smoking; input Study Trt R N narm; datalines; 1 2 11 78 3 #Mothersill 1988 1 3 12 85 3 #Mothersill 1988 1 4 29 170 3 #Mothersill 1988 • 1 75 731 2 #Reid 1974 … run;
Syntax: fixed effects procmcmc data=smoking nmc=20000 seed=246810; random Studyeffect ~general(0) subject=Study init=(0); random Treat ~general(0) subject=Treatment init=(0) zero="No contact" monitor=(Treat); mu= Studyeffect + Treat; P=1-(1/(1+exp(mu))); model R ~ binomial(n=N, p=P); run;
Syntax: random effects procmcmc data=smoking nbi=20000 nmc=200000 thin=10 seed=246810 monitor=(mysd) dic; random Studyeffect ~normal(0, var=10000) subject=Study init=(0) ; random Treat ~normal(0, var=10000) subject=Treatment init=(0) zero="No contact" monitor=(Treat); parmsmysd 0.2; prior mysd ~ uniform(0,1); random RE ~ normal(0,sd=mysd/sqrt(2)) subject=_OBS_ init=(0); mu= Studyeffect + Treat +RE; P=1-(1/(1+exp(mu))); model R ~ binomial(n=N, p=P); run;
Diagnostics • Trace • Density • Autocorrelation • thin= option • DIC (relative model fit) • dic option
Practical exercise 1 • Run the code as is • Compare results for each model • Amend the code to generate fewer MCMC samples, how many are sufficient? How much burn-in is needed? Is thinning necessary in the RE model? • Which model is the better fit, fixed or random effects? • Change the baseline from “no contact” to “self help”. Are the results consistent? • Try changing the priors to other vague priors1, does this affect results? 1 Lambert PC et al, Statistics in Medicine, 2005; 24:2401-28
Syntax: load data data scott; input study trt baseline y SE; datalines; 1 2 8.5 -1.08 0.12 1 3 8.5 -1.13 0.12 1 1 8.5 0.23 0.2 2 2 8.4 -1 0.1 … ; run;
Syntax: fixed effects procmcmc data=scott nmc=200000 nthin=20 seed=246810; random Studyeffect ~general(0) subject=Study init=(0) ; random Treat ~general(0) subject=Treatment init=(0) zero="Placebo" monitor=(Treat); Mu= Studyeffect + Treat ; model Y ~ normal(mean=Mu, var=SE*SE); run;
Syntax: random effects procmcmc data=scott nmc=200000 nthin=20 seed=246810 monitor=(mysd) outpost=outp7 dic; random Studyeffect ~normal(0,var=10000) subject=Study init=(0) ; random Treat ~normal(0,var=10000) subject=Treatment init=(0) zero="Placebo" monitor=(Treat); parmsmysd 0.2; prior mysd ~ uniform(0,1); random RE ~normal(0,sd=mysd/sqrt(2)) subject=_OBS_ init=(0); Mu= Studyeffect + Treat +RE; model Y ~ normal(mean=Mu, sd=SE); run;
Syntax: fixed effects meta-regression procmcmc data=scott nmc=200000 nthin=20 seed=246810; random Studyeffect ~general(0) subject=Study init=(0) ; random Treat ~general(0) subject=Treatment init=(0) zero="Placebo" monitor=(Treat); parms hba1c 0; prior hba1c ~normal(0,var=10000); Mu= Studyeffect + Treat + baseline*hba1c; model Y ~ normal(mean=Mu, var=SE*SE); run;
Practical exercise 2 • Run the code as is • Compare results for each model • Which model is the better fit, fixed or random effects, or meta-regression? • Amend the code to generate fewer MCMC samples, how many are sufficient? How much burn-in is needed? Is thinning necessary in the RE model? • Change the baseline from “Placebo” to “Insulin Glargine”. Are the results consistent? • Compare results to WinBUGS output • Try changing the priors to other vague priors1, does this affect results? 1 Lambert PC et al, Statistics in Medicine, 2005; 24:2401-28