Learn R Programming

umx (version 1.4.0)

umxRAM: umxRAM

Description

Making it as simple as possible to create a RAM model, without doing invisible things to the user.

Usage

umxRAM(model = NA, ..., data = NULL, name = NA, comparison = TRUE, setValues = TRUE, suffix = "", independent = NA, remove_unused_manifests = TRUE, showEstimates = c("none", "raw", "std", "both", "list of column names"), refModels = NULL, thresholds = c("deviationBased", "direct", "ignore", "left_censored"), autoRun = getOption("umx_auto_run"))

Arguments

model
A model to update (or set to string to use as name for new model)
...
mx or umxPaths, mxThreshold objects, etc.
data
data for the model. Can be an mxData or a data.frame
name
A friendly name for the model
comparison
Compare the new model to the old (if updating an existing model: default = TRUE)
setValues
Whether to generate likely good start values (Defaults to TRUE)
suffix
String to append to each label (useful if model will be used in a multi-group model)
independent
Whether the model is independent (default = NA)
remove_unused_manifests
Whether to remove variables in the data to which no path makes reference (defaults to TRUE)
showEstimates
Whether to show estimates. Defaults to no (alternatives = "raw", "std", etc.)
refModels
pass in reference models if available. Use FALSE to supress computing these if not provided.
thresholds
Whether to use deviation-based threshold modeling for ordinal data (if any is detected), direct, or do nothing.
autoRun
Whether to mxRun the model (default TRUE: the estimated model will be returned)

Value

- mxModel

Details

Like mxModel, you list the theoretical causal paths. Unlike mxModel:
  1. type defaults to "RAM"
  2. You don't need to list manifestVars (they are detected from path usage)
  3. You don't need to list latentVars (detected as anything in paths but not in mxData)
  4. You add data like you do in lm, with data =
  5. with umxPath you can use powerful verbs like var =

Comparison with other software

Some software has massive behind-the-scenes defaulting and path addition. I've played with similar features (like auto-creating error and exogenous variances using endog.variances = TRUE and exog.variances = TRUE). Also identification helpers like fix = "latents" and fix = "firstLoadings"

To be honest, these are not only more trouble than they are worth, they encourage errors and poor modelling. I suggest user learn the handful of umxPath short cuts and stay clean and explicit!

References

- http://tbates.github.io, https://github.com/tbates/umx

See Also

Other Model Building Functions: umxDiagnose, umxLabel, umxLatent, umxMatrix, umxModify, umxPath, umxRAM2Ordinal, umxRun, umxThresholdMatrix, umxValues, umx_fix_first_loadings, umx_fix_latents, umx

Examples

Run this code
# umxRAM is like lm, ggplot2 etc: you give the data in a data = parameter
# A common error is to include data in the main list,
# a bit like saying lm(y~x + df) instead of lm(y~x, data=dd)...
# nb: unlike mxModel, umxRAM needs data at build time.

# 1. For convenience, list up the manifests you will be using
selVars = c("mpg", "wt", "disp")

# 2. Create an mxData object
myCov = mxData(cov(mtcars[,selVars]), type = "cov", numObs = nrow(mtcars) )

# 3. Create the model (see ?umxPath for more nifty options)
m1 = umxRAM("tim", data = myCov,
	umxPath(c("wt", "disp"), to = "mpg"),
	umxPath(cov = c("wt", "disp")),
	umxPath(var = c("wt", "disp", "mpg"))
)

# 4. Print a nice summary 
umxSummary(m1, show = "std")

## Not run: 
# # 5. Draw a nice path diagram (uses DiagrameR package or Graphviz app)
# plot(m1)
# plot(m1, resid = "line")
# 
# # =================================================
# # = This is an example of using your own labels:  =
# #   umxRAM will not over-ride them                =
# # =================================================
# m1 = umxRAM("tim", data = myCov,
# 	umxPath(c("wt", "disp"), to = "mpg"),
# 	umxPath(cov = c("wt", "disp"), labels = "b1"),
# 	umxPath(var = c("wt", "disp", "mpg"))
# )
# omxCheckEquals(m1$S$labels["disp", "wt"], "b1") # label preserved
# m1$S$labels
# #      mpg             wt            disp
# # mpg  "mpg_with_mpg"  "mpg_with_wt" "disp_with_mpg"
# # wt   "mpg_with_wt"   "wt_with_wt"  "b1"
# # disp "disp_with_mpg" "b1"          "disp_with_disp"
# ## End(Not run)

Run the code above in your browser using DataLab