omxSaturatedModel {OpenMx}R Documentation

Create Reference (Saturated and Independence) Models


This function creates and optionally runs saturated and independence (null) models of a base model or data set for use with mxSummary to obtain more fit indices.


mxRefModels(x, run=FALSE)



A MxModel object, data frame, or matrix.


logical. If TRUE runs the models before returning; otherwise returns built models without running.


For typical structural equation models the saturated model is the free-est possible model. All covariances and, when possilbe, all means are estimated. In the case of ordinal data, the ordinal means are fixed to zero and the thresholds are estimated. When the ordinal data are binary, those variances are also constrained to one. This is the free-est possible model, only constrained for model identification. The saturated model is used to create the RMSEA, and Chi-squared fit indices.

The independence model, sometimes called the null model, is a model of each variable being completely independent of every other variable. As such, all the variances and, when possible, all means are estimated. However, covariances are set to zero. Ordinal variables are handled the same for the independence and saturated models. The independence model is used, along with the saturated model, to create CFI and TLI fit indices.

The saturated and independence models could be used to create further fit indices. However, OpenMx does not recommend using GFI, AGFI, NFI (aka Bentler-Bonett), or SRMR. The page for mxSummary has information about why.

When the mxFitFunctionMultigroup fit function is used, mxRefModels creates the appropriate multigroup saturated and independence models. Saturated and independence models are created separately for each group. Each group has its own saturated and independence model. The multigroup saturated model is a multigroup model where each group has its own saturated model, and similarly for the independence model.

One potentially important limitation of the mxRefModels function is for behavioral genetics models. If variables 'x', 'y', and 'z' are measured on twins 1 and 2 creating the modeled variables 'x1', 'y1', 'z1', 'x2', 'y2', 'z2', then this function may not create the intended saturated or independence models. In particular, the means of 'x1' and 'x2' are estimated separately. Similarly, the covariance of 'x1' with 'y1' and 'x2' with 'y2' are allowed be be distinct: cov(x1, y1) != cov{x2, y2}. Moreover, the cross-twin covariances are estimated: e.g. cov(x1, y2) != 0.

Another potential misuse of this function is for models with definition variables. If definition variables are used, the saturated and independence model may not be correct because they do not account for the definition variables.

When an MxModel has been run, some effort is made to make the reference models for only the variables used in the model. For covariance data, all variables are modeled by default. For raw data when the model has been run, only the modeled variables are used in the reference models. This matches the behavior of mxModel.

In general, it is best practice to give mxRefModels a model that has already been run.

For IFA models (mxExpectationBA81), the independence model preserves equality constraints among item parameters from the original model.

mxRefModels() is not compatible with GREML expectation, as there is no sensible general definition for a saturated GREML-type model.


The OpenMx User's guide can be found at


manifests <- names(demoOneFactor)
latents <- c("G")
factorModel <- mxModel("One Factor", 
                       mxPath(from=latents, to=manifests),
                       mxPath(from=manifests, arrows=2),
                       mxPath(from=latents, arrows=2, free=FALSE, values=1.0),
                       mxData(observed=cov(demoOneFactor), type="cov", numObs=500))
summary(factorRun <- mxRun(factorModel))
factorSat <- mxRefModels(factorRun, run=TRUE)
summary(factorRun, refModels=factorSat)

[Package OpenMx version 2.6.8 Index]