Structural Equation Modeling and Twin Modeling in R

Quickly create, run, and report structural equation models, and twin models. See '?umx' for help, and umx_open_CRAN_page("umx") for NEWS. 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. .

alt text

CRAN status

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

It includes high-level functions for complex models such as multi-group twin models, as well as for graphical model output.

Grab it from CRAN with


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

umx stands for "user" OpenMx functions. It provides over 100 functions from high-level umxRAM and umxPath functions that make Structural Equation Modeling in R straightforward, to low-level functions to automate activities such as labelling, setting start values etc.,

Some highlights include:

  1. Building Path Models
    • umxRAM() # mxModel with smart data = parameter, no need to specify type = "RAM", + auto-discovery of manifests and latents from the paths you write
    • umxPath() # mxPath on steroids: one-word settings to set var , mean cov, fixedAt 'v.m.' = and more. Great time-saver!
  2. Reporting output
    • umxSummary(model) # A model fit designed for journal reporting (Χ², p, CFI, TLI, & RMSEA). Optionally show the path loadings
    • plot(model, std=T, digits = 3, file = "name") # Graphical, editable output of model in your browser!
  3. Modify models
    • umxModify() *# Modify and run a model. You can add objects, drop or add paths, including by regular-expression 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 from a model (e.g. all 'to' params, below .1 in value)
  4. Twin modeling!
    • umxACE() # Twin ACE modeling with aplomb paths are labeled! Works with plot() and umxSummary!
    • umxCP(), umxIP(), umxGxE(), umxCP()
    • umxACE
  5. Easy-to-remember options
    • umx_set_cores()
    • umx_set_optimizer()
  6. Many more miscellaneous helpers e.g.
    • umx_time(model) # Report the time taken by a model in a compact programable format
    • umxHcor(data, use = "pairwise.complete.obs") # Compute appropriate pair-wise correlations for mixed data types.
    • Dozens more (?umx to see them all). Check out the "family links" in any help file also!

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:



Roadmap for next version... umx 3.0.0 May 2018, R 3.5.X

  • FIX: umxSimplex
  • NEW: umxACEv supports WLS, UWLS, DWLS models
  • NEW: umxCP supports WLS, UWLS, DWLS models
  • NEW: umxLav2RAM
  • NEW: xmu_lavaan_process_group
  • NEW: xmu_clean_label
  • NEW: plot will get ability to opt paths out of constraints.

