We are very pleased to announce that version 2.0 of OpenMx has been officially released! Users can download and install this new version by copy-pasting source('https://openmx.ssri.psu.edu/getOpenMx.R')
into the R command line and pressing 'Return'. Users who still wish to download and install version 1.4, the previous stable version of the package, can instead use source('https://openmx.ssri.psu.edu/getOpenMx1.R')
.
A number of exciting new features are now available in OpenMx v2.0:
mxRAMObjective()
. The old "objective" syntax will still work, but the new split between expectation and fit enables greater flexibility in model-fitting by allowing users to mix-and-match different expectations with different fits.
mxExpectationLISREL()
.
mxFitFunctionMultigroup()
.
mxAlgebra
s, and used with mxFitFunctionAlgebra()
.
mxCompute
sequences, which can tell the program what to calculate and how to do so when running an MxModel
.
MxModel
object, @
accessors have been replaced with $
accessors. You no longer have to keep track of when to use which; just always use $
! In fact, users should get into the habit of ALWAYS using the $
accessor instead of the @
accessor. For example, myModelRun@output$estimate
would now be myModelRun$output$estimate
. We CANNOT guarantee that every usage of the @
accessor that worked with versions 1.3/1.4 will continue to work in future versions.
summary()
is now more concise (by default), and much of it has been made easier to read. Users who desire more extensive output can use argument verbose=TRUE
--for example, summary(myModel, verbose=TRUE)
.
summary()
output no longer includes standardized path coefficients and their standard errors. This functionality is now handled by a new R function, mxStandardizeRAMpaths()
. This new function provides a standardized path coefficient (and a standard error for it, if requested) for every nonzero path in the model, notwithstanding labels or whether it is a free parameter. If standard errors are requested, they are calculated by an improved method with a stronger statistical-theoretical justification than the rough approximation used in versions 1.3/1.4.
summary()
.
mxTryHard()
, which makes multiple attempts to fit an MxModel
object until the optimizer yields an acceptable solution or the maximum number of attempts is reached. Each attempt uses randomly jittered parameter estimates of the previous attempt as start values. From among its attempts, the function returns the fitted model with the smallest fit-function value, and prints to the console the start values it used for that model.
MxAlgebra
s: inverses of vech()
and vechs()
, cov2cor()
, chol()
, matrix logarithm and matrix exponential, lgamma()
, and standard-normal quantile.
A number of bugs present in version 1.4 have now been fixed:
mxRowObjective()
due to a collision of matrix names. This is now possible (though note that mxFitFunctionRow()
is now the preferred interface).
summary()
on a model using an R objective would sometimes fail with a mysterious error. Also, confidence limits computed for models using an R objective would be stored in the post-run model as being equal to the corresponding point estimate. Both of these bugs have now been repaired.
mxEval()
with defvar.row=n
, mxEval()
would return the computation based on row n of the internally sorted data, not row n of the data as supplied to mxData()
. This feature was rarely used, so the bug existed for a long time. Please use OpenMx 2.0 to recompute any previously evaluated mxEval()
calculations that use argument defvar.row
.
There are a few known issues in version 2.0:
Please post questions, comments, and issues to the OpenMx Forums!