Moderated Mediation(PROCESS Macro Model 59)

Sample Data

set.seed(42)
# path a strength
a=.3
# path b strength
b=.3
# path c' strength
cp=.2
#  people
n <- 300
# Normal distribution of time (mins)
X <- rnorm(n, 5, 2)
# Moderator
Mod<-runif(n, 0, 6)
# Mediator
M <- a*X*Mod+rnorm(n, 0, 3)
# Our equation to  create Y
Y <- cp*X*Mod + b*M + M*Mod + rnorm(n, sd=7)
#Built our data frame
Marshmallow.Mod<-data.frame(Success=Y,Time=X,Trust=M,Parents=Mod)
str(Marshmallow.Mod)
'data.frame':   300 obs. of  4 variables:
 $ Success: num  3.34 -9.9 45.18 8.21 7.01 ...
 $ Time   : num  7.74 3.87 5.73 6.27 5.81 ...
 $ Trust  : num  3.03 1.22 8.52 2.22 5.7 ...
 $ Parents: num  2.99 1.7 4.66 1.82 3.09 ...

Package Loading

library(processR)
library(lavaan)

Conceptual Model and Statistical Model

labels=list(X="Time",M="Trust",Y="Success",W="Parents")
pmacroModel(59,labels=labels)

statisticalDiagram(59,labels=labels)

Make Regression Equation

moderator=list(name="Parents",site=list(c("a","b","c")))
equations=tripleEquation(labels=labels,moderator=moderator,mode=1) 
cat(equations)
Trust~Time+Parents+Time:Parents
Success~Trust+Parents+Trust:Parents+Time+Parents+Time:Parents

Summary of Regression Models

fit=eq2fit(equations,data=Marshmallow.Mod)
modelsSummaryTable(fit,labels=labels)

Consequent

M(Trust)

Y(Success)

Antecedent

Coef

SE

t

p

Coef

SE

t

p

X(Time)

0.060

0.184

0.328

.743

0.092

0.494

0.186

.852

W(Parents)

-0.122

0.296

-0.413

.680

0.523

0.744

0.702

.483

X:W(Time:Parents)

0.319

0.056

5.738

<.001

M(Trust)

0.222

0.277

0.801

.424

M:W(Trust:Parents)

1.028

0.079

13.050

<.001

W:X(Parents:Time)

0.100

0.167

0.597

.551

Constant

-0.430

0.958

-0.449

.654

-0.752

2.413

-0.312

.755

Observations

300

300

R2

0.568

0.914

Adjusted R2

0.564

0.913

Residual SE

3.004 ( df = 296)

7.549 ( df = 294)

F statistic

F(3,296) = 129.919, p < .001

F(5,294) = 626.344, p < .001

SEM Approach

Make SEM equation

model=tripleEquation(labels=labels,moderator=moderator)
cat(model)
Trust~a1*Time+a2*Parents+a3*Time:Parents
Success~b1*Trust+b2*Parents+b3*Trust:Parents+c1*Time+c2*Parents+c3*Time:Parents
Parents ~ Parents.mean*1
Parents ~~ Parents.var*Parents
indirect :=(a1+a3*Parents.mean)*(b1+b3*Parents.mean)
direct :=c1+c3*Parents.mean
total := direct + indirect
prop.mediated := indirect / total
indirect.below :=(a1+a3*(Parents.mean-sqrt(Parents.var)))*(b1+b3*(Parents.mean-sqrt(Parents.var)))
indirect.above :=(a1+a3*(Parents.mean+sqrt(Parents.var)))*(b1+b3*(Parents.mean+sqrt(Parents.var)))
direct.below:=c1+c3*(Parents.mean-sqrt(Parents.var))
direct.above:=c1+c3*(Parents.mean+sqrt(Parents.var))
total.below := direct.below + indirect.below
total.above := direct.above + indirect.above
prop.mediated.below := indirect.below / total.below
prop.mediated.above := indirect.above / total.above

Analysis with sem

semfit=sem(model=model,data=Marshmallow.Mod,se="boot",bootstrap=200)
summary(semfit,ci=TRUE)
lavaan 0.6-3 ended normally after 58 iterations

  Optimization method                           NLMINB
  Number of free parameters                         23

  Number of observations                           300

  Estimator                                         ML
  Model Fit Test Statistic                    1023.150
  Degrees of freedom                                 4
  P-value (Chi-square)                           0.000

Parameter Estimates:

  Standard Errors                            Bootstrap
  Number of requested bootstrap draws              200
  Number of successful bootstrap draws             200

