Sensitivity Analyses

Sensitivity Analyses

eAppendix

Sensitivity Analyses

An important part of any data analysis is determining the sensitivity of the results to various assumptions. We performed a number of sensitivity analyses. First, we assumed that recall of smoking status among mothers of infants with OFC is the same as the recall among mothers of low birth weight infants. This allowed us to include additional data (n=74) from Verkerk23 et al as well as data from one additional study.28 In the additional study, performed in Grenada between 1991 and 1993, women were asked their smoking status prior to the 20th week of gestation and again following delivery. Controls were term deliveries born >2500g without malformation (n=198) and cases were infants born <2500g (n=169). The additional study had similar estimates of sensitivity and specificity as Verkerk23 et al. The prior distributions for sensitivity (mean=0.91 95% CI: 0.89, 0.93) and specificity (mean=0.05 95% CI: 0.04, 0.06) among control mothers were essentially unchanged from model 3, whereas the prior distributions for sensitivity (mean=0.93 95% CI: 0.90, 0.95) and FPR (mean=0.09 95% CI: 0.06, 0.12) case mothers were somewhat more precise. We reran Models 3 using these additional data on recall bias and referred to it as Model 3a. Results are presented in Table A1.

Second, to examine the impact our informative priors had on our results, we varied the prior distributions in 2 ways. First we placed much less informative priors on all parameters in the outcome model, N(0,10), which is equivalent we are 95% certain the true effect of any give parameter is between OR≈0 and OR≈500. Second, we placed slightly more informative shrinkage-style priors , N(0,1), on parameters in the outcome model and reran each of the 5 models for CL/P and CPO to determine the extent to which prior specification affected our inference. In the third sensitivity analysis, we explored the sensitivity of our results to the priors used in the exposure model by placing N(0,10) priors on these coefficients.

We also included a subset analysis of isolated and multiple defects. Isolated OFCs are those with no additional major defets and multiple defects are those OFCs with one or more unrelated defect in a different organ system. All models and sensitivity analyses were performed on these subsets of the data.

A final set of sensitivity analyses is performed to determine the impact of altering the prior specifications on the sensitivities and FPRs. In the main analysis we specify that aj has distribution beta(bj1,bj2), where the hyperprior parameters bj1 and bj2 are informed from an imperfect previous study. We minimize the impact of this prior specification by reformulating it as beta(bj1/2,bj2/2) which keeps the mean the same but increases the variance. We also estimate the model under the assumption that aj has prior distribution beta(1,1), which is simply a uniform distribution over [0,1]. Finally, since it is unlikely that the sensitivity or specificity is <0.5, we perform a final sensitivity analysis where we assume a prior distribution on sensitivity and specificity that is uniform from [0.5, 1]. Results of the analyses are presented in Table A2.

eTable A1: Sensitivity analyses for varying the prior distribution when correcting for misclassification of maternal recall of periconceptional smoking.

