Description Usage Arguments Details Value Author(s) References See Also Examples
'mediate' is used to estimate various quantities for causal mediation analysis, including average causal mediation effects (indirect effect), average direct effects, proportions mediated, and total effect.
1 2 3 4 5 6  mediate(model.m, model.y, sims = 1000, boot = FALSE,
boot.ci.type = "perc", treat = "treat.name", mediator = "med.name",
covariates = NULL, outcome = NULL, control = NULL,
conf.level = 0.95, control.value = 0, treat.value = 1,
long = TRUE, dropobs = FALSE, robustSE = FALSE, cluster = NULL,
group.out = NULL, use_speed = FALSE, ...)

model.m 
a fitted model object for mediator. Can be of class 'lm', 'polr', 'bayespolr', 'glm', 'bayesglm', 'gam', 'rq', 'survreg', or 'merMod'. 
model.y 
a fitted model object for outcome. Can be of class 'lm', 'polr', 'bayespolr', 'glm', 'bayesglm', 'gam', 'vglm', 'rq', 'survreg', or 'merMod'. 
sims 
number of Monte Carlo draws for nonparametric bootstrap or quasiBayesian approximation. 
boot 
a logical value. if 'FALSE' a quasiBayesian approximation is used for confidence intervals; if 'TRUE' nonparametric bootstrap will be used. Default is 'FALSE'. 
boot.ci.type 
a character string indicating the type of bootstrap confidence intervals. If "bca" and boot = TRUE, biascorrected and accelerated (BCa) confidence intervals will be estimated. If "perc" and boot = TRUE, percentile confidence intervals will be estimated. Default is "perc". 
treat 
a character string indicating the name of the treatment variable used in the models. The treatment can be either binary (integer or a twovalued factor) or continuous (numeric). 
mediator 
a character string indicating the name of the mediator variable used in the models. 
covariates 
a list or data frame containing values for a subset of the pretreatment covariates in 'model.m' and 'model.y'. If provided, the function will return the estimates conditional on those covariate values. 
outcome 
a character string indicating the name of the outcome variable in ‘model.y’. Only necessary if 'model.y' is of class 'survreg'; otherwise ignored. 
control 
a character string indicating the name of the control group indicator. Only relevant if 'model.y' is of class 'gam'. If provided, 'd0', 'z0' and 'n0' are allowed to differ from 'd1', 'z1' and 'n1', respectively. 
conf.level 
level of the returned twosided confidence intervals. Default is to return the 2.5 and 97.5 percentiles of the simulated quantities. 
control.value 
value of the treatment variable used as the control condition. Default is 0. 
treat.value 
value of the treatment variable used as the treatment condition. Default is 1. 
long 
a logical value. If 'TRUE', the output will contain the entire sets of simulation draws of the the average causal mediation effects, direct effects, proportions mediated, and total effect. Default is 'TRUE'. 
dropobs 
a logical value indicating the behavior when the model frames of 'model.m' and 'model.y' (and the 'cluster' variable if included) are composed of different observations. If 'TRUE', models will be refitted using common data rows. If 'FALSE', error is returned. Default is 'FALSE'. 
robustSE 
a logical value. If 'TRUE', heteroskedasticityconsistent
standard errors will be used in quasiBayesian simulations. Ignored if
'boot' is 'TRUE' or neither 'model.m' nor 'model.y' has a method for