Regressions:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
  Trust ~                                                               
    Time      (a1)    0.060    0.168    0.359    0.720   -0.302    0.406
    Parents   (a2)   -0.122    0.269   -0.455    0.649   -0.671    0.372
    Tim:Prnts (a3)    0.319    0.051    6.220    0.000    0.219    0.420
  Success ~                                                             
    Trust     (b1)    0.222    0.276    0.806    0.420   -0.413    0.763
    Parents   (b2)    0.523    0.737    0.709    0.479   -0.786    2.108
    Trst:Prnt (b3)    1.028    0.077   13.365    0.000    0.870    1.201
    Time      (c1)    0.092    0.589    0.156    0.876   -1.120    1.368
    Tim:Prnts (c3)    0.100    0.182    0.551    0.581   -0.257    0.480

Covariances:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
  Time ~~                                                               
    Time:Parents     12.535    1.370    9.153    0.000    9.841   15.335
    Trust:Parents    16.526    2.527    6.539    0.000   11.593   21.562
  Time:Parents ~~                                                       
    Trust:Parents   200.557   16.727   11.990    0.000  169.666  238.572

Intercepts:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
    Parents (Prn.)    2.987    0.104   28.809    0.000    2.804    3.203
   .Trust            -0.430    0.892   -0.482    0.630   -2.168    1.461
   .Success          -0.752    2.699   -0.279    0.780   -6.682    4.637
    Time              4.956    0.100   49.579    0.000    4.746    5.154
    Tm:Prnt          15.059    0.620   24.284    0.000   13.892   16.512
    Trst:Pr          17.359    1.203   14.436    0.000   15.054   19.773

Variances:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
    Parents (Prn.)    2.884    0.143   20.096    0.000    2.597    3.137
   .Trust             8.906    0.679   13.118    0.000    7.476   10.191
   .Success          55.849    4.657   11.993    0.000   46.316   64.079
    Time              3.886    0.347   11.183    0.000    3.305    4.642
    Tm:Prnt         121.480    8.642   14.058    0.000  107.237  142.084
    Trst:Pr         448.494   39.953   11.225    0.000  365.429  546.664

Defined Parameters:
                   Estimate  Std.Err  z-value  P(>|z|) ci.lower ci.upper
    indirect          3.336    0.408    8.173    0.000    2.617    4.283
    direct            0.391    0.308    1.267    0.205   -0.306    0.949
    total             3.726    0.419    8.899    0.000    2.877    4.708
    prop.mediated     0.895    0.080   11.138    0.000    0.748    1.093
    indirect.below    0.729    0.243    3.000    0.003    0.311    1.311
    indirect.above    7.833    0.761   10.293    0.000    6.185    9.583
    direct.below      0.221    0.408    0.541    0.588   -0.714    1.018
    direct.above      0.561    0.461    1.215    0.224   -0.363    1.467
    total.below       0.950    0.397    2.391    0.017    0.212    1.715
    total.above       8.394    0.788   10.648    0.000    6.696    9.882
    prop.medtd.blw    0.768    1.320    0.581    0.561    0.310    3.678
    prop.meditd.bv    0.933    0.053   17.607    0.000    0.834    1.048

Statistical Model

statisticalDiagram(59,labels=labels,fit=semfit,whatLabel = "est")

Estimates Table

estimatesTable2(semfit,vanilla=TRUE)

Variables

Predictors

B

SE

z

p

β

Trust

Time

0.06

0.17

0.36

0.720

0.03

Trust

Parents

-0.12

0.27

-0.45

0.649

-0.04

Trust

Time:Parents

0.32

0.05

6.22

< 0.001

0.75

Success

Trust

0.22

0.28

0.81

0.420

0.04

Success

Parents

0.52

0.74

0.71

0.479

0.04

Success

Trust:Parents

1.03

0.08

13.37

< 0.001

0.88

Success

Time

0.09

0.59

0.16

0.876

0.01

Success

Time:Parents

0.10

0.18

0.55

0.581

0.04

Correlation

corTable2(semfit)

rowname

Trust

Success

Time

Parents

Time.Parents

Trust.Parents

Trust

1

Success

0.88***

1

Time

0.47***

0.39***

1

Parents

0.58***

0.73***

0.08

1

Time.Parents

0.75***

0.84***

0.58***

0.81***

1

Trust.Parents

0.92***

0.95***

0.40***

0.74***

0.86***

1

Correlation Plot

corPlot(semfit)

Mediation Summary

medSummaryTable(semfit)

Effect

Equation

estimate

95% Bootstrap CI

p

indirect

(a1+a3*Parents.mean)*(b1+b3*Parents.mean)

3.336

(2.616 to 4.276)

<.001

direct

c1+c3*Parents.mean

0.391

(-0.309 to 0.899)

.205

total

direct+indirect

3.726

(2.748 to 4.449)

<.001

prop.mediated

indirect/total