Model 1 / Model 2 / Model 3 / Model 3a / Model 4
Cleft lip with or without cleft palate (CL/P)
Main Analysis
Informative priors / 1.3
(1.1, 1.6) / 1.2
(0.9, 1.5) / 1.5
(1.1, 2.1) / 1.3
(1.0, 1.7) / 1.6
(1.1, 2.2)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 1.3
(1.1, 1.6) / 1.2
(0.9, 1.5) / 1.5
(1.1, 2.3) / 1.3
(1.0, 1.7) / 1.6
(1.2, 2.4)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 1.3
(1.1, 1.6) / 1.2
(0.9, 1.5) / 1.5
(1.1, 2.2) / 1.3
(1.0, 1.7) / 1.6
(1.2, 2.3)
Sensitivity Analysis 3
Prior on parameters in exposure model N(0,10) / 1.3
(1.1, 1.6) / 1.2
(0.9, 1.5) / 1.5
(1.1, 2.1) / 1.3
(1.0, 1.7) / 1.5
(1.1, 2.2)
Isolated CL/P
Main Analysis
Informative priors / 1.4
(1.2, 1.7) / 1.3
(1.0, 1.6) / 1.5
(1.1, 2.2) / 1.4
(1.1, 1.8) / 1.6
(1.2, 2.3)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 1.4
(1.2, 1.7) / 1.3
(1.0, 1.6) / 1.6
(1.2, 2.4) / 1.4
(1.1, 1.8) / 1.7
(1.2, 2.5)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 1.4
(1.2, 1.7) / 1.3
(1.0, 1.6) / 1.6
(1.2, 2.3) / 1.4
(1.1, 1.8) / 1.7
(1.2, 2.5)
CL/P with Multiple major defects
Main Analysis
Informative priors / 0.8
(0.5, 1.2) / 0.6
(0.3, 1.0) / 0.7
(0.3, 1.2) / 0.6
(0.3, 1.0) / 0.7
(0.3, 1.2)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 0.8
(0.5, 1.2) / 0.5
(0.2, 1.1) / 0.7
(0.3, 1.4) / 0.6
(0.3, 1.1) / 0.7
(0.3, 1.5)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 0.8
(0.5, 1.2) / 0.6
(0.3, 1.1) / 0.7
(0.4, 1.4) / 0.6
(0.3, 1.2) / 0.8
(0.4, 1.5)
Cleft Palate Only (CP0)
Main Analysis
Informative priors / 1.2
(1.0, 1.5) / 1.0
(0.7, 1.3) / 1.1
(0.7, 1.6) / 1.0
(0.7, 1.4) / 1.1
(0.7, 1.7)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 1.2
(1.0, 1.5) / 0.9
(0.7, 1.3) / 1.0
(0.6, 1.5) / 1.0
(0.7, 1.3) / 1.0
(0.6, 1.5)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 1.2
(1.0, 1.5) / 0.9
(0.7, 1.3) / 1.0
(0.7, 1.5) / 1.0
(0.7, 1.3) / 1.0
(0.6, 1.6)
Sensitivity Analysis 3
Prior on parameters in exposure model N(0,10) / 1.2
(1.0, 1.5) / 1.0
(0.8, 1.3) / 1.1
(0.7, 1.5) / 1.0
(0.7, 1.4) / 1.1
(0.7, 1.7)
Isolated CPO
Main Analysis
Informative priors / 1.2
(1.0, 1.5) / 1.0
(0.7, 1.3) / 1.0
(0.6, 1.5) / 1.0
(0.7, 1.4) / 1.0
(0.6, 1.5)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 1.2
(1.0, 1.5) / 0.9
(0.6, 1.3) / 0.9
(0.6, 1.6) / 0.9
(0.6, 1.3) / 0.9
(0.5, 1.6)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 1.2
(1.0, 1.5) / 0.9
(0.7, 1.3) / 0.9
(0.6, 1.5) / 0.9
(0.6, 1.3) / 1.0
(0.6, 1.5)
CPO with multiple major defects
Main Analysis
Informative priors / 1.2
(0.8, 1.7) / 1.1
(0.7, 1.6) / 1.1
(0.7, 1.8) / 1.1
(0.7, 1.7) / 1.3
(0.6, 2.4)
Sensitivity Analysis 1
Prior on parameters in outcome model N(0,10) / 1.2
(0.7, 1.8) / 1.0
(0.5, 1.8) / 1.1
(0.5, 2.3) / 1.0
(0.5, 1.8) / 1.1
(0.5, 2.5)
Sensitivity Analysis 2
Prior on parameters in outcome model N(0,1) / 1.2
(0.7, 1.8) / 1.0
(0.5, 1.8) / 1.1
(0.6, 2.2) / 1.0
(0.5, 1.9) / 1.2
(0.5, 2.5)

Model 1 assumes no misclassification

Model 2 assumes the misclassification is known with certainty

Model 3 assumes the misclassification is random (includes 1 study)

Model 3a assumes the misclassification is random (includes 2 studies)

Model 4 corrects for maternal recall and reporting bias

eTable A2: Sensitivity analysis for prior information about sensitivity and specificity of smoking recall

Model 3 / Model 4
CPO
Main Analysis
Beta(b1,b2) / 1.1
(0.7, 1.6) / 1.1
(0.7, 1.7)
Sensitivity Analysis 1
Beta(b1/2,b2/2) / 1.1
(0.7, 1.7) / 1.1
(0.7, 1.7)
Sensitivity Analysis 2
Beta(1,1) / 1.3
(0.8, 2.3) / 1.2
(0.7, 2.0)
Sensitivity Analysis 3
Uniform(0.5, 1) / 1.3
(0.8, 2.3) / 1.2
(0.8, 2.1)
Model 3 / Model 4
CLP
Main Analysis
Beta(b1,b2) / 1.5
(1.1, 2.1) / 1.6
(1.1, 2.2)
Sensitivity Analysis 1
Beta(b1/2,b2/2) / 1.4
(1.1, 2.0) / 1.5
(1.1, 2.2)
Sensitivity Analysis 2
Beta(1,1) / 1.7
(1.2, 2.5) / 1.7
(1.2, 2.5)
Sensitivity Analysis 3
Uniform(0.5, 1) / 1.6
(1.2, 2.4) / 1.7
(1.2, 2.5)

