## ----setup, include = FALSE--------------------------------------------------- # medfit is a Suggested (optional) dependency. Every chunk that touches it is # guarded so the vignette still builds (and CRAN checks pass) when medfit is # absent. This mirrors the runtime contract in R/ci_medfit.R, where each medfit # call site is wrapped in requireNamespace("medfit"). medfit_available <- requireNamespace("medfit", quietly = TRUE) && requireNamespace("lavaan", quietly = TRUE) knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = medfit_available ) library(RMediation) ## ----medfit-missing, eval = !medfit_available, echo = FALSE, results = "asis"---- # cat( # "> **Note:** This vignette requires the `medfit` (>= 0.2.0) and `lavaan`", # "packages, which are not installed in the current environment, so the code", # "below is shown but not executed. Install medfit with", # "`install.packages(\"medfit\")` to run these examples.\n" # ) ## ----lavaan-fit--------------------------------------------------------------- set.seed(42) n <- 800 X <- rnorm(n) M1 <- 0.5 * X + rnorm(n) M2 <- 0.6 * M1 + rnorm(n) Y <- 0.7 * M2 + 0.2 * X + rnorm(n) dat <- data.frame(X, M1, M2, Y) model <- "M1 ~ a*X M2 ~ d1*M1 Y ~ b*M2 + cp*X" fit <- lavaan::sem(model, data = dat) # medfit extracts the named estimates + covariance RMediation expects. mu <- medfit::extract_mediation( fit, treatment = "X", mediator = c("M1", "M2"), outcome = "Y" ) class(mu) names(mu@estimates) ## ----lavaan-ci---------------------------------------------------------------- res <- ci(mu, level = 0.95, type = "MC") res$Estimate res$CI ## ----lm-fit------------------------------------------------------------------- set.seed(7) n <- 800 X <- rnorm(n) M1 <- 0.5 * X + rnorm(n) M2 <- 0.6 * M1 + rnorm(n) Y <- 0.7 * M2 + 0.2 * X + rnorm(n) dat <- data.frame(X, M1, M2, Y) mu_lm <- medfit::extract_mediation( lm(M1 ~ X, dat), model_y = lm(Y ~ M2 + X, dat), treatment = "X", mediator = c("M1", "M2"), mediator_models = list(lm(M2 ~ M1, dat)) ) ci(mu_lm, level = 0.95, type = "MC")$CI ## ----guard-demo, eval = FALSE------------------------------------------------- # # When medfit is NOT installed, the bridge stops with a clear message: # ci(mu) # #> Error: Package 'medfit' is required for this method.