The
potential interaction between susceptibility genotypes (G) and
environmental exposures (E) has recently received a lot of attention in
epidemiologic studies for understanding the etiology of complex human
diseases. Statistical assessment of the GxE interaction can be performed
in nontraditional case-only designs achieving a great statistical power
improvement over traditional case-control/cohort designs studies.
Although the standard methods of meta-analysis can be applied to assess
GxE interaction, the fact that the available studies have to follow all
the same design remains a major problem. In the present study we propose
a novel multivariate method for meta-analysis that can incorporate
studies with different type of data performed under different designs.
Based on the proposed method neither individual patient data nor the
simultaneous evaluation of both genetic and environmental effect are
necessary. The method is simple and fast and can be extended to account
for multiple genes resulting thus in the estimation of GxG interactions.
The assumptions inherently made by different designs (e.g. combining
case-only and case-control studies) can also be assessed. As an example
we investigate the interaction of NAT2 polymorphism and smoking in
bladder cancer illustrating that the multidimensional multivariate
methods outperformed the classical univariate analysis. We conclude that
the proposed method constitutes a useful framework for performing
meta-analysis for GxE interaction
clear set more off input study n101 n001 n111 n011 n100 n000 n110 n010 n1x1 n0x1 n1x0 n0x0 1 63 50 171 90 51 33 165 124 234 140 216 157 2 14 16 140 83 . . . . 154 99 . . 3 22 17 99 92 44 30 65 64 121 109 109 94 4 22 15 101 40 6 5 11 17 123 55 17 22 5 23 20 72 34 11 11 25 22 95 54 36 33 6 13 8 70 39 . . . . 83 47 . . 7 14 9 51 31 . . . . 65 40 . . 8 11 5 55 30 6 12 39 44 66 35 45 56 9 25 19 32 22 29 44 20 23 57 41 49 67 10 3 5 52 31 10 11 24 25 55 36 34 36 11 4 6 42 25 11 20 17 32 46 31 28 52 12 2 1 42 22 . . . . 44 23 . . 13 2 28 1 19 . . . . 3 47 . . 14 7 11 9 20 7 38 6 40 16 31 13 78 15 3 3 9 11 . . . . 12 14 . . 16 5 2 4 12 39 21 28 21 9 14 67 42 17 88 49 301 169 190 102 255 148 389 218 445 250 18 5 21 12 47 8 54 2 82 17 68 10 136 19 12 5 111 73 29 24 82 79 123 78 111 103 20 28 30 22 21 45 35 14 16 50 51 59 51 21 13 89 29 194 8 10 98 209 42 283 106 219 22 91 66 637 340 199 131 438 362 728 406 637 493 23 78 49 253 140 131 104 151 126 331 189 282 230 24 . . . . 172 127 54 41 . . 226 168 25 . . . . 1056 780 1310 949 . . 2366 1729 26 . . . . 38 32 13 20 . . 51 52 27 . . . . 75 38 156 96 . . 231 134 28 . . . . 223 161 223 190 . . 446 351 29 . . . . 127 126 117 102 . . 244 228 30 . . . . 54 45 68 58 . . 122 103 31 . . . . 183 167 66 69 . . 249 236 32 . . . . 65 39 93 67 . . 158 106 33 . . . . 132 67 121 77 . . 253 144 34 . . . . 181 106 193 121 . . 374 227 35 . . . . 251 172 482 324 . . 733 496 36 . . . . 82 56 136 90 . . 218 146 37 . . . . 30 95 6 9 . . 36 104 38 . . . . . . . . 74 37 118 89 39 . . . . . . . . 21 9 16 11 40 . . . . . . . . 76 38 26 20 41 . . . . . . . . 42 18 94 60 42 . . . . . . . . 12 41 13 88 43 . . . . . . . . 11 53 43 127 44 . . . . . . . . 22 94 7 115 45 . . . . . . . . 52 37 56 91 46 . . . . . . . . 8 104 24 195 47 . . . . . . . . 32 21 56 40 48 . . . . . . . . 5 11 21 13 49 . . . . . . . . 47 10 11 9 50 . . . . . . . . 179 118 172 117 51 . . . . . . . . 35 21 163 157 52 . . . . . . . . 18 51 13 75 end *Univariate meta-analysis* * synergy factor * gen sf=log((n111*n001*n100*n010)/(n110*n000*n101*n011)) replace sf=log(((0.5+n111)*(0.5+n001)*(0.5+n100)*(0.5+n010))/((0.5+n110)*(0.5+n000)*(0.5+n101)*(0.5+n011))) if n101==0|n001==0|n111==0|n011==0|n100==0|n000==0|n110==0|n010==0 gen stsf =sqrt(1/n101+1/n001+1/n111+1/n011+1/n100+1/n000+1/n110+1/n010) replace stsf=sqrt(1/(n101+0.5)+1/(n001+0.5)+1/(n111+0.5)+1/(n011+0.5)+1/(n100+0.5)+1/(n000+0.5)+1/(n110+0.5)+1/(n010+0.5)) if n101==0|n001==0|n111==0|n011==0|n100==0|n000==0|n110==0|n010==0 metan sf stsf, eform random xlab(0.1,1,3) * Univariate Meta-analysis case only * gen a1=log((n111*n001)/(n101*n011)) replace a1=log(((0.5+n111)*(0.5+n001))/((0.5+n101)*(0.5+n011))) if n101==0|n001==0|n111==0|n011==0 gen sta1=sqrt(1/n101+1/n001+1/n111+1/n001) replace sta1=sqrt(1/(n101+0.5)+1/(n001+0.5)+1/(n111+0.5)+1/(n011+0.5)) if n101==0|n001==0|n111==0|n011==0 metan a1 sta1, eform random xlab(0.1,1,3) * Univariate Meta-analysis control only * gen a2=log((n000*n110)/(n100*n010)) replace a2=log(((0.5+n000)*(0.5+n110))/((0.5+n100)*(0.5+n010))) if n000==0|n110==0|n100==0|n010==0 gen sta2=sqrt(1/n000+1/n110+1/n100+1/n010) replace sta2=sqrt(1/(n100+0.5)+1/(n110+0.5)+1/(n100+0.5)+1/(n010+0.5)) if n000==0|n110==0|n100==0|n010==0 metan a2 sta2, eform random xlab(0.1,1,3) *Multivariate meta-analysis* *case only* gen b1=log((n111*n001)/(n101*n011)) replace b1=log(((0.5+n111)*(0.5+n001))/((0.5+n101)*(0.5+n011))) if n101==0|n001==0|n111==0|n011==0 gen V11=(1/n101+1/n001+1/n111+1/n001) replace V11=(1/(n101+0.5)+1/(n001+0.5)+1/(n111+0.5)+1/(n011+0.5)) if n101==0|n001==0|n111==0|n011==0 replace V11=. if b1==. *control only* gen b2=log((n000*n110)/(n100*n010)) replace b2=log(((0.5+n000)*(0.5+n110))/((0.5+n100)*(0.5+n010))) if n000==0|n110==0|n100==0|n010==0 gen V22=(1/n000+1/n110+1/n100+1/n010) replace V22=(1/(n100+0.5)+1/(n110+0.5)+1/(n100+0.5)+1/(n010+0.5)) if n000==0|n110==0|n100==0|n010==0 replace V22=. if b2==. *gene marginal* gen b3=log((n1x1*n0x0)/(n1x0*n0x1)) replace b3=log(((0.5+n1x1)*(0.5+n0x0))/((0.5+n1x0)*(0.5+n0x1))) if n1x1==0|n0x0==0|n1x0==0|n0x1==0 gen V33=(1/n1x1+1/n0x0+1/n1x0+1/n0x1) replace V33=log(1/(n1x1+0.5)+1/(n0x0+0.5)+1/(n1x0+0.5)+1/(n0x1+0.5)) if n1x1==0|n0x0==0|n1x0==0|n0x1==0 replace V33=. if b3==. *gene only* gen b4=log((n101*n000)/(n100*n001)) replace b4=log(((0.5+n101)*(0.5+n000))/((0.5+n100)*(0.5+n001))) if n101==0|n000==0|n100==0|n001==0 gen V44=(1/n101+1/n000+1/n100+1/n001) replace V44=(1/(n101+0.5)+1/(n000+0.5)+1/(n100+0.5)+1/(n001+0.5)) if n101==0|n000==0|n100==0|n001==0 replace V44=. if b4==. gen V12=0 replace V12=. if b1==. replace V12=. if b2==. gen V13=0 replace V13=. if b1==. replace V13=. if b3==. gen V14=-(1/n101)-(1/n001) if n101!=.|n001!=. replace V14=-(1/(n101+0.5))-(1/(n001+0.5)) if n101==0|n001==0 replace V14=. if b1==. replace V14=. if b4==. gen V23=0 replace V23=. if b2==. replace V23=. if b3==. gen V24=(1/n000)+(1/n100) if n000!=.|n100!=. replace V24=-(1/(n000+0.5))-(1/(n100+0.5)) if n000==0|n100==0 replace V24=. if b2==. replace V24=. if b4==. gen V34=(1/n1x1)+(1/n0x0)+(1/n1x0)+(1/n0x1) replace V34=. if b3==. replace V34=. if b4==. * Fitting of bivariate model* mvmeta b V, mm var(b1 b2) di exp(_b[b1]), exp(_b[b2]) lincom b1 -b2,or * Fitting of trivariate A model* mvmeta b V, mm vars(b1 b2 b3) di exp(_b[b1]), exp(_b[b2]), exp(_b[b3]) lincom b1 -b2,or * Fitting of trivariate B model* mvmeta b V, mm vars(b1 b2 b4) di exp(_b[b1]), exp(_b[b2]), exp(_b[b4]) lincom b1 -b2,or * Fitting of tetravariate model* mvmeta b V, mm vars(b1 b2 b3 b4) noposdef di exp(_b[b1]), exp(_b[b2]), exp(_b[b3]), exp(_b[b4]) lincom b1 -b2,or |
Tools and Software >