Bugs code for misclassification model

In the following models, smt is the latent variable for true smoking status and sm is the post-pregnancy reported smoking status. Parmeters a0, a1, a2 and a3 correspond to α0 to α3 in the text. Parameters l0 and l1 correspond to γ0 and γ1 from the text. The vector u contains prior means and shpr contains 1/prior variance (Winbug’s specification for a normal distribution is in terms of precision=1/variance).

Model 1

model {

for (i in 1:N) {

y[i] ~ dbern(pt[i])

logit(pt[i])<-b0+b1*sm[i]+b2*folic[i]+b3*magec[i]+b4*hxcleft[i]+

b5*meduc[i]+b6*mrace_bl[i]+b7*mrace_his[i]+b8*mrace_oth[i]+

b9*mobese[i]+b10*etoh[i]+b11*grav[i]+b12*state1[i]+b13*state2[i]+

b14*state3[i]+b15*state4[i]+b16*state5[i]+b17*state6[i]+b18*state7[i]+

b19*state8[i]

}

b0 ~ dnorm(0,.000001)

b1 ~ dnorm(u[1],shpr[1])

b2 ~ dnorm(u[2],shpr[2])

b3 ~ dnorm(u[3],shpr[3])

b4 ~ dnorm(u[4],shpr[4])

b5 ~ dnorm(u[5],shpr[5])

b6 ~ dnorm(u[6],shpr[6])

b7 ~ dnorm(u[7],shpr[7])

b8 ~ dnorm(u[8],shpr[8])

b9~ dnorm(u[9],shpr[9])

b10~ dnorm(u[10],shpr[10])

b11~ dnorm(u[11],shpr[11])

b12~ dnorm(u[12],shpr[12])

b13~ dnorm(u[13],shpr[13])

b14~ dnorm(u[14],shpr[14])

b15~ dnorm(u[15],shpr[15])

b16~ dnorm(u[16],shpr[16])

b17~ dnorm(u[17],shpr[17])

b18~ dnorm(u[18],shpr[18])

b19~ dnorm(u[19],shpr[19])

}

Model 2:

model {

for (i in 1:N) {

y[i] ~ dbern(pt[i])

logit(pt[i])<-b0+b1*smt[i]+b2*folic[i]+b3*magec[i]+b4*hxcleft[i]+

b5*meduc[i]+b6*mrace_bl[i]+b7*mrace_his[i]+b8*mrace_oth[i]+

b9*mobese[i]+b10*etoh[i]+b11*grav[i]+b12*state1[i]+b13*state2[i]+

b14*state3[i]+b15*state4[i]+b16*state5[i]+b17*state6[i]+b18*state7[i]+

b19*state8[i]

sm[i]~ dbern(pm[i])

pm[i]<-a0*(smt[i])*(1-y[i])+a1*(1-smt[i])*(1-y[i])+a2*(y[i])*(smt[i])+

a3*(1-smt[i])*(y[i])

smt[i]~dbern(prop[i])

logit(prop[i])<-(g1+g2*folic[i]+g3*magec[i]+g4*hxcleft[i]+g5*meduc[i]+

g6*mrace_bl[i]+g7*mrace_his[i]+g8*mrace_oth[i]+g9*mobese[i]+

g10*etoh[i]+g11*grav[i]+g12*state1[i]+g13*state2[i]+g14*state3[i]+

g15*state4[i]+g16*state5[i]+g17*state6[i]+g18*state7[i]+g19*state8[i])

}

b0 ~ dnorm(0,.000001)

b1 ~ dnorm(u[1],shpr[1])

b2 ~ dnorm(u[2],shpr[2])

b3 ~ dnorm(u[3],shpr[3])

b4 ~ dnorm(u[4],shpr[4])

b5 ~ dnorm(u[5],shpr[5])

b6 ~ dnorm(u[6],shpr[6])

b7 ~ dnorm(u[7],shpr[7])

b8 ~ dnorm(u[8],shpr[8])

b9 ~ dnorm(u[9],shpr[9])

b10~ dnorm(u[10],shpr[10])

b11~ dnorm(u[11],shpr[11])

b12~ dnorm(u[12],shpr[12])

b13~ dnorm(u[13],shpr[13])

b14~ dnorm(u[14],shpr[14])

b15~ dnorm(u[15],shpr[15])

b16~ dnorm(u[16],shpr[16])

b17~ dnorm(u[17],shpr[17])

b18~ dnorm(u[18],shpr[18])

b19~ dnorm(u[19],shpr[19])

a0 <- ba0/(ba0+bb0)

a1 <- ba1/(ba1+bb1)

a2 <- ba2/(ba2+bb2)

a3 <- ba3/(ba3+bb3)

g1~dnorm(0,.0001)

g2~dnorm(0,dshpr)

g3~dnorm(0,dshpr)

g4~dnorm(0,dshpr)

g5~dnorm(0,dshpr)

g6~dnorm(0,dshpr)

g7~dnorm(0,dshpr)

g8~dnorm(0,dshpr)

g9~dnorm(0,dshpr)

g10~dnorm(0,dshpr)

g11~dnorm(0,dshpr)

g12~dnorm(0,dshpr)

g13~dnorm(0,dshpr)

g14~ dnorm(0,dshpr)

g15~ dnorm(0,dshpr)

g16~ dnorm(0,dshpr)

g17~ dnorm(0,dshpr)

g18~ dnorm(0,dshpr)

g19~ dnorm(0,dshpr)

}