0.895

(0.782 to 1.097)

<.001

indirect.below

(a1+a3*(Parents.mean-sqrt(Parents.var)))*(b1+b3*(Parents.mean-sqrt(Parents.var)))

0.729

(0.336 to 1.317)

.003

indirect.above

(a1+a3*(Parents.mean+sqrt(Parents.var)))*(b1+b3*(Parents.mean+sqrt(Parents.var)))

7.833

(6.067 to 9.384)

<.001

direct.below

c1+c3*(Parents.mean-sqrt(Parents.var))

0.221

(-0.729 to 0.965)

.588

direct.above

c1+c3*(Parents.mean+sqrt(Parents.var))

0.561

(-0.254 to 1.655)

.224

total.below

direct.below+indirect.below

0.950

(0.131 to 1.601)

.017

total.above

direct.above+indirect.above

8.394

(6.654 to 9.806)

<.001

prop.mediated.below

indirect.below/total.below

0.768

(0.319 to 4.302)

.561

prop.mediated.above

indirect.above/total.above

0.933

(0.822 to 1.031)

<.001

boot.ci.type = bca.simple

Moderated Mediation Summary

modmedSummaryTable(semfit,mod="Parents")

Indirect Effect
(a1+a3*W)*(b1+b3*Parents.mean)

Direct Effect
c1+c3*W

Parents(W)

estimate

95% Bootstrap CI

p

estimate

95% Bootstrap CI

p

1.289

0.729

(0.336 to 1.317)

.003

0.221

(-0.729 to 0.965)

.588

2.987

3.336

(2.616 to 4.276)

<.001

0.391

(-0.309 to 0.899)

.205

4.685

7.833

(6.067 to 9.384)

<.001

0.561

(-0.254 to 1.655)

.224

boot.ci.type = bca.simple

Conditional Effect Plot

conditionalEffectPlot(semfit,data=Marshmallow.Mod,mod="Parents")

