Doing a straightforward mediation analysis, a => b => c (indirect effect) and a => c (direct effect).
If I do this in
mediation::mediate(), I get
Estimate 95% CI Lower 95% CI Upper p-value
ACME 0.02020 -0.00349 0.04934 0.10
ADE -0.10003 -0.17762 -0.01430 0.02
Total Effect -0.07984 -0.15468 0.00584 0.06
Notice this gives me the direct effect a => c (ADE) and an indirect effect a => b => c (ACME), but does not break out a => b and b => c effects.
In contrast, when I use
lavaan, I get
lhs op rhs label est se z pvalue ci.lower
1 c ~ a c -0.101 0.041 -2.465 0.014 -0.182
2 b ~ a a 0.260 0.064 4.065 0.000 0.135
3 c ~ b b 0.080 0.045 1.776 0.076 -0.008
4 c ~~ c 0.072 0.007 9.644 0.000 0.058
5 b ~~ b 0.191 0.020 9.644 0.000 0.152
6 a ~~ a 0.250 0.000 NA NA 0.250
7 indirect := a*b indirect 0.021 0.013 1.628 0.104 -0.004
8 direct := c direct -0.101 0.041 -2.465 0.014 -0.182
9 total := c+(a*b) total -0.081 0.040 -2.026 0.043 -0.159
The direct, indirect, and total effects match up very well between packages. However, I'd like to get the path coefficients in
mediation::mediate like I do in
lavaan. Finding those is my question.
I tried a 2SLS approach, but I don't get the right values. If I do a regression
bOnA <- lm( b ~ a ) where a is a binary factor treatment variable and b is a continuous variable, then I get
lavaan's coefficient (.26) when I don't standardize anything and include the intercept. I assume that for the 2nd stage I should use
b <- predict(bOnA, type="response") and
cOnB <- lm( c ~ b ) but I can't seem to get a coefficient from the 2nd stage model cOnB that has a coefficient matching
Interestingly, if I divide the
mediate() indirect effect by .26, I get .077, which is basically
lavaan's output. So it seem that things are correct up to that point.
I've tried variations of the 2nd stage model with centering, standardizing, and removing the intercept to no avail.
My goal is to get this working for a simple case, because I want to use
mediate() for more complex models than
lavaan can handle.