Structural Equation Modeling and Twin Modeling in R

Quickly create, run, and report structural equation and twin models. See '?umx' for help, and umx_open_CRAN_page("umx") for NEWS. Citations are: * 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. . * Luis F.S. Castro-de-Araujo, Nathan A. Gillespie, Michael C. Neale, and Timothy Charles Bates (2026). umx version 4.5: Extending Twin and Path-Based SEM in R with CLPM, MR-DoC, Definition Variables, Onyx Integration, and Censored Distributions. Twin Research and Human Genetics, 1-6. .


umx

Github commits cran version Monthly Downloads Total Downloads Rdoc DOI License

umx is a package designed to make structural equation modeling easier, from building, to modifying and reporting.

citation("umx")

You should cite: 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

And Luis F.S. Castro-de-Araujo, Nathan A. Gillespie, Michael C. Neale, and Timothy Charles Bates (2026). umx version 4.5: Extending Twin and Path-Based SEM in R with CLPM, MR-DoC, Definition Variables, Onyx Integration, and Censored Distributions. Twin Research and Human Genetics, 1-6. DOI:10.1017/thg.2026.10056

Overview Road map, and Tutorials.

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. For users, the two most import families in umx are:

  1. umxRAM. This makes path-based SEM in R straightforward, handling ordinal thresholds, start values, labels automatically. It can also interpret basic lavaan if you get a script in that language.
  2. A suite of twin modelling functions, such as umxACE.

Both suites are supported by umxSummary which generates publication-ready tables, and and plot which makes graphical display of your models easy and flexible. There are many other helpers for data-wrangling twin data, working with prolific, scoring scales, printing to models (try umxAPA()) among other tasks.

Some highlights include:

  1. Building Path Models
    • umxRAM() # Take umxPaths + data data = run and return a model, along with a plot and umxSummary
    • umxPath() # write paths with human-readable language like var = , mean = cov = , fixedAt=. Quickly define a variance and mean ('v.m. = ') and more.
  2. Reporting output
    • umxSummary(model) # Nice summary table, in markdown or browser. Designed for journal reporting (Χ², p, CFI, TLI, & RMSEA). Optionally show path loadings
    • plot(model, std=TRUE, digits = 3, ...) # Graphical model in your browser! or edit in programs like OmniGraffle
    • 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)
    • residuals(m1, supp=.1) # Show residual covariances filtered for magnitude
  3. Modify models
    • umxModify(model, update = ) *# Modify and re-run a model. You can add objects, drop or add paths, including by wildcard label matching), re-name the model, and even return the comparison. All in 1 line *
  4. Twin modeling!
    • umxACE # Twin ACE modeling with aplomb paths are labeled! Works with plot() and umxSummary!
    • umxCP, umxIP, umxGxE, umxCP, umxGxEbiv, umxSexLim
    • umxACE
  5. Easy-to-remember options
    • umx_set_cores()
    • umx_set_optimizer()
  6. 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 ?umx and in any help file!

Code and requests welcome via Github. Tell your friends! Publish 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

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("umx")

4.80.1 by Timothy C. Bates, 4 days ago


https://github.com/tbates/umx#readme


Report a bug at https://github.com/tbates/umx/issues


Browse source code at https://github.com/cran/umx


Authors: Timothy C. Bates [aut, cre] (ORCID: , Luis De Araujo [ctb] , Nathan Gillespie [wit] , Hermine Maes [ctb] , Michael C. Neale [ctb] , Joshua N. Pritikin [ctb] , Brenton Wiernik [ctb] , Michael Zakharin [wit]


Documentation:   PDF Manual  


GPL-3 license


Imports cowplot, DiagrammeR, gert, ggplot2, kableExtra, knitr, lavaan, MASS, Matrix, methods, mvtnorm, nlme, openxlsx, paran, polycor, quantmod, R2HTML, RCurl, scales, utils, xtable, zoo

Depends on OpenMx

Suggests remotes, devtools, pak, spelling, testthat, withr, R.utils, data.table, car, cocor, GPArotation, httr2, parallel, psychTools, psych, pwr, piggyback, rmarkdown, rhub, ssh

Enhances DiagrammeRsvg, rsvg


Suggested by semPlot, tidySEM.


See at CRAN