vignettes/multiple_mediators.Rmd
multiple_mediators.Rmd
This example demonstrates how to use cmest
when there are multiple mediators. For this purpose, we simulate some data containing a continuous baseline confounder \(C_1\), a binary baseline confounder \(C_2\), a binary exposure \(A\), a count mediator \(M_1\), a categorical mediator \(M_2\) and a binary outcome \(Y\). The true regression models for \(A\), \(M_1\), \(M_2\) and \(Y\) are: \[logit(E(A|C_1,C_2))=0.2+0.5C_1+0.1C_2\] \[log(E(M_1|A,C_1,C_2))=1-2A+0.5C_1+0.8C_2\] \[log\frac{E[M_2=1|A,M_1,C_1,C_2]}{E[M_2=0|A,M_1,C_1,C_2]}=0.1+0.1A+0.4M_1-0.5C_1+0.1C_2\] \[log\frac{E[M_2=2|A,M_1,C_1,C_2]}{E[M_2=0|A,M_1,C_1,C_2]}=0.4+0.2A-0.1M_1-C_1+0.5C_2\] \[logit(E(Y|A,M_1,M_2,C_1,C_2)))=-4+0.8A-1.8M_1+0.5(M_2==1)+0.8(M_2==2)+0.5AM_1-0.4A(M_2==1)-1.4A(M_2==2)+0.3*C_1-0.6C_2\]
set.seed(1)
expit <- function(x) exp(x)/(1+exp(x))
n <- 10000
C1 <- rnorm(n, mean = 1, sd = 0.1)
C2 <- rbinom(n, 1, 0.6)
A <- rbinom(n, 1, expit(0.2 + 0.5*C1 + 0.1*C2))
M1 <- rpois(n, exp(1 - 2*A + 0.5*C1 + 0.8*C2))
linpred1 <- 0.1 + 0.1*A + 0.4*M1 - 0.5*C1 + 0.1*C2
linpred2 <- 0.4 + 0.2*A - 0.1*M1 - C1 + 0.5*C2
probm0 = 1 / (1 + exp(linpred1) + exp(linpred2))
probm1 = exp(linpred1) / (1 + exp(linpred1) + exp(linpred2))
probm2 = exp(linpred2) / (1 + exp(linpred1) + exp(linpred2))
M2 = factor(sapply(1:n, FUN = function(x) sample(c(0, 1, 2), size = 1, replace = TRUE,
prob=c(probm0[x],
probm1[x],
probm2[x]))))
Y <- rbinom(n, 1, expit(1 + 0.8*A - 1.8*M1 + 0.5*(M2 == 1) + 0.8*(M2 == 2) +
0.5*A*M1 - 0.4*A*(M2 == 1) - 1.4*A*(M2 == 2) + 0.3*C1 - 0.6*C2))
data <- data.frame(A, M1, M2, Y, C1, C2)
The DAG for this scientific setting is:
## Loading required package: dplyr
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading required package: mstate
## Loading required package: survival
## Loading required package: tidyr
cmdag(outcome = "Y", exposure = "A", mediator = c("M1", "M2"),
basec = c("C1", "C2"), postc = NULL, node = TRUE, text_col = "white")
In this setting, we have a count mediator, so the marginal structural model is not available. We can use the rest five statistical modeling approaches. The results are shown below.
res_rb <- cmest(data = data, model = "rb", outcome = "Y", exposure = "A",
mediator = c("M1", "M2"), basec = c("C1", "C2"), EMint = TRUE,
mreg = list("poisson", "multinomial"), yreg = "logistic",
astar = 0, a = 1, mval = list(0, 2),
estimation = "imputation", inference = "bootstrap", nboot = 2)
summary(res_rb)
## Causal Mediation Analysis
##
## # Outcome regression:
##
## Call:
## glm(formula = Y ~ A + M1 + M2 + A * M1 + A * M2 + C1 + C2, family = binomial(),
## data = getCall(x$reg.output$yreg)$data, weights = getCall(x$reg.output$yreg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2066 -0.5055 -0.0007 0.6383 3.3715
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.125104 0.478893 2.349 0.018804 *
## A 0.460265 0.400463 1.149 0.250419
## M1 -1.809307 0.180027 -10.050 < 2e-16 ***
## M21 -0.007101 0.364067 -0.020 0.984438
## M22 0.841167 0.405154 2.076 0.037879 *
## C1 0.504243 0.284671 1.771 0.076508 .
## C2 -0.643001 0.062025 -10.367 < 2e-16 ***
## A:M1 0.535812 0.183808 2.915 0.003556 **
## A:M21 0.129896 0.370967 0.350 0.726222
## A:M22 -1.447096 0.412172 -3.511 0.000447 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13336.6 on 9999 degrees of freedom
## Residual deviance: 7347.9 on 9990 degrees of freedom
## AIC: 7367.9
##
## Number of Fisher Scoring iterations: 10
##
##
## # Mediator regressions:
##
## Call:
## glm(formula = M1 ~ A + C1 + C2, family = poisson(), data = getCall(x$reg.output$mreg[[1L]])$data,
## weights = getCall(x$reg.output$mreg[[1L]])$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.4516 -1.0946 -0.2769 0.5079 3.4944
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.06240 0.05631 18.868 < 2e-16 ***
## A -2.00634 0.01331 -150.709 < 2e-16 ***
## C1 0.45102 0.05496 8.206 2.29e-16 ***
## C2 0.80084 0.01314 60.961 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 43205 on 9999 degrees of freedom
## Residual deviance: 10846 on 9996 degrees of freedom
## AIC: 33081
##
## Number of Fisher Scoring iterations: 5
##
##
## Call:
## nnet::multinom(formula = M2 ~ A + C1 + C2, data = getCall(x$reg.output$mreg[[2]])$data,
## trace = FALSE, weights = getCall(x$reg.output$mreg[[2]])$weights)
##
## Coefficients:
## (Intercept) A C1 C2
## 1 1.946698 -1.785773 -0.3220412 0.7256062
## 2 0.654218 0.688984 -1.7259629 0.4295399
##
## Std. Errors:
## (Intercept) A C1 C2
## 1 0.2620667 0.06393051 0.2550181 0.05235024
## 2 0.3129261 0.10149606 0.2996053 0.06106820
##
## Residual Deviance: 17966.15
## AIC: 17982.15
##
## # Effect decomposition on the risk ratio scale via the regression-based approach
##
## Direct counterfactual imputation estimation with
## bootstrap standard errors, percentile confidence intervals and p-values
##
## Estimate Std.error 95% CIL 95% CIU P.val
## Rcde 0.840859 0.046685 0.788612 0.851 <2e-16 ***
## Rpnde 2.540010 0.249404 2.203176 2.538 <2e-16 ***
## Rtnde 1.198066 0.147841 1.024302 1.223 <2e-16 ***
## Rpnie 22.289482 0.880313 22.434122 23.617 <2e-16 ***
## Rtnie 10.513453 0.127523 10.808614 10.980 <2e-16 ***
## Rte 26.704271 2.414681 24.190746 27.435 <2e-16 ***
## ERcde -6.683714 1.717727 -8.708034 -6.400 <2e-16 ***
## ERintref 8.223724 1.468323 7.939139 9.912 <2e-16 ***
## ERintmed 2.874780 3.045590 -0.625298 3.466 1
## ERpnie 21.289482 0.880313 21.434936 22.618 <2e-16 ***
## ERcde(prop) -0.260023 0.099297 -0.375913 -0.243 <2e-16 ***
## ERintref(prop) 0.319936 0.094601 0.300688 0.428 <2e-16 ***
## ERintmed(prop) 0.111841 0.117704 -0.027554 0.131 1
## ERpnie(prop) 0.828247 0.122399 0.811238 0.976 <2e-16 ***
## pm 0.940087 0.004695 0.941819 0.948 <2e-16 ***
## int 0.431777 0.023102 0.400231 0.431 <2e-16 ***
## pe 1.260023 0.099297 1.242507 1.376 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Rcde: controlled direct effect risk ratio; Rpnde: pure natural direct effect risk ratio; Rtnde: total natural direct effect risk ratio; Rpnie: pure natural indirect effect risk ratio; Rtnie: total natural indirect effect risk ratio; Rte: total effect risk ratio; ERcde: excess relative risk due to controlled direct effect; ERintref: excess relative risk due to reference interaction; ERintmed: excess relative risk due to mediated interaction; ERpnie: excess relative risk due to pure natural indirect effect; ERcde(prop): proportion ERcde; ERintref(prop): proportion ERintref; ERintmed(prop): proportion ERintmed; ERpnie(prop): proportion ERpnie; pm: overall proportion mediated; int: overall proportion attributable to interaction; pe: overall proportion eliminated)
##
## Relevant variable values:
## $a
## [1] 1
##
## $astar
## [1] 0
##
## $yval
## [1] "1"
##
## $mval
## $mval[[1]]
## [1] 0
##
## $mval[[2]]
## [1] 2
res_wb <- cmest(data = data, model = "wb", outcome = "Y", exposure = "A",
mediator = c("M1", "M2"), basec = c("C1", "C2"), EMint = TRUE,
ereg = "logistic", yreg = "logistic",
astar = 0, a = 1, mval = list(0, 2),
estimation = "imputation", inference = "bootstrap", nboot = 2)
summary(res_wb)
## Causal Mediation Analysis
##
## # Outcome regression:
##
## Call:
## glm(formula = Y ~ A + M1 + M2 + A * M1 + A * M2 + C1 + C2, family = binomial(),
## data = getCall(x$reg.output$yreg)$data, weights = getCall(x$reg.output$yreg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2066 -0.5055 -0.0007 0.6383 3.3715
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.125104 0.478893 2.349 0.018804 *
## A 0.460265 0.400463 1.149 0.250419
## M1 -1.809307 0.180027 -10.050 < 2e-16 ***
## M21 -0.007101 0.364067 -0.020 0.984438
## M22 0.841167 0.405154 2.076 0.037879 *
## C1 0.504243 0.284671 1.771 0.076508 .
## C2 -0.643001 0.062025 -10.367 < 2e-16 ***
## A:M1 0.535812 0.183808 2.915 0.003556 **
## A:M21 0.129896 0.370967 0.350 0.726222
## A:M22 -1.447096 0.412172 -3.511 0.000447 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13336.6 on 9999 degrees of freedom
## Residual deviance: 7347.9 on 9990 degrees of freedom
## AIC: 7367.9
##
## Number of Fisher Scoring iterations: 10
##
##
## # Exposure regression for weighting:
##
## Call:
## glm(formula = A ~ C1 + C2, family = binomial(), data = getCall(x$reg.output$ereg)$data,
## weights = getCall(x$reg.output$ereg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6126 -1.4791 0.8573 0.8867 0.9750
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.08342 0.21440 0.389 0.69723
## C1 0.60899 0.21208 2.872 0.00409 **
## C2 0.10532 0.04375 2.407 0.01606 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 12534 on 9999 degrees of freedom
## Residual deviance: 12520 on 9997 degrees of freedom
## AIC: 12526
##
## Number of Fisher Scoring iterations: 4
##
##
## # Effect decomposition on the risk ratio scale via the weighting-based approach
##
## Direct counterfactual imputation estimation with
## bootstrap standard errors, percentile confidence intervals and p-values
##
## Estimate Std.error 95% CIL 95% CIU P.val
## Rcde 0.840859 0.001153 0.843270 0.845 <2e-16 ***
## Rpnde 2.184496 0.124689 2.056035 2.224 <2e-16 ***
## Rtnde 1.197960 0.017578 1.135918 1.160 <2e-16 ***
## Rpnie 20.345349 1.376126 18.331408 20.180 <2e-16 ***
## Rtnie 11.157227 0.294594 10.127728 10.524 <2e-16 ***
## Rte 24.372911 1.917943 20.822968 23.400 <2e-16 ***
## ERcde -6.150317 0.544402 -5.782384 -5.051 <2e-16 ***
## ERintref 7.334812 0.669092 6.107188 7.006 <2e-16 ***
## ERintmed 2.843066 0.417128 1.436970 1.997 <2e-16 ***
## ERpnie 19.345349 1.376126 17.333768 19.183 <2e-16 ***
## ERcde(prop) -0.263139 0.002492 -0.258089 -0.255 <2e-16 ***
## ERintref(prop) 0.313817 0.003497 0.308008 0.313 <2e-16 ***
## ERintmed(prop) 0.121639 0.012419 0.072417 0.089 <2e-16 ***
## ERpnie(prop) 0.827682 0.013425 0.856280 0.874 <2e-16 ***
## pm 0.949322 0.001005 0.945382 0.947 <2e-16 ***
## int 0.435456 0.015916 0.380425 0.402 <2e-16 ***
## pe 1.263139 0.002492 1.254741 1.258 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Rcde: controlled direct effect risk ratio; Rpnde: pure natural direct effect risk ratio; Rtnde: total natural direct effect risk ratio; Rpnie: pure natural indirect effect risk ratio; Rtnie: total natural indirect effect risk ratio; Rte: total effect risk ratio; ERcde: excess relative risk due to controlled direct effect; ERintref: excess relative risk due to reference interaction; ERintmed: excess relative risk due to mediated interaction; ERpnie: excess relative risk due to pure natural indirect effect; ERcde(prop): proportion ERcde; ERintref(prop): proportion ERintref; ERintmed(prop): proportion ERintmed; ERpnie(prop): proportion ERpnie; pm: overall proportion mediated; int: overall proportion attributable to interaction; pe: overall proportion eliminated)
##
## Relevant variable values:
## $a
## [1] 1
##
## $astar
## [1] 0
##
## $yval
## [1] "1"
##
## $mval
## $mval[[1]]
## [1] 0
##
## $mval[[2]]
## [1] 2
res_iorw <- cmest(data = data, model = "iorw", outcome = "Y", exposure = "A",
mediator = c("M1", "M2"), basec = c("C1", "C2"), EMint = TRUE,
ereg = "logistic", yreg = "logistic",
astar = 0, a = 1, mval = list(0, 2),
estimation = "imputation", inference = "bootstrap", nboot = 2)
summary(res_iorw)
## Causal Mediation Analysis
##
## # Outcome regression for the total effect:
##
## Call:
## glm(formula = Y ~ A + C1 + C2, family = binomial(), data = getCall(x$reg.output$yregTot)$data,
## weights = getCall(x$reg.output$yregTot)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.6731 -1.0673 -0.1524 0.7688 2.5278
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.9946 0.2726 -10.987 <2e-16 ***
## A 4.1997 0.1205 34.855 <2e-16 ***
## C1 -0.1306 0.2473 -0.528 0.597
## C2 -1.3288 0.0534 -24.885 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13336.6 on 9999 degrees of freedom
## Residual deviance: 9397.2 on 9996 degrees of freedom
## AIC: 9405.2
##
## Number of Fisher Scoring iterations: 6
##
##
## # Outcome regression for the direct effect:
##
## Call:
## glm(formula = Y ~ A + C1 + C2, family = binomial(), data = getCall(x$reg.output$yregDir)$data,
## weights = getCall(x$reg.output$yregDir)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -4.7789 -0.0549 -0.0069 0.0818 8.4799
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.5600 0.7405 -2.107 0.0351 *
## A 1.7294 0.1460 11.848 <2e-16 ***
## C1 -1.2645 0.7413 -1.706 0.0880 .
## C2 -3.7661 0.4333 -8.691 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1926.6 on 9999 degrees of freedom
## Residual deviance: 1423.0 on 9996 degrees of freedom
## AIC: 1214.1
##
## Number of Fisher Scoring iterations: 8
##
##
## # Exposure regression for weighting:
##
## Call:
## glm(formula = A ~ M1 + M2 + C1 + C2, family = binomial(), data = getCall(x$reg.output$ereg)$data,
## weights = getCall(x$reg.output$ereg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.6520 -0.0024 0.0343 0.1447 3.1329
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.14163 0.58304 1.958 0.0502 .
## M1 -2.00321 0.05823 -34.402 < 2e-16 ***
## M21 0.08020 0.13700 0.585 0.5583
## M22 -0.01835 0.17781 -0.103 0.9178
## C1 3.43446 0.58316 5.889 3.88e-09 ***
## C2 4.84059 0.18684 25.907 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 12534.4 on 9999 degrees of freedom
## Residual deviance: 2139.2 on 9994 degrees of freedom
## AIC: 2151.2
##
## Number of Fisher Scoring iterations: 8
##
##
## # Effect decomposition on the risk ratio scale via the inverse odds ratio weighting approach
##
## Direct counterfactual imputation estimation with
## bootstrap standard errors, percentile confidence intervals and p-values
##
## Estimate Std.error 95% CIL 95% CIU P.val
## Rte 23.713831 1.745561 24.962887 27.308 <2e-16 ***
## Rpnde 4.483896 0.448867 4.168979 4.772 <2e-16 ***
## Rtnie 5.288667 0.197403 5.722561 5.988 <2e-16 ***
## pm 0.846618 0.008286 0.856622 0.868 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Rte: total effect risk ratio; Rpnde: pure natural direct effect risk ratio; Rtnie: total natural indirect effect risk ratio; pm: proportion mediated)
##
## Relevant variable values:
## $a
## [1] 1
##
## $astar
## [1] 0
##
## $yval
## [1] "1"
res_ne <- cmest(data = data, model = "ne", outcome = "Y", exposure = "A",
mediator = c("M1", "M2"), basec = c("C1", "C2"), EMint = TRUE,
yreg = "logistic",
astar = 0, a = 1, mval = list(0, 2),
estimation = "imputation", inference = "bootstrap", nboot = 2)
summary(res_ne)
## Causal Mediation Analysis
##
## # Outcome regression:
##
## Call:
## glm(formula = Y ~ A + M1 + M2 + A * M1 + A * M2 + C1 + C2, family = binomial(),
## data = getCall(x$reg.output$yreg)$data, weights = getCall(x$reg.output$yreg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2066 -0.5055 -0.0007 0.6383 3.3715
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.125104 0.478893 2.349 0.018804 *
## A 0.460265 0.400463 1.149 0.250419
## M1 -1.809307 0.180027 -10.050 < 2e-16 ***
## M21 -0.007101 0.364067 -0.020 0.984438
## M22 0.841167 0.405154 2.076 0.037879 *
## C1 0.504243 0.284671 1.771 0.076508 .
## C2 -0.643001 0.062025 -10.367 < 2e-16 ***
## A:M1 0.535812 0.183808 2.915 0.003556 **
## A:M21 0.129896 0.370967 0.350 0.726222
## A:M22 -1.447096 0.412172 -3.511 0.000447 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13336.6 on 9999 degrees of freedom
## Residual deviance: 7347.9 on 9990 degrees of freedom
## AIC: 7367.9
##
## Number of Fisher Scoring iterations: 10
##
##
##
## # Effect decomposition on the risk ratio scale via the natural effect model
##
## Direct counterfactual imputation estimation with
## bootstrap standard errors, percentile confidence intervals and p-values
##
## Estimate Std.error 95% CIL 95% CIU P.val
## Rcde 0.840859 0.086137 0.895442 1.011 1
## Rpnde 2.397002 0.104623 2.429955 2.571 <2e-16 ***
## Rtnde 1.212344 0.101779 1.330542 1.467 <2e-16 ***
## Rpnie 20.806505 1.917377 18.176285 20.752 <2e-16 ***
## Rtnie 10.523413 0.173974 10.741630 10.975 <2e-16 ***
## Rte 25.224641 0.701059 26.669640 27.612 <2e-16 ***
## ERcde -6.332043 3.477253 -4.288821 0.383 1
## ERintref 7.729045 3.581876 1.047182 5.859 <2e-16 ***
## ERintmed 3.021133 1.320940 5.284538 7.059 <2e-16 ***
## ERpnie 19.806505 1.917377 17.180793 19.757 <2e-16 ***
## ERcde(prop) -0.261389 0.131063 -0.160993 0.015 1
## ERintref(prop) 0.319057 0.133527 0.040616 0.220 <2e-16 ***
## ERintmed(prop) 0.124713 0.056884 0.198651 0.275 <2e-16 ***
## ERpnie(prop) 0.817618 0.054420 0.669220 0.742 <2e-16 ***
## pm 0.942331 0.002464 0.940984 0.944 <2e-16 ***
## int 0.443770 0.076643 0.315690 0.419 <2e-16 ***
## pe 1.261389 0.131063 0.984910 1.161 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Rcde: controlled direct effect risk ratio; Rpnde: pure natural direct effect risk ratio; Rtnde: total natural direct effect risk ratio; Rpnie: pure natural indirect effect risk ratio; Rtnie: total natural indirect effect risk ratio; Rte: total effect risk ratio; ERcde: excess relative risk due to controlled direct effect; ERintref: excess relative risk due to reference interaction; ERintmed: excess relative risk due to mediated interaction; ERpnie: excess relative risk due to pure natural indirect effect; ERcde(prop): proportion ERcde; ERintref(prop): proportion ERintref; ERintmed(prop): proportion ERintmed; ERpnie(prop): proportion ERpnie; pm: overall proportion mediated; int: overall proportion attributable to interaction; pe: overall proportion eliminated)
##
## Relevant variable values:
## $a
## [1] 1
##
## $astar
## [1] 0
##
## $yval
## [1] "1"
##
## $mval
## $mval[[1]]
## [1] 0
##
## $mval[[2]]
## [1] 2
res_gformula <- cmest(data = data, model = "gformula", outcome = "Y", exposure = "A",
mediator = c("M1", "M2"), basec = c("C1", "C2"), EMint = TRUE,
mreg = list("poisson", "multinomial"), yreg = "logistic",
astar = 0, a = 1, mval = list(0, 2),
estimation = "imputation", inference = "bootstrap", nboot = 2)
summary(res_gformula)
## Causal Mediation Analysis
##
## # Outcome regression:
##
## Call:
## glm(formula = Y ~ A + M1 + M2 + A * M1 + A * M2 + C1 + C2, family = binomial(),
## data = getCall(x$reg.output$yreg)$data, weights = getCall(x$reg.output$yreg)$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.2066 -0.5055 -0.0007 0.6383 3.3715
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.125104 0.478893 2.349 0.018804 *
## A 0.460265 0.400463 1.149 0.250419
## M1 -1.809307 0.180027 -10.050 < 2e-16 ***
## M21 -0.007101 0.364067 -0.020 0.984438
## M22 0.841167 0.405154 2.076 0.037879 *
## C1 0.504243 0.284671 1.771 0.076508 .
## C2 -0.643001 0.062025 -10.367 < 2e-16 ***
## A:M1 0.535812 0.183808 2.915 0.003556 **
## A:M21 0.129896 0.370967 0.350 0.726222
## A:M22 -1.447096 0.412172 -3.511 0.000447 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 13336.6 on 9999 degrees of freedom
## Residual deviance: 7347.9 on 9990 degrees of freedom
## AIC: 7367.9
##
## Number of Fisher Scoring iterations: 10
##
##
## # Mediator regressions:
##
## Call:
## glm(formula = M1 ~ A + C1 + C2, family = poisson(), data = getCall(x$reg.output$mreg[[1L]])$data,
## weights = getCall(x$reg.output$mreg[[1L]])$weights)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -3.4516 -1.0946 -0.2769 0.5079 3.4944
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.06240 0.05631 18.868 < 2e-16 ***
## A -2.00634 0.01331 -150.709 < 2e-16 ***
## C1 0.45102 0.05496 8.206 2.29e-16 ***
## C2 0.80084 0.01314 60.961 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for poisson family taken to be 1)
##
## Null deviance: 43205 on 9999 degrees of freedom
## Residual deviance: 10846 on 9996 degrees of freedom
## AIC: 33081
##
## Number of Fisher Scoring iterations: 5
##
##
## Call:
## nnet::multinom(formula = M2 ~ A + C1 + C2, data = getCall(x$reg.output$mreg[[2]])$data,
## trace = FALSE, weights = getCall(x$reg.output$mreg[[2]])$weights)
##
## Coefficients:
## (Intercept) A C1 C2
## 1 1.946698 -1.785773 -0.3220412 0.7256062
## 2 0.654218 0.688984 -1.7259629 0.4295399
##
## Std. Errors:
## (Intercept) A C1 C2
## 1 0.2620667 0.06393051 0.2550181 0.05235024
## 2 0.3129261 0.10149606 0.2996053 0.06106820
##
## Residual Deviance: 17966.15
## AIC: 17982.15
##
## # Effect decomposition on the risk ratio scale via the g-formula approach
##
## Direct counterfactual imputation estimation with
## bootstrap standard errors, percentile confidence intervals and p-values
##
## Estimate Std.error 95% CIL 95% CIU P.val
## Rcde 0.840859 0.065592 0.771998 0.860 <2e-16 ***
## Rpnde 2.628791 0.301244 2.110514 2.515 <2e-16 ***
## Rtnde 1.206834 0.190209 1.003274 1.259 1
## Rpnie 23.580908 1.786324 22.156678 24.556 <2e-16 ***
## Rtnie 10.825600 0.435251 11.088659 11.673 <2e-16 ***
## Rte 28.458238 2.421510 24.636897 27.890 <2e-16 ***
## ERcde -7.113482 2.684539 -9.594347 -5.988 <2e-16 ***
## ERintref 8.742273 2.383294 7.503828 10.706 <2e-16 ***
## ERintmed 3.248539 3.906589 -1.029096 4.219 1
## ERpnie 22.580908 1.786324 21.159954 23.560 <2e-16 ***
## ERcde(prop) -0.259065 0.136412 -0.406495 -0.223 <2e-16 ***
## ERintref(prop) 0.318384 0.129441 0.279567 0.453 <2e-16 ***
## ERintmed(prop) 0.118308 0.149237 -0.044273 0.156 1
## ERpnie(prop) 0.822373 0.156208 0.787431 0.997 <2e-16 ***
## pm 0.940681 0.006971 0.943658 0.953 <2e-16 ***
## int 0.436693 0.019796 0.409198 0.436 <2e-16 ***
## pe 1.259065 0.136412 1.223225 1.406 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Rcde: controlled direct effect risk ratio; Rpnde: pure natural direct effect risk ratio; Rtnde: total natural direct effect risk ratio; Rpnie: pure natural indirect effect risk ratio; Rtnie: total natural indirect effect risk ratio; Rte: total effect risk ratio; ERcde: excess relative risk due to controlled direct effect; ERintref: excess relative risk due to reference interaction; ERintmed: excess relative risk due to mediated interaction; ERpnie: excess relative risk due to pure natural indirect effect; ERcde(prop): proportion ERcde; ERintref(prop): proportion ERintref; ERintmed(prop): proportion ERintmed; ERpnie(prop): proportion ERpnie; pm: overall proportion mediated; int: overall proportion attributable to interaction; pe: overall proportion eliminated)
##
## Relevant variable values:
## $a
## [1] 1
##
## $astar
## [1] 0
##
## $yval
## [1] "1"
##
## $mval
## $mval[[1]]
## [1] 0
##
## $mval[[2]]
## [1] 2