# this script creates the dataset for the mediation exercise library(dplyr) library(faux) library(lavaan) # data setup set.seed(123) n <- 100 dat <- rnorm_multi(n = n, r = .5, varnames = c("x", "m", "y")) |> mutate(y1 = rnorm_pre(y, r = .4), y2 = rnorm_pre(y, r = .5), y3 = rnorm_pre(y, r = .6), y4 = rnorm_pre(y, r = .7)) |> select(-y) cfa("y =~ y1 + y2 + y3 + y4", dat) |> summary(fit.measures = T) syntax <- " y =~ y1 + y2 + y3 + y4 y ~ c*x m ~ a*x y ~ b*m ab := a*b total := c + (a*b) " sem(syntax, data = dat) |> summary(fit.measures = T) dat <- dat |> mutate(m = ifelse((x > quantile(x, .5)) & (runif(n) > .5), NA, m)) sem(syntax, data = dat) |> summary(fit.measures = T) # write.csv(dat, "exercise_03.csv", row.names = F)