Skip to contents

Data

summary(df)
#>        X                   M                  Y           
#>  Min.   :-3.199558   Min.   :-3.37128   Min.   :-3.61432  
#>  1st Qu.:-0.632676   1st Qu.:-0.70516   1st Qu.:-0.66921  
#>  Median : 0.028235   Median : 0.02825   Median :-0.04834  
#>  Mean   : 0.002689   Mean   :-0.01992   Mean   :-0.01538  
#>  3rd Qu.: 0.657543   3rd Qu.: 0.65239   3rd Qu.: 0.65293  
#>  Max.   : 3.470910   Max.   : 2.93497   Max.   : 3.09950  
#>  NA's   :100         NA's   :100        NA's   :100

Multiple Imputation

Perform the appropriate multiple imputation approach to deal with missing values. In this example, we impute multivariate missing data under the normal model.

mi <- mice::mice(
  df,
  method = "norm",
  m = 100,
  print = FALSE,
  seed = 42
)

Model Specification

model <- "
  Y ~ cp * X + b * M
  M ~ a * X
  X ~~ X
  indirect := a * b
  direct := cp
  total := cp + (a * b)
"

Model Fitting

fit <- sem(data = df, model = model)

Monte Carlo Confidence Intervals

unstd <- MCMI(fit, mi = mi, R = 20000L, alpha = 0.05)

Methods

print

print(unstd)
#> Monte Carlo Confidence Intervals (Multiple Imputation Estimates)
#>             est     se     R   2.5%  97.5%
#> cp       0.2328 0.0298 20000 0.1743 0.2914
#> b        0.5113 0.0300 20000 0.4529 0.5698
#> a        0.4811 0.0288 20000 0.4251 0.5372
#> X~~X     1.0617 0.0498 20000 0.9636 1.1595
#> Y~~Y     0.5533 0.0273 20000 0.4996 0.6056
#> M~~M     0.7568 0.0362 20000 0.6862 0.8290
#> indirect 0.2460 0.0205 20000 0.2072 0.2871
#> direct   0.2328 0.0298 20000 0.1743 0.2914
#> total    0.4788 0.0283 20000 0.4237 0.5349

summary

summary(unstd)
#> Monte Carlo Confidence Intervals (Multiple Imputation Estimates)
#>             est     se     R   2.5%  97.5%
#> cp       0.2328 0.0298 20000 0.1743 0.2914
#> b        0.5113 0.0300 20000 0.4529 0.5698
#> a        0.4811 0.0288 20000 0.4251 0.5372
#> X~~X     1.0617 0.0498 20000 0.9636 1.1595
#> Y~~Y     0.5533 0.0273 20000 0.4996 0.6056
#> M~~M     0.7568 0.0362 20000 0.6862 0.8290
#> indirect 0.2460 0.0205 20000 0.2072 0.2871
#> direct   0.2328 0.0298 20000 0.1743 0.2914
#> total    0.4788 0.0283 20000 0.4237 0.5349

coef

coef(unstd)
#>        cp         b         a      X~~X      Y~~Y      M~~M  indirect    direct 
#> 0.2328242 0.5113353 0.4810732 1.0617011 0.5533052 0.7567771 0.2459664 0.2328242 
#>     total 
#> 0.4787907

vcov

vcov(unstd)
#>                     cp             b             a          X~~X          Y~~Y
#> cp        8.865244e-04 -4.823709e-04 -3.996291e-05 -5.493467e-06 -1.906138e-05
#> b        -4.823709e-04  8.990810e-04 -1.174896e-05 -1.003759e-05 -2.920858e-05
#> a        -3.996291e-05 -1.174896e-05  8.266465e-04 -1.629782e-05  2.045780e-05
#> X~~X     -5.493467e-06 -1.003759e-05 -1.629782e-05  2.482514e-03 -1.472015e-05
#> Y~~Y     -1.906138e-05 -2.920858e-05  2.045780e-05 -1.472015e-05  7.428496e-04
#> M~~M     -1.039052e-05  2.629205e-06 -6.513148e-05 -3.229760e-05 -2.565897e-05
#> indirect -2.526389e-04  4.269461e-04  4.163763e-04 -1.319982e-05 -3.293699e-06
#> direct    8.865244e-04 -4.823709e-04 -3.996291e-05 -5.493467e-06 -1.906138e-05
#> total     6.338854e-04 -5.542484e-05  3.764134e-04 -1.869328e-05 -2.235508e-05
#>                   M~~M      indirect        direct         total
#> cp       -1.039052e-05 -2.526389e-04  8.865244e-04  6.338854e-04
#> b         2.629205e-06  4.269461e-04 -4.823709e-04 -5.542484e-05
#> a        -6.513148e-05  4.163763e-04 -3.996291e-05  3.764134e-04
#> X~~X     -3.229760e-05 -1.319982e-05 -5.493467e-06 -1.869328e-05
#> Y~~Y     -2.565897e-05 -3.293699e-06 -1.906138e-05 -2.235508e-05
#> M~~M      1.310645e-03 -3.194002e-05 -1.039052e-05 -4.233054e-05
#> indirect -3.194002e-05  4.189094e-04 -2.526389e-04  1.662705e-04
#> direct   -1.039052e-05 -2.526389e-04  8.865244e-04  6.338854e-04
#> total    -4.233054e-05  1.662705e-04  6.338854e-04  8.001559e-04

confint

