library(lavaan)
set.seed(8976223)
n <- 100
x <- rnorm(n)
m <- .5 * x + rnorm(n, 0, sqrt(.4))
z <- rnorm(n)
y <- .4 * m + .3 * z * m + rnorm(n, 0, .5)
dat <- data.frame(x, m, z, y)
dat$zm <- dat$z * dat$m
mod0 <-
"
m ~ x
y ~ m + z + zm
m ~~ z + zm
"
fit <- sem(mod0, dat, fixed.x = FALSE)
# Add covariances. Also printed by default.
mod0_cov <- add_exo_cov(mod0)
# Fit the model
fit_cov <- sem(mod0_cov, dat, fixed.x = FALSE)
# Manually adding the covariances
mod1 <-
"
m ~ x
y ~ m + z + zm
m ~~ z + zm
z ~~ zm + x
zm ~~ x
"
fit1 <- sem(mod1, dat, meanstructure = TRUE, fixed.x = FALSE)
# Compare the results
# No manual covariances
fit
# Automatically generated covariances
fit_cov
# Manually added covariances
fit1
Run the code above in your browser using DataLab