LS0tCnRpdGxlOiAiTW9kZXJhdGVkIE1lZGlhdGlvbiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMKICAgIGZvbnRzaXplOiA4cHQKICAgIGhpZ2hsaWdodDogdGV4dG1hdGUKICAgIG51bWJlcl9zZWN0aW9uczogbm8KICAgIHRoZW1lOiBmbGF0bHkKICAgIHRvYzogeWVzCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogbm8KLS0tCgpccGFnZWJyZWFrCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGNhY2hlID0gVFJVRSxjb21tZW50ID0gTkEpCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkgI1Nob3cgYWxsIHNjcmlwdCBieSBkZWZhdWx0CmtuaXRyOjpvcHRzX2NodW5rJHNldChtZXNzYWdlID0gRkFMU0UpICNoaWRlIG1lc3NhZ2VzIAprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZyA9ICBGQUxTRSkgI2hpZGUgcGFja2FnZSB3YXJuaW5ncyAKa25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy53aWR0aD03KSAjU2V0IGRlZmF1bHQgZmlndXJlIHNpemVzCmtuaXRyOjpvcHRzX2NodW5rJHNldChmaWcuaGVpZ2h0PTUpICNTZXQgZGVmYXVsdCBmaWd1cmUgc2l6ZXMKa25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy5hbGlnbj0nY2VudGVyJykgI1NldCBkZWZhdWx0IGZpZ3VyZQoKa25pdHI6Om9wdHNfY2h1bmskc2V0KHJlc3VsdHMgPSAiaG9sZCIpIApgYGAKCgojIyBNb2RlcmF0ZWQgTWVkaWF0aW9uKFBST0NFU1MgTWFjcm8gTW9kZWwgNTkpCgoKIyMjIFNhbXBsZSBEYXRhCgpgYGB7cn0Kc2V0LnNlZWQoNDIpCiMgcGF0aCBhIHN0cmVuZ3RoCmE9LjMKIyBwYXRoIGIgc3RyZW5ndGgKYj0uMwojIHBhdGggYycgc3RyZW5ndGgKY3A9LjIKIyAgcGVvcGxlCm4gPC0gMzAwCiMgTm9ybWFsIGRpc3RyaWJ1dGlvbiBvZiB0aW1lIChtaW5zKQpYIDwtIHJub3JtKG4sIDUsIDIpCiMgTW9kZXJhdG9yCk1vZDwtcnVuaWYobiwgMCwgNikKIyBNZWRpYXRvcgpNIDwtIGEqWCpNb2Qrcm5vcm0obiwgMCwgMykKIyBPdXIgZXF1YXRpb24gdG8gIGNyZWF0ZSBZClkgPC0gY3AqWCpNb2QgKyBiKk0gKyBNKk1vZCArIHJub3JtKG4sIHNkPTcpCiNCdWlsdCBvdXIgZGF0YSBmcmFtZQpNYXJzaG1hbGxvdy5Nb2Q8LWRhdGEuZnJhbWUoU3VjY2Vzcz1ZLFRpbWU9WCxUcnVzdD1NLFBhcmVudHM9TW9kKQpzdHIoTWFyc2htYWxsb3cuTW9kKQpgYGAKCgojIyMgUGFja2FnZSBMb2FkaW5nCgpgYGB7cn0KbGlicmFyeShwcm9jZXNzUikKbGlicmFyeShsYXZhYW4pCmBgYAoKIyMjIENvbmNlcHR1YWwgTW9kZWwgYW5kIFN0YXRpc3RpY2FsIE1vZGVsCgpgYGB7cn0KbGFiZWxzPWxpc3QoWD0iVGltZSIsTT0iVHJ1c3QiLFk9IlN1Y2Nlc3MiLFc9IlBhcmVudHMiKQpwbWFjcm9Nb2RlbCg1OSxsYWJlbHM9bGFiZWxzKQpzdGF0aXN0aWNhbERpYWdyYW0oNTksbGFiZWxzPWxhYmVscykKYGBgCgojIyMgTWFrZSBSZWdyZXNzaW9uIEVxdWF0aW9uCgpgYGB7cn0KbW9kZXJhdG9yPWxpc3QobmFtZT0iUGFyZW50cyIsc2l0ZT1saXN0KGMoImEiLCJiIiwiYyIpKSkKZXF1YXRpb25zPXRyaXBsZUVxdWF0aW9uKGxhYmVscz1sYWJlbHMsbW9kZXJhdG9yPW1vZGVyYXRvcixtb2RlPTEpIApjYXQoZXF1YXRpb25zKQpgYGAKCiMjIyBTdW1tYXJ5IG9mIFJlZ3Jlc3Npb24gTW9kZWxzCgpgYGB7cn0KZml0PWVxMmZpdChlcXVhdGlvbnMsZGF0YT1NYXJzaG1hbGxvdy5Nb2QpCm1vZGVsc1N1bW1hcnlUYWJsZShmaXQsbGFiZWxzPWxhYmVscykKYGBgCgojIyMgU0VNIEFwcHJvYWNoCgoKIyMjIyBNYWtlIFNFTSBlcXVhdGlvbgoKYGBge3J9Cm1vZGVsPXRyaXBsZUVxdWF0aW9uKGxhYmVscz1sYWJlbHMsbW9kZXJhdG9yPW1vZGVyYXRvcikKY2F0KG1vZGVsKQpgYGAKCiMjIyMgQW5hbHlzaXMgd2l0aCBzZW0KCmBgYHtyfQpzZW1maXQ9c2VtKG1vZGVsPW1vZGVsLGRhdGE9TWFyc2htYWxsb3cuTW9kLHNlPSJib290Iixib290c3RyYXA9MjAwKQpzdW1tYXJ5KHNlbWZpdCxjaT1UUlVFKQpgYGAKCiMjIyMgU3RhdGlzdGljYWwgTW9kZWwKCmBgYHtyfQpzdGF0aXN0aWNhbERpYWdyYW0oNTksbGFiZWxzPWxhYmVscyxmaXQ9c2VtZml0LHdoYXRMYWJlbCA9ICJlc3QiKQpgYGAKCiMjIyMgRXN0aW1hdGVzIFRhYmxlIAoKYGBge3J9CmVzdGltYXRlc1RhYmxlMihzZW1maXQsdmFuaWxsYT1UUlVFKQpgYGAKCiMjIyBDb3JyZWxhdGlvbgoKYGBge3J9CmNvclRhYmxlMihzZW1maXQpCmBgYAoKIyMjIyBDb3JyZWxhdGlvbiBQbG90CgpgYGB7cn0KY29yUGxvdChzZW1maXQpCmBgYAoKIyMjIyBNZWRpYXRpb24gU3VtbWFyeQoKYGBge3J9Cm1lZFN1bW1hcnlUYWJsZShzZW1maXQpCmBgYAoKIyMgTW9kZXJhdGVkIE1lZGlhdGlvbiBTdW1tYXJ5IApgYGB7cn0KbW9kbWVkU3VtbWFyeVRhYmxlKHNlbWZpdCxtb2Q9IlBhcmVudHMiKQpgYGAKCiMjIENvbmRpdGlvbmFsIEVmZmVjdCBQbG90CgpgYGB7cn0KY29uZGl0aW9uYWxFZmZlY3RQbG90KHNlbWZpdCxkYXRhPU1hcnNobWFsbG93Lk1vZCxtb2Q9IlBhcmVudHMiKQpgYGA=