require(mediation) input: df1<- #data frame including participant information of interest df2<-read.csv("models.csv", header=T, strings=F, sep=";") # Additional file 7 provides the file we used in our discovery R <- nrow(df2) B = matrix(nrow = R, ncol = 15, dimnames = list(paste('Model',1:R), c("mediator","outcome", "ACME_est", "ACME_L", "ACME_U","ADE_est", "ADE_L", "ADE_U", "TE_est", "TE_L", "TE_U", "PM_est", "PM_L", "PM_U", "Rho_0"))) df3<-df1[complete.cases(df1), ] str(df3) dataFrame<- df2 for(i in 1:nrow(dataFrame)) { a <- dataFrame[[i,1]] b <- dataFrame[i,2] B[i,1] <-a B[i,2] <-b df3$med<-df3[[a]] df3$outcome<-df3[[b]] m1 <- lm(med ~ current_smoking + Age + sex, df3) y1 <- lm(outcome ~ med + current_smoking + Age + sex, df3) set.seed(2015) m.out1<-mediate(m1, y1, treat = "current_smoking", mediator= "med", boot= TRUE, sims = 1000) ys.out_SE <- medsens(m.out1) B[i,3] <- m.out1$d0 g<-as.data.frame(m.out1$d0.ci) B[i,4]<- g[1,] ## lower B[i,5]<- g[2,] ## upper B[i,6]<- m.out1$z0 h<-as.data.frame(m.out1$z0.ci) B[i,7]<- h[1,] ## lower B[i,8]<- h[2,] ## upper B[i,9]<- m.out1$tau.coef l<-as.data.frame(m.out1$tau.ci) B[i,10]<- l[1,] ## lower B[i,11]<- l[2,] ## upper B[i,12]<- m.out1$n.avg m<-as.data.frame(m.out1$n.avg.ci) B[i,13]<- m[1,] ## lower B[i,14]<- m[2,] ## upper B[i,15]<- ys.out_SE$err.cr.d } write.csv(B, "mediaton_models_results.csv", quote=F, row.names=F)