NOTE: Code for this page was tested in Stata 12.
Mediation analysis with multiply imputed data takes a few more step than for a conventional non-imputed model. We looked at one approach on our page How can I compute indirect effects with imputed data? (Method 1). The approach shown on this page is a bit easier to implement and less convoluted.
Let’s begin by looking at the data.
use https://stats.idre.ucla.edu/stat/data/hsbmar, clear
sum science read math female
Variable | Obs Mean Std. Dev. Min Max
-------------+--------------------------------------------------------
science | 193 51.57513 9.86396 26 74
read | 185 51.61622 10.19104 28 76
math | 190 52.17895 9.246168 33 75
female | 185 .5459459 .4992356 0 1
As you can see from the table above, all of the variables have a different number of observations. For our example science is the dependent variable, read is the mediator, math is the independent variable and female is a covariate.
The method we will use to compute an indirect effect involves the sureg and nlcom commands to get the product of coefficients.
Let’s go ahead and start our example analysis by performing the multiple imputation.
mi set mlong
mi register imputed read math science female
set seed 485769
mi impute mvn read math science female = write, add(20)
Performing EM optimization:
observed log likelihood = -1349.5408 at iteration 7
Performing MCMC data augmentation ...
Multivariate imputation Imputations = 20
Multivariate normal regression added = 20
Imputed: m=1 through m=20 updated = 0
Prior: uniform Iterations = 2000
burn-in = 100
between = 100
------------------------------------------------------------------
| Observations per m
|----------------------------------------------
Variable | Complete Incomplete Imputed | Total
-------------------+-----------------------------------+----------
read | 185 15 15 | 200
math | 190 10 10 | 200
science | 193 7 7 | 200
female | 185 15 15 | 200
------------------------------------------------------------------
(complete + incomplete = total; imputed is the minimum across m
of the number of filled-in observations.)
If you try to run mi estimate: sureg (read math female)(science read math female) you will get an error message that sureg is not officially supported. However if you add the cmdok option it will run just fine. We also need the equivalent of the nlcom command. We can do this by adding effects directly to the mi analyze command. As shown below, we have added indirect and total effects in parentheses. Each of the effects is labeled, ind_eff for the indirect effect and tot_eff for the total effect..
mi estimate (ind_eff: [read]_b[math]*[science]_b[read]) ///
(tot_eff: [read]_b[math]*[science]_b[read] + [science]_b[math]), cmdok: ///
sureg (read math)(science read math)
Multiple-imputation estimates Imputations = 20
Number of obs = 200
Average RVI = 0.1138
Largest FMI = 0.1688
DF adjustment: Large sample DF: min = 686.04
avg = 1495.76
max = 2377.41
------------------------------------------------------------------------------
| Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
read |
math | .7038385 .0628724 11.19 0.000 .5805186 .8271584
_cons | 15.10742 3.321185 4.55 0.000 8.594701 21.62014
-------------+----------------------------------------------------------------
science |
read | .3721145 .0692032 5.38 0.000 .2363619 .5078671
math | .4097015 .0780576 5.25 0.000 .256441 .562962
_cons | 11.00745 3.273573 3.36 0.001 4.585789 17.42911
------------------------------------------------------------------------------
Transformations Average RVI = 0.1315
Largest FMI = 0.1098
DF adjustment: Large sample DF: min = 1607.17
avg = 1652.73
max = 1698.29
ind_eff: [read]_b[math]*[science]_b[read]
tot_eff: [read]_b[math]*[science]_b[read] + [science]_b[math]
------------------------------------------------------------------------------
| Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
ind_eff | .2618675 .0538953 4.86 0.000 .1561551 .36758
tot_eff | .671569 .0623058 10.78 0.000 .5493647 .7937733
------------------------------------------------------------------------------
As you can see, the information for the indirect and total effects is added on below the results for the sureg command. If we divide the indirect effect by the total effect we can see the proportion of the total effect that is mediated.
display .26186753/.67156901 .38993391
In this example approximately 39% of the total effect is mediated.
This method of computing indirect effects is superior than Method 1 because it computes the indirect effects for each imputed dataset than then combines them using Rubin’s rules rather than computing the indirect effects once on the final imputed sureg.