cluster 
a variable indicating clusters for standard errors. Note that this should be a vector of cluster indicators itself, not a character string for the name of the variable. 
group.out 
a character string indicating the name of the lmer/glmer group on which the mediate output is based. Can be used even when a merMod function is applied to only one of the mediator or the outcome. If merMod functions are applied to both the mediator and the outcome, default is the group name used in the outcome model; if the mediator group and the outcome group are different and the user is interested in the mediate output based on the mediator group, then set group.out to the group name used in the mediator merMod model. If a merMod function is applied to only one of the mediator or the outcome, group.out is automatically set to the group name used in the merMod model. 
use_speed 
a logical value indicating whether, if nonparametric
bootstrap is used, 
... 
other arguments passed to 
This is the workhorse function for estimating causal mediation effects for a variety of data types. The average causal mediation effect (ACME) represents the expected difference in the potential outcome when the mediator took the value that would realize under the treatment condition as opposed to the control condition, while the treatment status itself is held constant. That is,
δ(t) = E[Y(t, M(t1))  Y(t, M(t0))],
where t, t1, t0 are particular values of the treatment T such that t1 != t0, M(t) is the potential mediator, and Y(t,m) is the potential outcome variable. The average direct effect (ADE) is defined similarly as,
ζ(t) = E[Y(t1, M(t))  Y(t0, M(t))],
which represents the expected difference in the potential outcome when the treatment is changed but the mediator is held constant at the value that would realize if the treatment equals t. The two quantities on average add up to the total effect of the treatment on the outcome, τ. See the references for more details.
When both the mediator model ('model.m') and outcome model ('model.y') are normal linear regressions, the results will be identical to the usual LSEM method by Baron and Kenny (1986). The function can, however, accommodate other data types including binary, ordered and count outcomes and mediators as well as censored outcomes. Variables can also be modeled nonparametrically, semiparametrically, or using quantile regression.
If it is desired that inference be made conditional on specific values of the pretreatment covariates included in the model, the ‘covariates’ argument can be used to set those values as a list or data frame. The list may contain either the entire set or any strict subset of the covariates in the model; in the latter case, the effects will be averaged over the other covariates. The ‘covariates’ argument will be particularly useful when the models contain interactions between the covariates and the treatment and/or mediator (known as “moderated mediation”).
The prior weights in the mediator and outcome models are taken as sampling weights and the estimated effects will be weighted averages when nonNULL weights are used in fitting 'model.m' and 'model.y'. This will be useful when data does not come from a simple random sample, for example.
As of version 4.0, the mediator model can be of either 'lm', 'glm' (or
‘bayesglm’), 'polr' (or ‘bayespolr’), 'gam', 'rq', ‘survreg’, or ‘merMod’
class, corresponding respectively to the linear regression models,
generalized linear models, ordered response models, generalized additive
models, quantile regression models, parametric duration models, or
multilevel models.. For binary response models, the 'mediator' must be a
numeric variable with values 0 or 1 as opposed to a factor.
Quasilikelihoodbased inferences are not allowed for the mediator model
because the functional form must be exactly specified for the estimation
algorithm to work. The 'binomial' family can only be used for binary
response mediators and cannot be used for multipletrial responses. This
is due to conflicts between how the latter type of models are implemented
in glm
and how 'mediate' is currently written.
For the outcome model, the censored regression model fitted via package
VGAM
(of class 'vglm' with 'family@vfamily' equal to "tobit") can be
used in addition to the models listed above for the mediator. The
'mediate' function is not compatible with censored regression models fitted
via other packages. When the quantile regression is used for the outcome
model ('rq'), the estimated quantities are quantile causal mediation
effects, quantile direct effects and etc., instead of the average effects.
If the outcome model is of class 'survreg', the name of the outcome
variable must be explicitly supplied in the ‘outcome’ argument. This is due
to the fact that 'survreg' objects do not contain that information in an
easily extractable form. It should also be noted that for
survreg
models, the Surv
function must be
directly used in the model formula in the call to the survreg function, and
that censoring types requiring more than two arguments to Surv (e.g.,
interval censoring) are not currently supported by 'mediate'.
The quasiBayesian approximation (King et al. 2000) cannot be used if 'model.m' is of class 'rq' or 'gam', or if 'model.y' is of class 'gam', 'polr' or 'bayespolr'. In these cases, either an error message is returned or use of the nonparametric bootstrap is forced. Users should note that use of the nonparametric bootstrap often requires significant computing time, especially when 'sims' is set to a large value.
The 'control' argument must be provided when 'gam' is used for the outcome
model and user wants to allow ACME and ADE to vary as functions of the
treatment (i.e., to relax the "no interaction" assumption). Note that the
outcome model must be fitted via package mgcv
with
appropriate formula using s
constructs (see Imai et al. 2009
in the references). For other model types, the interaction can be allowed
by including an interaction term between T and M in the linear
predictor of the outcome model. As of version 3.0, the 'INT' argument is
deprecated and the existence of the interaction term is automatically
detected (except for 'gam' outcome models).
When the treatment variable is continuous or a factor with multiple levels, user must specify the values of t1 and t0 using the 'treat.value' and 'control.value' arguments, respectively. The value of t in the above expressions is set to t0 for 'd0', 'z0', etc. and to t1 for 'd1', 'z1', etc.
mediate
returns an object of class "mediate
",
"mediate.order
" if the outcome model used is 'polr' or 'bayespolr',
or "mediate.mer
" if 'lmer' or 'glmer' is used for the outcome or the
mediator model, a list that contains the components listed below. Some of
these elements are not available if 'long' is set to 'FALSE' by the user.
The function summary
(i.e., summary.mediate
,
summary.mediate.order
, or summary.mediate.mer
) can be used to
obtain a table of the results. The function plot
(i.e.,
plot.mediate
, plot.mediate.order
, or plot.mediate.mer
)
can be used to produce a plot of the estimated average causal mediation,
average direct, and total effects along with their confidence intervals.
d0, d1 
point estimates for average causal mediation effects under the control and treatment conditions. 
d0.ci, d1.ci 
confidence intervals for average causal mediation effects. The confidence level is set at the value specified in 'conf.level'. 
d0.p, d1.p 
twosided pvalues for average causal mediation effects. 
d0.sims, d1.sims 
vectors of length 'sims' containing simulation draws of average causal mediation effects. 
z0, z1 
point estimates for average direct effect under the control and treatment conditions. 
z0.ci, z1.ci 
confidence intervals for average direct effects. 
z0.p, z1.p 
twosided pvalues for average causal direct effects. 
z0.sims, z1.sims 
vectors of length 'sims' containing simulation draws of average direct effects. 
n0, n1 
the "proportions mediated", or the size of the average causal mediation effects relative to the total effect. 
n0.ci, n1.ci 
confidence intervals for the proportions mediated. 
n0.p, n1.p 
twosided pvalues for proportions mediated. 
n0.sims, n1.sims 
vectors of length 'sims' containing simulation draws of the proportions mediated. 
tau.coef 
point estimate for total effect. 
tau.ci 
confidence interval for total effect. 
tau.p 
twosided pvalues for total effect. 
tau.sims 
a vector of length 'sims' containing simulation draws of the total effect. 
d.avg, z.avg, n.avg 
simple averages of d0 and d1, z0 and z1, n0 and n1, respectively, which users may want to use as summary values when those quantities differ. 
d.avg.ci, z.avg.ci, n.avg.ci 
confidence intervals for the above. 
d.avg.p, z.avg.p, n.avg.p 
twosided pvalues for the above. 
d.avg.sims, z.avg.sims, n.avg.sims 
vectors of length 'sims' containing simulation draws of d.avg, z.avg and n.avg, respectively. 
d0.group, d1.group 
groupspecific point estimates for average causal mediation effects under the control and treatment conditions. 
d0.ci.group, d1.ci.group 
groupspecific confidence intervals for average causal mediation effects. The confidence level is set at the value specified in 'conf.level'. 
d0.p.group, d1.p.group 
groupspecific twosided pvalues for average causal mediation effects. 
d0.sims.group, d1.sims.group 
groupspecific vectors of length 'sims' containing simulation draws of average causal mediation effects. 
z0.group, z1.group 
groupspecific point estimates for average direct effect under the control and treatment conditions. 
z0.ci.group, z1.ci.group 
groupspecific confidence intervals for average direct effects. 
z0.p.group, z1.p.group 
groupspecific twosided pvalues for average causal direct effects. 
z0.sims.group, z1.sims.group 
groupspecific vectors of length 'sims' containing simulation draws of average direct effects. 
n0.group, n1.group 
the groupspecific "proportions mediated", or the size of the groupspecific average causal mediation effects relative to the total effect. 
n0.ci.group, n1.ci.group 
groupspecific confidence intervals for the proportions mediated. 
n0.p.group, n1.p.group 
groupspecific twosided pvalues for proportions mediated. 
n0.sims.group, n1.sims.group 
groupspecific vectors of length 'sims' containing simulation draws of the proportions mediated. 
tau.coef.group 
groupspecific point estimate for total effect. 
tau.ci.group 
groupspecific confidence interval for total effect. 
tau.p.group 
groupspecific twosided pvalues for total effect. 
tau.sims.group 
a groupspecific vector of length 'sims' containing simulation draws of the total effect. 
d.avg.group, z.avg.group, n.avg.group 
groupspecific simple averages of d0 and d1, z0 and z1, n0 and n1, respectively, which users may want to use as summary values when those quantities differ. 
d.avg.ci.group, z.avg.ci.group, n.avg.ci.group 
groupspecific confidence intervals for the above. 
d.avg.p.group, z.avg.p.group, n.avg.p.group 
groupspecific twosided pvalues for the above. 
d.avg.sims.group, z.avg.sims.group, n.avg.sims.group 
groupspecific vectors of length 'sims' containing simulation draws of d.avg, z.avg and n.avg, respectively. 
boot 
logical, the 'boot' argument used. 
treat 
a character string indicating the name of the 'treat' variable used. 
mediator 
a character string indicating the name of the 'mediator' variable used. 
INT 
a logical value indicating whether the model specification allows the effects to differ between the treatment and control conditions. 
conf.level 
the confidence level used. 
model.y 
the outcome model used. 
model.m 
the mediator model used. 
group.m 
the name of the mediator group used. 
group.y 
the name of the outcome group used. 
group.name 
the name of the group on which the output is based. 
group.id.m 
the data on the mediator group. 
group.id.y 
the data on the outcome group. 
group.id 
the data on the group on which the output is based. 
control.value 
value of the treatment variable used as the control condition. 
treat.value 
value of the treatment variable used as the treatment condition. 
nobs 
number of observations in the model frame for 'model.m' and 'model.y'. May differ from the numbers in the original models input to 'mediate' if 'dropobs' was 'TRUE'. 
robustSE 
‘TRUE’ or ‘FALSE’. 
cluster 
the clusters used. 
Dustin Tingley, Harvard University, dtingley@gov.harvard.edu; Teppei Yamamoto, Massachusetts Institute of Technology, teppei@mit.edu; Luke Keele, Penn State University, ljk20@psu.edu; Kosuke Imai, Princeton University, kimai@princeton.edu; Kentaro Hirose, Princeton University, hirose@princeton.edu.
Tingley, D., Yamamoto, T., Hirose, K., Imai, K. and Keele, L. (2014). "mediation: R package for Causal Mediation Analysis", Journal of Statistical Software, Vol. 59, No. 5, pp. 138.
Imai, K., Keele, L., Tingley, D. and Yamamoto, T. (2011). Unpacking the Black Box of Causality: Learning about Causal Mechanisms from Experimental and Observational Studies, American Political Science Review, Vol. 105, No. 4 (November), pp. 765789.
Imai, K., Keele, L. and Tingley, D. (2010) A General Approach to Causal Mediation Analysis, Psychological Methods, Vol. 15, No. 4 (December), pp. 309334.
Imai, K., Keele, L. and Yamamoto, T. (2010) Identification, Inference, and Sensitivity Analysis for Causal Mediation Effects, Statistical Science, Vol. 25, No. 1 (February), pp. 5171.
Imai, K., Keele, L., Tingley, D. and Yamamoto, T. (2009) "Causal Mediation Analysis Using R" in Advances in Social Science Research Using R, ed. H. D. Vinod New York: Springer.
medsens
, plot.mediate
,
summary.mediate
, summary.mediate.mer
,
plot.mediate.mer
, mediations
, vcovHC
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150  # Examples with JOBS II Field Experiment
# **For illustration purposes a small number of simulations are used**
data(jobs)
####################################################
# Example 1: Linear Outcome and Mediator Models
####################################################
b < lm(job_seek ~ treat + econ_hard + sex + age, data=jobs)
c < lm(depress2 ~ treat + job_seek + econ_hard + sex + age, data=jobs)
# Estimation via quasiBayesian approximation
contcont < mediate(b, c, sims=50, treat="treat", mediator="job_seek")
summary(contcont)
plot(contcont)
## Not run:
# Estimation via nonparametric bootstrap
contcont.boot < mediate(b, c, boot=TRUE, sims=50, treat="treat", mediator="job_seek")
summary(contcont.boot)
## End(Not run)
# Allowing treatmentmediator interaction
d < lm(depress2 ~ treat + job_seek + treat:job_seek + econ_hard + sex + age, data=jobs)
contcont.int < mediate(b, d, sims=50, treat="treat", mediator="job_seek")
summary(contcont.int)
# Allowing ``moderated mediation'' with respect to age
b.int < lm(job_seek ~ treat*age + econ_hard + sex, data=jobs)
d.int < lm(depress2 ~ treat*job_seek*age + econ_hard + sex, data=jobs)
contcont.age20 < mediate(b.int, d.int, sims=50, treat="treat", mediator="job_seek",
covariates = list(age = 20))
contcont.age70 < mediate(b.int, d.int, sims=50, treat="treat", mediator="job_seek",
covariates = list(age = 70))
summary(contcont.age20)
summary(contcont.age70)
# Continuous treatment
jobs$treat_cont < jobs$treat + rnorm(nrow(jobs)) # (hypothetical) continuous treatment
b.contT < lm(job_seek ~ treat_cont + econ_hard + sex + age, data=jobs)
c.contT < lm(depress2 ~ treat_cont + job_seek + econ_hard + sex + age, data=jobs)
contcont.cont < mediate(b.contT, c.contT, sims=50,
treat="treat_cont", mediator="job_seek",
treat.value = 4, control.value = 2)
summary(contcont.cont)
# Categorical treatment
## Not run:
b < lm(job_seek ~ educ + sex, data=jobs)
c < lm(depress2 ~ educ + job_seek + sex, data=jobs)
# compare two categories of educ  gradwk and somcol
model.cat < mediate(b, c, treat="educ", mediator="job_seek", sims=50,
control.value = "gradwk", treat.value = "somcol")
summary(model.cat)
## End(Not run)
######################################################
# Example 2: Binary Outcome and Ordered Mediator
######################################################
## Not run:
jobs$job_disc < as.factor(jobs$job_disc)
b.ord < polr(job_disc ~ treat + econ_hard + sex + age, data=jobs,
method="probit", Hess=TRUE)
d.bin < glm(work1 ~ treat + job_disc + econ_hard + sex + age, data=jobs,
family=binomial(link="probit"))
ordbin < mediate(b.ord, d.bin, sims=50, treat="treat", mediator="job_disc")
summary(ordbin)
# Using heteroskedasticityconsistent standard errors
ordbin.rb < mediate(b.ord, d.bin, sims=50, treat="treat", mediator="job_disc",
robustSE=TRUE)
summary(ordbin.rb)
# Using nonparametric bootstrap
ordbin.boot < mediate(b.ord, d.bin, sims=50, treat="treat", mediator="job_disc",
boot=TRUE)
summary(ordbin.boot)
## End(Not run)
######################################################
# Example 3: Quantile Causal Mediation Effect
######################################################
require(quantreg)
c.quan < rq(depress2 ~ treat + job_seek + econ_hard + sex + age, data=jobs,
tau = 0.5) # median
contquan < mediate(b, c.quan, sims=50, treat="treat", mediator="job_seek")
summary(contquan)
######################################################
# Example 4: GAM Outcome
######################################################
## Not run:
require(mgcv)
c.gam < gam(depress2 ~ treat + s(job_seek, bs="cr") +
econ_hard + sex + age, data=jobs)
contgam < mediate(b, c.gam, sims=10, treat="treat",
mediator="job_seek", boot=TRUE)
summary(contgam)
# With interaction
d.gam < gam(depress2 ~ treat + s(job_seek, by = treat) +
s(job_seek, by = control) + econ_hard + sex + age, data=jobs)
contgam.int < mediate(b, d.gam, sims=10, treat="treat", mediator="job_seek",
control = "control", boot=TRUE)
summary(contgam.int)
## End(Not run)
######################################################
# Example 5: Multilevel Outcome and Mediator Models
######################################################
## Not run:
require(lme4)
# educ: mediator group
# occp: outcome group
# Varying intercept for mediator
model.m < glmer(job_dich ~ treat + econ_hard + (1  educ),
family = binomial(link = "probit"), data = jobs)
# Varying intercept and slope for outcome
model.y < glmer(work1 ~ treat + job_dich + econ_hard + (1 + treat  occp),
family = binomial(link = "probit"), data = jobs)
# Output based on mediator group ("educ")
multilevel < mediate(model.m, model.y, treat = "treat",
mediator = "job_dich", sims=50, group.out="educ")
# Output based on outcome group ("occp")
# multilevel < mediate(model.m, model.y, treat = "treat",
mediator = "job_dich", sims=50)
# Groupaverage effects
summary(multilevel)
# Groupspecific effects organized by effect
summary(multilevel, output="byeffect")
# plot(multilevel, group.plots=TRUE)
# See summary.mediate.mer and plot.mediate.mer for detailed explanations
# Groupspecific effects organized by group
summary(multilevel, output="bygroup")
# See summary.mediate.mer for detailed explanations
## End(Not run)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.