Model 3 and 3a

model {

for (i in 1:N) {

y[i] ~ dbern(pt[i])

logit(pt[i])<-b0+b1*smt[i]+b2*folic[i]+b3*magec[i]+b4*hxcleft[i]+

b5*meduc[i]+b6*mrace_bl[i]+b7*mrace_his[i]+b8*mrace_oth[i]+

b9*mobese[i]+b10*etoh[i]+b11*grav[i]+b12*state1[i]+b13*state2[i]+

b14*state3[i]+b15*state4[i]+b16*state5[i]+b17*state6[i]+b18*state7[i]+

b19*state8[i]

sm[i]~ dbern(pm[i])

pm[i]<-a0*(smt[i])*(1-y[i])+a1*(1-smt[i])*(1-y[i])+a2*(y[i])*(smt[i])+

a3*(1-smt[i])*(y[i])

smt[i]~dbern(prop[i])

logit(prop[i])<-(g1+g2*folic[i]+g3*magec[i]+g4*hxcleft[i]+

g5*meduc[i]+g6*mrace_bl[i]+g7*mrace_his[i]+g8*mrace_oth[i]+

g9*mobese[i]+g10*etoh[i]+g11*grav[i]+g12*state1[i]+g13*state2[i]+

g14*state3[i]+g15*state4[i]+g16*state5[i]+g17*state6[i]+g18*state7[i]+

g19*state8[i])

}

b0 ~ dnorm(0,.000001)

b1 ~ dnorm(u[1],shpr[1])

b2 ~ dnorm(u[2],shpr[2])

b3 ~ dnorm(u[3],shpr[3])

b4 ~ dnorm(u[4],shpr[4])

b5 ~ dnorm(u[5],shpr[5])

b6 ~ dnorm(u[6],shpr[6])

b7 ~ dnorm(u[7],shpr[7])

b8 ~ dnorm(u[8],shpr[8])

b9 ~ dnorm(u[9],shpr[9])

b10~ dnorm(u[10],shpr[10])

b11~ dnorm(u[11],shpr[11])

b12~ dnorm(u[12],shpr[12])

b13~ dnorm(u[13],shpr[13])

b14~ dnorm(u[14],shpr[14])

b15~ dnorm(u[15],shpr[15])

b16~ dnorm(u[16],shpr[16])

b17~ dnorm(u[17],shpr[17])

b18~ dnorm(u[18],shpr[18])

b19~ dnorm(u[19],shpr[19])

a0~dbeta(ba0,bb0)

a1~dbeta(ba1,bb1)

a2~dbeta(ba2,bb2)

a3~dbeta(ba3,bb3)

g1~dnorm(0,.0001)

g2~dnorm(0,dshpr)

g3~dnorm(0,dshpr)

g4~dnorm(0,dshpr)

g5~dnorm(0,dshpr)

g6~dnorm(0,dshpr)

g7~dnorm(0,dshpr)

g8~dnorm(0,dshpr)

g9~dnorm(0,dshpr)

g10~dnorm(0,dshpr)

g11~dnorm(0,dshpr)

g12~dnorm(0,dshpr)

g13~dnorm(0,dshpr)

g14~ dnorm(0,dshpr)

g15~ dnorm(0,dshpr)

g16~ dnorm(0,dshpr)

g17~ dnorm(0,dshpr)

g18~ dnorm(0,dshpr)

g19~ dnorm(0,dshpr)

}

