umx is a structural equation modeling package designed to make SEM easier, from building, to modifying and reporting. Please cite as:
Timothy C. Bates, Michael C. Neale, Hermine H. Maes, (2019). umx: A library for Structural Equation and Twin Modelling in R. Twin Research and Human Genetics, 22, 27-41. DOI:10.1017/thg.2019.2
umx includes high-level functions for complex models such as multi-group twin models, as well as graphical model output.
Install it from CRAN:
install.packages("umx") library(umx) ?umx
Most functions have extensive and practical examples (even figures for the twin models): so USE THE HELP :-).
See what is on offer with '?umx'. There are online tutorials at tbates.github.io.
umx stands for "user" OpenMx functions. It provides over 100 functions, but most importantly the high-level
umxRAM functions that makes path-based SEM in R straightforward from model specification to
plot, along with a suite of high-level twin modelling functions. These are supported by dozens of low-level functions automating activities such as labeling, setting start values etc., and helping with data-wrangling, plotting etc.
Some highlights include:
- Building Path Models
umxRAM()# mxModel with smart
data =parameter, automatic labels, start, run, plot, and auto-discovery of manifests and latents from the paths you write
umxPath()# write paths but with one-word settings to set
fixedAt'v.m.' = and more.
- Reporting output
umxSummary(model)# A fit summary designed for journal reporting (Χ², p, CFI, TLI, & RMSEA). Optionally show the path loadings
plot(model, std=T, digits = 3, file = "name")# Graphical, model in your browser! or edit in programs like OmniGraffle
- Modify models
umxModify()*# Modify and run a model. You can add objects, drop or add paths, including by wildcard label matching), re-name the model, re-run, and even return the comparison. All in 1 line *
parameters(m1, "below", .1, pattern="_to_"))# A powerful assistant to get labels and values from a model (e.g. all 'to' params, below .1 in value)
- Twin modeling!
- Easy-to-remember options
- Many more miscellaneous helpers e.g.
umx_time(model1, model2)reports and compares run times in a compact programmable format (also "start" and "stop" a timer)
umxHetcor(data, use = "pairwise.complete.obs")# Compute appropriate pair-wise correlations for mixed data types.
- Dozens more: Check out the "family links" in
?umxand in any help file!
Feel free to use, and submit code and requests via Github. Tell your friends! Publish more good science :-)
For thrill-seekers and collaborators only: the bleeding-edge development version is here:
install.packages("devtools") library("devtools") install_github("tbates/umx") library("umx") ?umx