confint(unstd, level = 0.95)
#>              2.5 %    97.5 %
#> cp       0.1743127 0.2914445
#> b        0.4528729 0.5698120
#> a        0.4250733 0.5372468
#> X~~X     0.9636171 1.1595009
#> Y~~Y     0.4996265 0.6055799
#> M~~M     0.6861988 0.8290367
#> indirect 0.2071965 0.2871056
#> direct   0.1743127 0.2914445
#> total    0.4237479 0.5348935

Standardized Monte Carlo Confidence Intervals

fit <- sem(data = df, model = model, fixed.x = FALSE)
unstd <- MCMI(fit, mi = mi, R = 20000L, alpha = 0.05)
std <- MCStd(unstd, alpha = 0.05)

Methods

print(std)
#> Standardized Monte Carlo Confidence Intervals
#>             est     se     R   2.5%  97.5%
#> cp       0.2450 0.0302 20000 0.1805 0.2991
#> b        0.5189 0.0274 20000 0.4587 0.5665
#> a        0.5031 0.0260 20000 0.4431 0.5450
#> X~~X     1.0000 0.0000 20000 1.0000 1.0000
#> Y~~Y     0.5429 0.0250 20000 0.5073 0.6055
#> M~~M     0.7469 0.0257 20000 0.7029 0.8037
#> indirect 0.2610 0.0190 20000 0.2172 0.2920
#> direct   0.2450 0.0302 20000 0.1805 0.2991
#> total    0.5060 0.0259 20000 0.4421 0.5440

summary

summary(std)
#> Standardized Monte Carlo Confidence Intervals
#>             est     se     R   2.5%  97.5%
#> cp       0.2450 0.0302 20000 0.1805 0.2991
#> b        0.5189 0.0274 20000 0.4587 0.5665
#> a        0.5031 0.0260 20000 0.4431 0.5450
#> X~~X     1.0000 0.0000 20000 1.0000 1.0000
#> Y~~Y     0.5429 0.0250 20000 0.5073 0.6055
#> M~~M     0.7469 0.0257 20000 0.7029 0.8037
#> indirect 0.2610 0.0190 20000 0.2172 0.2920
#> direct   0.2450 0.0302 20000 0.1805 0.2991
#> total    0.5060 0.0259 20000 0.4421 0.5440

coef

coef(std)
#>        cp         b         a      X~~X      Y~~Y      M~~M  indirect    direct 
#> 0.2449797 0.5188628 0.5030687 1.0000000 0.5428754 0.7469219 0.2610236 0.2449797 
#>     total 
#> 0.5060033

vcov

vcov(std)
#>                     cp             b             a          X~~X          Y~~Y
#> cp        9.123543e-04 -6.021070e-04 -4.587593e-06 -4.379897e-21 -1.391526e-04
#> b        -6.021070e-04  7.516778e-04 -2.436634e-06 -2.355436e-21 -3.534275e-04
#> a        -4.587593e-06 -2.436634e-06  6.755722e-04 -1.567739e-20 -1.585009e-04
#> X~~X     -4.379897e-21 -2.355436e-21 -1.567739e-20  1.189391e-32  1.130943e-20
#> Y~~Y     -1.391526e-04 -3.534275e-04 -1.585009e-04  1.130943e-20  6.232681e-04
#> M~~M      4.303151e-06  2.506483e-06 -6.675626e-04  1.524108e-20  1.567188e-04
#> indirect -3.005752e-04  3.707819e-04  3.453485e-04 -9.695674e-21 -2.558459e-04
#> direct    9.123543e-04 -6.021070e-04 -4.587593e-06 -4.379897e-21 -1.391526e-04
#> total     6.117791e-04 -2.313251e-04  3.407609e-04 -1.407557e-20 -3.949985e-04
#>                   M~~M      indirect        direct         total
#> cp        4.303151e-06 -3.005752e-04  9.123543e-04  6.117791e-04
#> b         2.506483e-06  3.707819e-04 -6.021070e-04 -2.313251e-04
#> a        -6.675626e-04  3.453485e-04 -4.587593e-06  3.407609e-04
#> X~~X      1.524108e-20 -9.695674e-21 -4.379897e-21 -1.407557e-20
#> Y~~Y      1.567188e-04 -2.558459e-04 -1.391526e-04 -3.949985e-04
#> M~~M      6.605620e-04 -3.412228e-04  4.303151e-06 -3.369197e-04
#> indirect -3.412228e-04  3.611956e-04 -3.005752e-04  6.062032e-05
#> direct    4.303151e-06 -3.005752e-04  9.123543e-04  6.117791e-04
#> total    -3.369197e-04  6.062032e-05  6.117791e-04  6.723994e-04

confint

confint(std, level = 0.95)
#>              2.5 %    97.5 %
#> cp       0.1805421 0.2990902
#> b        0.4586789 0.5665487
#> a        0.4430573 0.5450371
#> X~~X     1.0000000 1.0000000
#> Y~~Y     0.5072718 0.6054996
#> M~~M     0.7029345 0.8037002
#> indirect 0.2171893 0.2919663
#> direct   0.1805421 0.2990902
#> total    0.4421153 0.5440388

References

Pesigan, I. J. A., & Cheung, S. F. (2024). Monte Carlo confidence intervals for the indirect effect with missing data. Behavior Research Methods, 56(3), 1678–1696. https://doi.org/10.3758/s13428-023-02114-4