Model 4

model {

for (i in 1:N) {

y[i] ~ dbern(pt[i])

logit(pt[i])<-b0+b1*smt[i]+b2*folic[i]+b3*magec[i]+b4*hxcleft[i]+

b5*meduc[i]+b6*mrace_bl[i]+b7*mrace_his[i]+b8*mrace_oth[i]+

b9*mobese[i]+b10*etoh[i]+b11*grav[i]+b12*state1[i]+b13*state2[i]+

b14*state3[i]+b15*state4[i]+b16*state5[i]+b17*state6[i]+b18*state7[i]+

b19*state8[i]

sm[i]~ dbern(pp[i])

pp[i]<-a0*(sme[i])*(1-y[i])+a1*(1-sme[i])*(1-y[i])+a2*(y[i])*(sme[i])+

a3*(1-sme[i])*(y[i])

sme[i]~dbern(pe[i])

pe[i]<-l0*(smt[i])+l1*(1-smt[i])

smt[i]~dbern(prop[i])

logit(prop[i])<-(g1+g2*folic[i]+g3*magec[i]+g4*hxcleft[i]+

g5*meduc[i]+g6*mrace_bl[i]+g7*mrace_his[i]+g8*mrace_oth[i]+

g9*mobese[i]+g10*etoh[i]+g11*grav[i]+g12*state1[i]+g13*state2[i]+

g14*state3[i]+g15*state4[i]+g16*state5[i]+g17*state6[i]+g18*state7[i]+

g19*state8[i])

}

b0 ~ dnorm(0,.000001)

b1 ~ dnorm(u[1],shpr[1])

b2 ~ dnorm(u[2],shpr[2])

b3 ~ dnorm(u[3],shpr[3])

b4 ~ dnorm(u[4],shpr[4])

b5 ~ dnorm(u[5],shpr[5])

b6 ~ dnorm(u[6],shpr[6])

b7 ~ dnorm(u[7],shpr[7])

b8 ~ dnorm(u[8],shpr[8])

b9 ~ dnorm(u[9],shpr[9])

b10~ dnorm(u[10],shpr[10])

b11~ dnorm(u[11],shpr[11])

b12~ dnorm(u[12],shpr[12])

b13~ dnorm(u[13],shpr[13])

b14~ dnorm(u[14],shpr[14])

b15~ dnorm(u[15],shpr[15])

b16~ dnorm(u[16],shpr[16])

b17~ dnorm(u[17],shpr[17])

b18~ dnorm(u[18],shpr[18])

b19~ dnorm(u[19],shpr[19])

a0~dbeta(ba0,bb0)

a1~dbeta(ba1,bb1)

a2~dbeta(ba2,bb2)

a3~dbeta(ba3,bb3)

l0~dbeta(la0,lb0)

l1~dbeta(la1,lb1)

g1~dnorm(0,.0001)

g2~dnorm(0,dshpr)

g3~dnorm(0,dshpr)

g4~dnorm(0,dshpr)

g5~dnorm(0,dshpr)

g6~dnorm(0,dshpr)

g7~dnorm(0,dshpr)

g8~dnorm(0,dshpr)

g9~dnorm(0,dshpr)

g10~dnorm(0,dshpr)

g11~dnorm(0,dshpr)

g12~dnorm(0,dshpr)

g13~dnorm(0,dshpr)

g14~ dnorm(0,dshpr)

g15~ dnorm(0,dshpr)

g16~ dnorm(0,dshpr)

g17~ dnorm(0,dshpr)

g18~ dnorm(0,dshpr)

g19~ dnorm(0,dshpr)

}