Revision of OpenMx for mx 1.x users from Sat, 09/19/2009 - 07:29

The revisions let you track differences between multiple versions of a post.

Wiki home page

Please add material here as you learn...

If you have questions not answers, then add those here: That's how a wiki works.

There are a number of changes between Mx and OpenMx, mostly easy to learn.

You will still need to read in data, propose algebra, possibly create more than one group, estimate the model, and post-process and display the results. Much of the structure of an mx script translates easily into

Data

R has much powerful access to data, including reading a range of formats, not barfing on names, accessing data over the web etc. You will need to replace. ....

From Groups to Models

Mx used groups to structure its analyses. The comparable structure in OpenMx is the model. Because R provides a lot of functionality, the mapping is not complete. This is clearest in mx groups used for standardising results rather than defining a SEM model. These will often be replaced entirely with manipulation of the data in regular R code. In multi-group models, mx groups will often be mapped directly into OpenMx (sub-)models. Thus a two-group twin design may well be implemented with two models in OpenMx, contained in a parent model. mx scripts often begin with a "Define" group specifying a set of matrices, and this can usually be translated directly to an OpenMx model.

Algebra

Operators

OpenMx uses R-style operators, which entails some very straightforward find-and-replace type changes. For instance, tow very common functions: matrix multiplication and transposition, signified by "*" and "~" in mx, need to be changed to R functionss, namely %*% for matrix multiplication and t(x) for transposition of matrix x. A full list of function mappings is provided here operators-and-functions.

The other major change in OpenMx algebra is the addressing of symbols. For instance, in mx 1 to include a matrix from another group in an algebra, you would import the matrix from that group, then refer to it by its name. In OpenMx, you would refer to an object in another model.

So if in mx you said
Begin Matrices = Group 1
Means M ;

In OpenMx, you would say "mxFIMLObjective("expCov", "name.M"), where "name" is the name of what was group 1.

Things that are no longer needed

save and get
the result of an MxRun is itslef a model, populated with the final estimated values of the matrices and algebras you proposed.

Not available yet

Confidence intervals.
Categorical data

Comments

deadpixel's picture

Great insight