semmcci: Methods (MI)
Ivan Jacob Agaloos Pesigan
2026-03-01
Source:vignettes/methods-mc-mi.Rmd
methods-mc-mi.RmdData
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 :100Multiple 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(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.5349summary
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.5349coef
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.4787907vcov
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-04confint
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.5348935Standardized 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.5440summary
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.5440coef
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.5060033vcov
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-04confint
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.5440388References
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