Nothing
## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 6,
fig.height = 5
)
library(umx)
# Never auto-open browser plots during package check
umx_set_auto_plot(FALSE)
## ----load-data----------------------------------------------------------------
# Load the classic Holzinger Swineford 1939 data (x1:x9)
data("HS.ability.data")
# Define the manifest (observed) variables
manifests = c("visual","cubes","flags","paragrap","sentence","wordm","addition","counting","straight")
# Quick look at the correlations
umx_cor(HS.ability.data[, manifests])
## ----build-model, results = "hide", message = FALSE---------------------------
m1 = umxRAM("Holzinger_one_factor", data = HS.ability.data,
# Factor loadings (G predicts each x)
umxPath("g", to = manifests),
# Residual means and variances for the observed variables
umxPath(v.m. = manifests),
# Fix the latent factor variance to 1 (for identification)
umxPath(v1m0 = "g")
)
## ----summary-basic------------------------------------------------------------
umxSummary(m1)
## ----summary-std--------------------------------------------------------------
umxSummary(m1, std = TRUE)
## ----lavaan-string, results = "hide", message = FALSE-------------------------
m2 = umxRAM(paste("g =~", paste(manifests, collapse = " + ")),
data = HS.ability.data)
## ----lavaan-summary-----------------------------------------------------------
umxSummary(m2, std = TRUE)
## ----plot-png, fig.cap = "Standardized one-factor Holzinger model (PNG)", message = FALSE----
# Prefer a stored PNG under vignettes/figures/ (no browser). Regenerate if missing.
figDir = "figures"
dir.create(figDir, showWarnings = FALSE)
gvPath = file.path(figDir, "holzinger_one_factor.gv")
pngPath = file.path(figDir, "holzinger_one_factor.png")
if (!file.exists(pngPath)) {
# digraph only; capture.output silences plot()'s cat() of the graph
dot = NULL
utils::capture.output({
dot <<- plot(m1, std = TRUE, means = FALSE, file = NA)
})
cat(dot, file = gvPath)
# 1) Graphviz CLI
dotBin = Sys.which("dot")
if (nzchar(dotBin)) {
system2(dotBin, c("-Tpng", "-o", pngPath, gvPath), stdout = FALSE, stderr = FALSE)
}
# 2) DiagrammeR → SVG → PNG (Suggests: DiagrammeRsvg, rsvg)
if (!file.exists(pngPath) &&
requireNamespace("DiagrammeR", quietly = TRUE) &&
requireNamespace("DiagrammeRsvg", quietly = TRUE) &&
requireNamespace("rsvg", quietly = TRUE)) {
svgTxt = DiagrammeRsvg::export_svg(DiagrammeR::grViz(dot))
rsvg::rsvg_png(charToRaw(svgTxt), pngPath)
}
}
if (file.exists(pngPath)) {
knitr::include_graphics(pngPath)
} else {
message(
"PNG plot unavailable (install graphviz `dot`, or DiagrammeR + DiagrammeRsvg + rsvg). ",
"Ship/regenerate ", pngPath, " under vignettes/figures/."
)
}
## ----uncertainty, message = FALSE---------------------------------------------
umxSummary(m1, std = TRUE, uncertainty = "MLR", refModels = FALSE)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.