umx 2.10.0 April 2019, R 3.5.3 "Great Truth"

  • CITATION: citation("umx") Our paper on umx is out!
    • Bates, Neale and Maes (2019). umx: twin and path-based structural equation modeling in R. Twin Research and Human Genetics. 22, 27-41. doi: 10.1017/thg.2019.2
  • NEW: ?umxExamples All the code from Bates, Neale and Maes (2019).
  • NEW: umxSexLim multivariate sex-limitation working.
  • NEW: umxSexLim Gained nonlinear, linear, and homogeneity modes
  • NEW: umxSexLim Gained examples.
  • NEW: umxRAM supports WLS, UWLS, DWLS models!
  • NEW: umxACE supports WLS, UWLS, DWLS models!
  • NEW: umxPlotCP Supports CIs on the diagram!
  • NEW: umx_make_top_twin_models increases the robustness and improve-ability of all twin scripts.
  • NEW: umx_set_data_variance_check to set the criteria for warning users about excessively small variance or divergence of variance.
  • NEW: umx_dot_define_shapes builds the latents and manifest shape definitions (should be xmu_)
  • NEW: xmu_check_variance checks data for minVar (default > 0.1) and comparable scale for variables (maxVarRatio default = 500)
    • umx_set_data_variance_check get/set variance tolerance.
  • NEW: umx is checked on travis.
  • NEW: has build, doi, etc info boxes!
  • NEW: plot allows user control over splines, as well as max, min, same positioning.
  • NEW: xmu_dot_move_ranks.
  • NEW: xmu_dot_rank_string.
  • CHANGED: default for stripping zeros is reversed for plot.
  • CHANGED: namez options for collapse get easier to short-cut names.
  • DATA: data(Fischbein_wt) weight of 66 females record over six 6-month intervals (from Fischbein (1977) weight data).
  • BETA: umxRAM2 Beginning support for lavaan syntax strings.
  • BETA: Adding type (WLS) added to twin models...
  • BETA: Universal weighted rows support for all twin models
  • FIXED: umxValues to work more reliably with data with no means.
  • FIXED: umx_rename Didn't give correct values when test = TRUE for non-grep searches (drop NAs)
  • FIXED: umxSexLim match.arg tryHard
  • FIXED: use of selVars vs. selDVs across different functions (search for "# New-style build-block" to see these changes
  • IMPROVED: umxSuperModel can take a list of models.
  • IMPROVED: tryHard - allow "yes" for default mxTryHard across all twin and RAM models.
  • IMPROVED: umxPlotCP revamped - now not dependent on labels! (old function now umxPlotCPold)
  • IMPROVED: xmu_model_needs_means
  • IMPROVED: umxDescribeDataWLS to check whether the form of WLS requested will have means of not.
  • IMPROVED: umx_make: use check_win_devel; setwd for release; spelling
  • IMPROVED: umx_dot_mat2dot add model, toLabel and fromLabel + fromType & toType
  • IMPROVED: umx_dot_mat2dot example
  • IMPROVED: xmu_safe_run_summary now copes with warnings in models, summary, compare etc. (as it should have)
  • IMPROVED: umxModify now supports find and replace labels with grep (not just find with grep and set free/value)
  • IMPROVED: xmu_assemble_twin_supermodel no longer take bVector (uses existence of weights instead)
  • IMPROVED: umxModify now obeys verbose option
  • IMPROVED: umx_time reports % change between model times
  • IMPROVED: umIP help
  • IMPROVED: umx_make now supports quick-make as default
  • IMPROVED: tmx_show printing.
  • IMPROVED: umx_score_scale help and examples.
  • IMPROVED: umxModify now supports find and replace labels with grep (not just find with grep and set free/value).
  • IMPROVED: umxModify now obeys verbose.
  • IMPROVED: umxValues and elsewhere more robust to new data types.
  • IMPROVED: umx_read_lower examples and input checking.
  • IMPROVED: umx_cell_is_on now has lower and upper triangle with or without diagonal included
  • IMPROVED: umx_dot_mat2dot now can get parameter values with CIs
  • IMPROVED: umxRAM feedback when no data provided
  • RENAME: xmu_make_top_twin lose "models" for shorter name.
  • RENAME: tmx_show (was umx_show - it is mostly a teaching function
  • RENAME: umx_dot_define_shapes
  • RENAME: umx_dot_rank
  • RENAME: umx_mat2dot --> umx_dot_mat2dot
  • RENAME: umx_APA_model_CI --> xmu_get_CI
  • REMOVED: umx_add_variances old function not used and not very safe.
  • CLEANUP: Removed thresholds option from several functions (always doing deviation-based, WLS isn't thresholds, and left-censored will be implemented differently)

umx 2.9.9 December 2018, R 3.5.2

  • Compatibility with OpenMx changes.
  • NEW: umxSummarizeTwinData to create summary tables for papers using twin Data.
  • IMPROVED: umxRAM: support definition variables to some extent in umxRAM.
  • IMPROVED: umxMatrix advice user when they specify umxMatrix("me", 1,1).
  • IMPROVED: umxModify nicer free-parameter report as default output with no changes requested (calls parameters).
  • IMPROVED: umxRAM preserve definition variables in data.
  • IMPROVED: plot strip_zero more reliable.
  • INCOMPATIBLE: plot dropped deprecated showMeans and showFixed from plot after 3 years (use means= and fixed = ).
  • INCOMPATIBLE: umx_scale_wide_twin_data dropped support for deprecated suffix parameter.

umx 2.9.0 December 2018, R 3.5.1: More love

  • INCOMPATIBLE: Support for suffix as a synonym for sep removed after 3-years of deprecation warnings.
  • FIXED: umxSummaryfor ACEv models: CI now works - (was 'a' not 'A').
  • NEW: xmu_safe_run_summary Runs a model safely, optionally summarizing and comparing it to a base model.
  • IMPROVED: All models now support tryHard as a parameter!!
  • IMPROVED: autoRun option in more places.
  • IMPROVED: plot functions now have strip_zero option (default = strip leading zeroes from parameter estimates)
  • IMPROVED: umx_standardize_ACEv now working!
  • IMPROVED: Models use xmu_safe_run_summary so even bad models are returned for the user to diagnose them.
  • IMPROVED: OmniGraffle stencil improved. Use to draw diagrams.
  • IMPROVED: umxRAM now labels paths when no data are provided (simulation of sketch modes).
  • IMPROVED: umx_score_scale can cope with a single item.
  • IMPROVED: xmu_safe_run_summary don't error on code red non-run models.
  • IMPROVED: xmu_twin_check tells user how to rename selVars and sep when sep is not provided, but is enforced.
  • IMPROVED: umx_as_numeric allows user to select which columns to convert.
  • IMPROVED umxSimplex start values now flexible and robust (was hard coded for 4-times).
  • IMPROVED xmu_simplex_corner Takes a full values list (not just 1).
  • IMPROVED: umxAPA uses .Last.value as default input if none provided.
  • IMPROVED: umx_make supports what = "rhub".
  • IMPROVED: umxlong2wide now allows user to retain only desired twin IDs.
  • IMPROVED: Help-file model diagrams use pdf for pdf output.
  • MINOR: xmu_mean_var_starts uses "expMean_" as the name for means cells (was "mean").
  • MODIFY: xmu_safe_run_summary don't return bVector (already available)
  • HELP: umxACE help diagrams improved with clearer ACE_matrix picture.
  • HELP: umxRAM help gained an example of sketch-mode and diagram.
  • HELP: umx_scale help file improved
  • HELP: new pdfs for images in pdf help; remove _ from image names
  • HELP: Examples cleaned up

umx 2.8.5 October 2018, R 3.5.1: More love

  • NEW: xmu_make_mxData function to make mxData functions out of dataframes (and also drop variables from cov/cor dataframes.
  • NEW: SE style confidence information for CP and IP plots.
  • IMPROVED: umxCompare gains ability to output Weight AIC conditional model probabilities! h/t @mNivard
  • IMPROVED: umxReduce returns AIC weight-based probability of being best model.
  • IMPROVED umxReduce.MxModelGxE returns best model (invisibly).
  • IMPROVED: umxReduce for GxE, don't run no-A and no-C models with moderation in place.
  • IMPROVED: namez given a list of models will return the names of each.
  • IMPROVED: namez allow global replace.
  • IMPROVED: umx_lower2full can now take a data.frame.
  • IMPROVED: umx_aggregate can now open tables in a web browser.
  • IMPROVED: install.OpenMx can now install a package file if selected in the Finder (MacOS only)
  • IMPROVED: install.OpenMx now works with windows.
  • IMPROVED: umx_print more robust to non table input.
  • IMPROVED: xmu_make_mxdata more robust to non dataframe input.
  • IMPROVED umx_apply robustness.
  • IMPROVED: umx_simplex_corner can take a numeric to set matrix size.
  • IMPROVED: umx_long2wide warn if twinID (order) has too many levels; improved help; @md
  • BUG: umxAPA test parameter had no effect.
  • HELP: Better links, text, layout, etc., umxCP/IP HELP figures.

umx 2.8.2 June 2018, R 3.5.0: Simplex or s**t sticks

  • FIXED: umxSexLim now works for univariate tests (thanks to Michael Zakharin for reporting!)
  • FIXED: umxSummary Corrected Chi^2 df for RAM models.
  • NEW: umxCP handles ordinal, continuous and binary data
    • Note: old version still available as umxCPold
    • Note: new version also lower-bounds specifics at 0 by default.
  • NEW: umxCPplot re-written to allow arbitrary labels and correlated factors.
  • NEW helper functions: umx_graphviz_rank, umx_mat2dot
  • NEW: umx_set_optimization_options function to set "mvnRelEps" tolerances which impact, especially, ordinal model.
  • REFACTOR: new twin model creation helper will help ensure consistency and improve multiple twin functions
  • IMPROVED: umx_is_class reports classes if not given a set of classes to check
  • IMPROVED: umx_scale(verbose=TRUE) now lists the vars it didn't touch as well as those it didn't (also formatted better)
  • IMPROVED: umx_make_TwinData can set mean and SD of data
  • IMPROVED: umx_simplex_corner can take a numeric to set matrix size
  • FIXED: umx_standardize_CP was ignoring existing CIs
  • DELETED: umxAlgebra This appears broken in some circumstances?
  • HELP: verbose option for twin helper; better feedback;

umx 2.6.5 May 2018, R 3.5.0: Poly gets a cracker

  • NEW: Beta versions of umx_polychoric, umx_polypairwise, and umx_polytriowise
  • NEW: umxSimplextwin model!
    • umxSummary for simplex
    • `plot support for simplex
    • iqdatlongitudinal IQ twin data for simplex modeling
  • NEW: namez alias for the ever-useful umx_names function.
  • NEW: umxAlgebra (just allows name first).
  • FIX: install.OpenMx URLs for NPSOL and travis builds of OpenMx
  • BREAK: Following reports of problems in RStudio, changed umx class names to remove the period character from MxModel derivative classes
  • This will break hard-coded calls, for instance to umxSummary.MxModel.ACE instead of umxSummary.
  • "Just" replace with umxSummary.MxModelACE # i.e. delete the last period in the name... Sorry :-(
  • IMPROVED: parameters now returns helpful near-match names as suggestions on not finding actual matches.
  • IMPROVED: parameters now handles vectors of regular selections
  • IMPROVED: umx_print now handles vectors.
  • IMPROVED: umxConfint "smart" feature to request only free algebra cells for models I understand (umxCP in the first instance)
  • IMPROVED: namez can handle a model summary (accesses names() of the summary)
  • IMPROVED: umxGxE added option to control plot colors
  • IMPROVED: umxPlotCP can handle >9 manifests issue
  • HELP: umxGxE example improved
  • HELP: More related-function links in help files.
  • HELP: Better error messages.
  • HELP: Help titles, parameter documentation.
  • INTERNAL: xmu_simplex_corner helper function for simplex modeling.
  • INTERNAL: umx_make_sql improved

umx 2.4.0 March 21 2018, R 3.4.4 post Boulder Workshop CRAN edition

  • NEW: umxIP nFac now allows specifying different numbers of a, c, and e factors!
  • NEW: umxACEv plot works (shows correlated factors).
  • NEW: umxACEv standardize mostly functional.
  • NEW: umxEFA can now take a formula to select variables.
  • IMPROVED: umxIP and CP examples improved (3-variables, GFF data).
  • IMPROVED: umxIP reporting of as, cs, es simplified into compact stack.
  • IMPROVED: umxCP reporting of as, cs, es simplified into compact stack.
  • IMPROVED: umxPlotCP labeling of variables improved (catching more _Tn).
  • IMPROVED: umxEFA reports factor correlation matrix (thanks @ConorDolan)!
  • IMPROVED: umxEFA can return a loadings object.
  • IMPROVED: umx_makenot supports spelling check.
  • IMPROVED: umxACEv diagonal now unbounded by default (which is it's whole purpose)
  • IMPROVED: umxACEv got major improvements to help file.
  • IMPROVED: umxSummaryCP got ability to print to html.
  • IMPROVED: plot made more robust to unexpected labels (now that umxModify can write newlabels)!
  • MINOR: umx_names Added GFF examples.
  • DROPPED: deleted deprecated showStd and showMeans parameters from plot ACE.
  • BUG-FIX: umxSummaryIP was assuming nFac = 1

umx 2.0.2 Feb 12 2018, R 3.4.3 Higher goals edition

  • NEW: umxSummary works with multi-group models!
    • (make these with umxSuperModel)
  • NEW: umxModify supports multiple find strings and replace strings!
  • IMPROVED: umxAPA supports glm, more robust input checking.
  • FIXED: umxEquate allows vectors of labels.
  • DOCS: umxGetParameters has better help.
  • DOCS: umxHetCor docs now note is will return a pos-def version if given a cov matrix.
  • DOCS: umxAPA now has t-test and glm examples
  • DROPPED: umx_install_OpenMx (use install.OpenMx)

umx 2.0.0 (January 29 2018, R 3.4.3 Birthday edition)

  • BETA: umxSexLim multivariate twin sex-limitation.
  • BETA: umxGxE_biv bivariate Gene-environment interaction model.
  • BETA: umx_make_TwinData Can now make bivariate moderated twin data.
  • BETA: Beginning a umxGroup function as part of measurement invariance support.
  • NEW: umx_stack Slightly more powerful version of base stack.
  • NEW: umx_array_shift Shifts an item off the beginning of a list.
  • IMPROVED: umxRAM can take lists of paths as input (contributed by @bwiernik).
  • IMPROVED: umxModify can write newlabels.
  • IMPROVED: umxAPA can back-out an SE if given b and CI.
  • IMPROVED: Help pages and examples improved and reorganized.
  • DROPPED: umxReRun (use umxModify)
  • DROPPED: support for suffix parameter (use sep instead)

umx 1.9.2 (December 2017, R 3.4.2)

  • TIP: Filter paths by estimated size with umx_parameters(model, "below", .1)
  • NEW: tmx_genotypic_effect Part of a suite of teaching functions for biometric genetics!

umx 1.9.1 (November 2017, R 3.4.2)

  • TIP: ?umxRAM has a sketch mode. just set data to a list of manifest variable names.
  • NEW: umxSuperModel function to automate multiple-group model creation.
  • NEW ?umxACEv Variance component version of ACE. (beta)
  • NEW: CIs in output tables!
  • NEW ?umxACEcov_fixed Beta1: Handles main effects of covariates in the means of continuous variables.
  • NEW umxModify can now equate parameters (set master = ), update is slave set of labels.
    • As a result, umxEquate now doesn't autoRun by default. Let me know if this is a pain.
  • NEW: Dataset on general family functioning in twins. ?GFF
  • NEW: optimiser parameter for umxACE and other twin models: Set the optimizer in your model code!
  • NEW: umx_is_numeric boolean check if variables in a dataframe are numeric.
  • NEW: umx_is_class boolean check if variables in a dataframe match a desired class.
  • NEW: umx_twin_check internal function for common input checks.
  • NEW: umx_set_plot_file_suffix(c("gv", "dot") function (to control the filename used for figures)/
  • FIXED: umxACE was broken with large cov inputs h/t @NathanGillespie.
  • FIXED: umxAggregate now actually supports user functions as input...
  • BEGINNING: to add umxACEv variance components method
  • IMPROVED: umxPath(Cholesky = ) method: supports labels, bounds, lbound at 0.
  • IMPROVED: umxPath(Cholesky = ) method: return one statement instead of a list for clarity.
  • IMPROVED: umxACE and umxReduce.ACE run intervals
  • IMPROVED: umxReduce works better with umxACE models.
  • IMPROVED: umxEFA Supports minManifests.
  • IMPROVED: umxEFA Works better when returning a single factor score.
  • IMPROVED: umxParameters now supports digits.
  • IMPROVED: umxSummary "inline" reporting now includes AIC.
  • IMPROVED: umx_aggregate works with factor input/
    • umx_aggregate(sex_T1 ~ zyg_2grp, data = x)
  • IMPROVED: umx_long2wide can passalong variables.
  • IMPROVED: umx_wide2long much more powerful
  • IMPROVED: umx_msg supports dataframes
  • IMPROVED: umxACE gains ability to set plot format: format = "graphviz" or "DiagrammeR"
  • IMPROVED: umx_set_auto_plot take TRUE/FALSE as input.
  • IMPROVED: umx_names: added a find and replace option for names
  • IMPROVED: umxRAM in "sketch mode" now plots models automatically.
  • IMPROVED: install.OpenMx from University of Virginia, travis, or open travis build page.
  • IMPROVED: umx_cor automatically drops non-numeric columns.
  • IMPROVED: umxCI now supports setting interval and one- or two-sided type (h/t @Conor Dolan).
  • INTERNAL: Switch from R2HTML to xtable
  • MINOR: umxParameters now supports non-run models

umx 1.8.0 (September 2017, R 3.4.1 (Single Candle)

  • TIP: ?umxAPA can format lots of things for you: from dataframes to p-values - try it out! Let me know what you'd like.
  • NEW ?umx_parameters function, report parameter estimates, filtering by name and value!
    • aliased as umxParameters
    • umx_parameters(model, "below", .1, "loading")
  • NEW ?umx_long2wide: Merges long data on famID, for an unlimited number of individuals in a family (twinIDs).
  • NEW ?umx_wide2long: Takes a wide df (currently limited to 2 per family), & returns a long-format version.
  • FIXED: Removed superfluous print call from umx_MakeTwinData.
  • IMPROVED: html tables by switching to xtable (R2HTML is abandoned, strips decimals from AIC, etc.)
  • IMPROVED: Plotting: Models now plot by default. Turn off with umx_set_auto_plot(FALSE).
  • IMPROVED forEach option in umxPath. This is a one.headed version of "unique.pairs".
  • IMPROVED: Output: Twin models now show summary when autoRun.
  • IMPROVED: Graphics: umxGxE plot colors now use the universal ACE -> RGB scheme.
  • IMPROVED: umxACEcov Now tries to detect violations: Age and Sex are good examples.
  • IMPROVED: Stability: bound diag to 0 by default in umxACE.
  • IMPROVED: Stability: Stop on covs that are identical across twins in umxACEcov!
  • IMPROVED: Better default model name for umxACEcov;
  • IMPROVED: More helpful default core list for umx_check_parallel (1 and n-1);
  • IMPROVED: Output formatting of times in umx_check_parallel
  • IMPROVED: umxReduce does a much better job reporting automated umxGxE model reduction.
  • IMPROVED: umxAPA handles lme models.
  • IMPROVED: umxPrint error messages.
  • DOCUMENT logic.MxModel now has an Rd page.
  • CHANGE: Showing Rg (genetic correlation) table is now off by default for umx twin model summaries.
  • CHANGE: confint. OpenMx now supports this, so I dropped it from umx (added alias to umxConfint).
  • CHANGE: anova. OpenMx now supports, this so I dropped it from umx.
  • CHANGE: umx_fix_first_loadings now skips latents with fixed variance.

umx 1.7.5 (April 04 2017, R 3.3.3 Another Canoe)

  • TIP: In twin models, mzData and dzData can contain unused variables (umx removes them for you!)
  • NEW: umxVersion (returns mxVersion + information on umx).
  • IMPROVED: umxACE start values much better for univariate models.
  • NEW: umx_make_TwinData
    • Use variance input
    • Option to set seed
    • SetvarName
    • nThresh to threshold the created variables, and return as mxFactors
    • Surface the empirical parameter of mvrnorm
    • More flexible: Leave out any one of A, C, or E.
    • omit nDZPairs to get equal numbers
    • Option to allow A+C+E ≠ 1
    • Full set of examples
    • NOTE: umx_make_TwinData uses variance input. This was ambiguous previously.
    • Docs much improved.
  • NEW: install.OpenMx can install UVA parallel, travis latest (on mac) or opening the travis list.
    • BUG-FIX: install.OpenMx had a broken URL, now corrected.
  • NEW: umxRAM can now be used in "sketch" mode, to plot demos without data: just add the list of manifests as a character string to data.
    m1 <- umxRAM("test", data = paste0("itemC", 1:4),
        umxPath(unique.bivariate = paste0("itemC", 1:4)),
  • NEW: umx_cont_2_quantiles now allows returning cut points, better examples, level_names
    • BUG-FIX: umx_cont_2_quantiles lowest threshold was empty
  • NEW: umxAPA now reports mode for factor data
  • NEW: Allow umxLabel to rename the returned model
  • IMPROVED: sep is now the preferred separator (synonym for suffix in umxACE, umxCP, umxIP)
  • DOCUMENT: Examples use zygosity string from twinData instead of numeric code
  • DOCUMENT: Fix typo in umxPath docs
  • INCOMPATIBLE: renamed umx_cov_diag to umx_var

umx 1.5.5 (March 20 2017, R 3.3.3 "Another Canoe")

  • NEW: umx_write_to_clipboard
  • NEW: umx_r_test
  • IMPROVED: Add autoRun option to umxModify.
  • FIXED: Switch away from CSOLNP in umxCP example.
  • ROLLBACK: No longer generically alter CSOLNP tolerance.

umx 1.5.1 (March 05 2017 R 3.3.2)

  • IMPROVED: umxCP example for improved compatibility with OpenMx 2.7
  • IMPROVED: umx twin models now set a better (less likely to fail) precision for CSOLNP
  • IMPROVED: improved help files; document forms parameter for umxPath
  • IMPROVED: handling list inputs
  • IMPROVED: behavior of confint()
  • IMPROVED: formatting of umxAPA table output
  • ADD: "check" option to umx_make
  • FIXED: umxPath(a, forms= , arrows = 2) bug

umx 1.5.0 (December 2016)

  • Features + OpenMx 1.7.3 compatibility release
  • IMPROVED: umxRAM returns invisibly
  • IMPROVED: umx_aggregate can summarize multiple DVs in a table
  • IMPROVED: umx_aggregate can return a formatted table (kable = TRUE)
  • IMPROVED: umxAPA returns lower-triangle of data.frame correlations (by default)
  • REMOVED: umxSE now included in OpenMx 2.7.0!
  • FIXED: umx_set_plot_format uses silent = TRUE internally where needed

umx 1.4.9 (December 2016)

  • Bug fix
  • FIXED: umx_make_TwinData fix bug in DZ moderator code and A+C computation
  • IMPROVED: more functionality hints in man page titles

umx 1.4.5

  • November 2016 "Usability is queen/Sincere Pumpkin Patch"
  • IMPROVED: Reorganize function families to increase clarity
  • IMPROVED: umx_set functions now show legal options by default
  • NEW: umx_set functions have silent option
  • FIX secure http URLs

umx 1.4.0

  • Mid October 2016 "New features and improvements"
  • BUG FIX: umxFitIndices RMR and SRMR (h/t Brenton Wiernik!)
  • NEW: umxMatrix with default labels and name as 1st parameter
  • NEW: Definition variable umxPath type, e.g.
    • umxPath(defn = "def", labels = "data.age")
  • IMPROVED: More concise feedback
  • IMPROVED: umxEquate supports autoRun and compare
  • IMPROVED: umx_names can, as a convenience, take string vectors
  • RENAME: umxGetOpenMx aliased to install.OpenMx or umx_install_OpenMx
  • IMPROVED: umxFitIndices additional fit-indices and now automatically computes reference models if needed.
  • IMPROVED: umxRAM remove_unused_manifests no longer updates manifestVars + leaves variable in data by default.
  • RENAME: plot "showFixed" deprecated in favor of easier to type "fixed"

umx 1.3.0

  • R 3.3.1 companion: "Bug in your Hair" August 2016
  • NEW: umxPath allows unique.pairs connection
  • Useful for growth curve models
  • IMPROVED: umxRAM handles suffix labels
    • Useful for models embedded in multi-group
  • IMPROVED: umxSummary to show parameters from first model in multi-group
    • Begin to support multi-group in umxSummary
  • IMPROVED: twin model figures tweaked
  • CHANGE showStd= to std= in most remaining cases
    • Might need to update your code!
  • CHANGE: umx_show_options to umx_get_options
    • Might need to update your code!
  • FIX: umx_check_parallel typo
  • FIX: plot calls from summary
  • REMOVE: dependency on non-condensed slots

umx 1.2.8

  • R 3.3.0 companion: "Very compatible" May 2016
  • NEW: umxRAM can now build and run Joint Continuous Ordinal models. Ta da!!
  • NEW: umx_show_options function to help users learn the options available
  • BETA: umxACE can now implement a form of left-censoring.
  • BETA: umxThresholdMatrix can now implement a form of left-censoring.
  • IMPROVE: umxRAM & umxRAM2Ordinal can turn off reference models computation with refModels = FALSE;
  • IMPROVE: umx_show can show thresholds
  • IMPROVED: umx_is_MxModel can take a list: listOK option
  • IMPROVED: umx_check_parallel options for row-wise parallel and number of subjects
  • CHANGE: I changed "suffix" to "sep" in several places for consistency: this will break some low level code: nearly all of it mine, and fixed. But might affect some users!!
  • UPDATE: umx_time and umx_check_parallel to work with new S4 list deprecation
  • MINOR: umxTwoStage shorter run-time on 2-stage least squares

umx 1.2.7

  • May 2016 stable release
  • ADDED: umxTwoStage FIML-based Instrumental variable and Mendelian Randomization (beta)
  • ADDED: umx_make_MR_data to simulate SNP-based Mendelian randomization data (beta)
  • ADDED: umx_set_condensed_slots(TRUE|FALSE): Get and set matrix compression
  • ADDED: umx_get_OpenMx (download OpenMP/parallel version of OpenMx with NPSOL)
  • ADDED: umx_cont_2_quantiles(x, nlevels = )
  • ADDED: umx_factor alias to umxFactor
  • FIXED: plot(resid = "none") was not suppressing plotting residuals
  • IMPROVED: umxFactor now handles dataframes and allows non-ordered output
  • IMPROVED: umx_CI more flexible, now allows removing CIs
    • Old code will break: replace "add" with "which"
  • IMPROVED: umx_time handling of no input arguments
  • IMPROVED: umx_pb_note better feedback and setup
  • IMPROVED: loadings() generic
  • CHANGE: umxModify - if free is a string, it will be used as input and the found paths will be freed.
  • CHANGE: umxModify - show summary as well when comparison = TRUE
  • CHANGE: plot defaults for std and showFixed changed h/t @MikeNeale
  • CHANGE: umx_scale_wide_twin_data argument names for consistency: "suffix" "data"
  • CHANGE: umx_residualize ditto.
  • UPDATE: "Read me" file.

umx 1.2.5 (April 2016 R 3.2.5 Very, Very Secure Dishes)

  • Bug fix release
  • FIX: $models bug in umxStandardizeACE
  • EXPAND: test suite

umx 1.2.0 (April 2016 R 3.2.4 Very Secure Dishes)

  • NEW: plot using DiagrammeR!
  • NEW: Choose plot format!
    • umx_set_plot_format("DiagrammeR")
    • umx_set_plot_format("graphviz")
  • NEW: Choose table format!
    • umx_set_table_format("markdown")
    • umx_set_table_format("latex")
  • NEW: set plotting by default: umx_set_auto_plot(TRUE)
  • NEW: Exploratory factor analysis! with umxEFA (beta!)
  • NEW loadings() support for umxEFA
  • CHANGE: .dot --> .gv suffix for plotting (more compatible)
  • CHANGE: To $ from @ accessors for OpenMx compression compatibility
  • BETTER: Help! ACECov figure, ... many other improvements
  • ENHANCED: umx_print, umx_show, umxCompare
  • REQUIRE knitr, DiagrammeR
  • INCREASE minimum R / OpenMx to >= 3.2.0 / >= 2.5.0

umx 1.1.5

  • March 2016 Boulder Workshop feedback updates
  • NEW: plot now works on Windows and Unix as well as OS X! (h/t @mhunter)
  • CHANGE: umxReRun to umxModify (h/t @hmaes)
  • BETTER: compatibility with OpenMx 2.5.2

umx 1.1.1

  • Feb 2016 R 3.2.3 Wooden Christmas Tree edition
  • NEW: auto-run now the default for all models!
    • Added option to switch this: options("umx_auto_run" = TRUE)
  • NEW: plot should generate pdfs for Windows and Unix users now
  • NEW: umxACEcov support for ACE with covariates
  • NEW: umx_make_TwinData added to support simulation studies
  • BETTER: umx_check_parallel now returns timing information
  • BETTER: umx_time now supports "start" and "stop")
  • BETTER: umxAPA can format more objects in APA style, inc just a p-value)
  • BETTER: summaryAPA can now summarize a data.frame with mean, sd, and correlations
  • BETTER: umxLabel now preserves existing labels in umxRAM models: labels = is now saved
  • BETTER: Help improvements (wording, see-also etc)
  • DEEP: Removed dependency on

umx 1.1.0 (December 2015, R 3.2.3/Wooden Christmas-Tree update

  • NEW: vcov() added
  • NEW: Begin support for sex-lim twin models
  • NEW: New data file for sex-limitation
  • IMPROVED: umxRAM can take existing model as input (very useful)
  • IMPROVED: umxRAM reports model fit and comparison (if old model exists)
  • IMPROVED: umxPath now lbounds [email protected] for v.m.
  • IMPROVED: umx_residualize can now take multiple DVs
  • IMPROVED: umxMI enhanced to cope with more situations
  • IMPROVED: umxSummary more resilient with missing CIs (#ht Nathan Gillespie!)
  • IMPROVED: summaryAPA now handles data as well as lm
  • IMPROVED: Help for twin functions
  • IMPROVED: Various new function features
  • IMPROVED: umx_print resilient to 0-row input
  • IMPROVED: summary helpers (e.g. umx_fun_mean_sd)
  • IMPROVED: consistency in parameter names (minor backward incompatibility)
  • DEEP: Replacing @ with $ accessor begun

umx 1.0.0

  • NEW umxCP twin models! + plot(), umxSummary()
  • NEW umxIP twin models! + plot(), umxSummary()
  • NEW umxGxE twin models! + plot(), umxSummary()
  • FIXED umxPath limitation where "to" was not being set.
  • SUPPORT Circles as well as lines for residual variance.
  • IMPROVE Help text. Thanks Mike Neale esp.!
  • IMPROVE Organization of functions into @families in the help.
  • IMPROVE Example for umx_lower2full
  • DROPPED umxRAM functionality to set endogenous, exogenous, and latent traits
  • DROPPED Deprecated a dozen functions.

umx 0.50.0 Likely R 3.1.3 (Smooth Sidewalk) ~ 2015-03-09

  • First CRAN release!

umx 0.49.0

  • IMPROVE Edge cases work
  • IMPROVE Improving help files and feedback
  • IMPROVE Rationalizing function names into @families

umx 0.45-beta

  • Feature complete
  • Bug squashing
  • Optimizing function names for memorability and typing

umx 0.40-beta

  • Beta level!
  • Standard confint(); plot() etc functions implemented
  • Adding umxRAM() and umxPath shortcuts

umx 0.30-alpha

  • Alpha release
  • 90% feature complete
  • Lots of name rationalization

umx 0.25-alpha

  • Alpha release
  • 80% feature complete
  • Function prefix reflects usage:: camel-case for major functions, underscore for utility functions, "xmu" prefix, "not for end-user"

Reference manual

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


4.10.50 by Timothy C. Bates, a month ago

Report a bug at

Browse source code at

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

Documentation:   PDF Manual  

Task views:

GPL-3 license

Imports ggplot2, cowplot, DiagrammeR, DiagrammeRsvg, rsvg, lavaan, MASS, Matrix, methods, MuMIn, mvtnorm, nlme, polycor, R2HTML, RCurl, scales, utils, xtable, kableExtra, knitr, tibble

Depends on OpenMx

Suggests cocor, devtools, gdata, hrbrthemes, Hmisc, spelling, testthat, rmarkdown, psych, psychTools, rhub, pwr

Suggested by OpenMx.

See at CRAN