Copyright © 2007-2024 The OpenMx Project
OpenMx version 2.7.9 is now available through CRAN [1] and through our own package repository [2].
The most significant change between OpenMx v2.6 and v2.7 is that CSOLNP is now the on-load default optimizer. Use mxOption()
[3] to switch optimizers, e.g. mxOption(NULL,"Default optimizer","SLSQP")
to switch to SLSQP (the default since OpenMx v2.2) or mxOption(NULL,"Default optimizer","NPSOL")
to switch to NPSOL (the only optimizer prior to v2.2 of OpenMx, and in classic Mx before it).
New features, performance improvements, and bug-fixes in OpenMx v2.7.9 include:
mxAutoStart()
[5], which automatically picks very good starting values for a variety of models.
mxRefModels()
[7] have been repaired.
summary()
output for MxModel objects is now easier to read and more informative.
mxOption()
[3] now correctly explains how OpenMx's interface with NPSOL uses the "Feasibility tolerance" option.
mxEval()
[13] now works with expressions that reference elements of MxAlgebras [14] and MxMatrices [15] via square brackets.
mxFitFunctionWLS()
[16] now includes an internal standardization that allows the scale parameters for ordinal variables to be estimated. This allows any ML ordinal model to be estimated as a WLS model (unless it uses definition variables) by merely switching (1) the mxFitFunctionML()
[17] with mxFitFunctionWLS()
[16], and (2) the mxData(..., type='raw')
[18] with mxDataWLS(...).
[19].
mxDataWLS()
[20].
NA
s) in the dataset, mxFactorScores()
[21] now requires the user to provide a value for its new argument, minManifests
, which sets a minimum count of non-NA
scores to be present for each data row, below which the function will not calculate factor-score estimates for that row. Note that this is a backwards-incompatible change in behavior.
mxSE()
[22], which calculates delta-method standard errors for arbitrary expressions, named entities, and algebras. Note that it requires that standard errors (really, a valid Hessian matrix) be available for the MxModel's free parameters.
mxRun()
[23] now prints non-persistent feedback messages about optimization progress.
mxConstraint()
[9] (but see the related "known issue" below). This feature is presently supported for NPSOL and SLSQP. Providing analytic Jacobians can significantly reduce the number of fitfunction evaluations that the optimizer needs to reach a solution.
omxDefaultComputePlan()
[24], which creates a "default" MxComputeSequence [10], has been implemented. This new function is intended for cases where the user wants to run an MxModel with the same compute plan that would ordinarily be generated automatically at runtime, except for a few changes.
mxGenerateData()
[26] can now accept a dataframe as input instead of an MxModel, in which case it will return data based on a saturated multivariate-normal model.
mxGenerateData()
[26] is now compatible with joint ordinal-and-continuous datasets.
mxGenerateData()
[26] now approximates the missingness pattern of the original data. Note that this is a backwards-incompatible change in default behavior. The previous default behavior can be restored with argument use.miss=FALSE
.
summary()
with argument verbose=TRUE
.
A
matrices.
boundAdj=FALSE
to mxCI()
[27].
mxRefModels()
[7] now correctly handles MxModels with a single-variable dataset.
mxTryHard()
[30] and its ilk now no longer compute the numerical Hessian and standard errors when there are MxConstraints [31] in the model. This makes its behavior both consistent with mxRun()
[23], and correct in the general case, as OpenMx's numerical standard errors will not in general be valid in the presence of MxConstraints [31].
dchisq()
, pchisq()
, dbinom()
, pbinom()
, dcauchy()
, pcauchy()
.
mxOption()
[3] and mxComputeGradientDescent()
[12] has been expanded and clarified.
mxFitFunctionR()
[32] now warns against defining the fitfunction with functions that call OpenMx's backend (most notably omxMnor()
[33]), because doing so can crash R.
mxRun()
[23] and mxTryHard()
[30] et al. previously ignored the values of certain mxOptions [3] if those options were set specifically to the MxModel being run, and instead used those options' globally set values. This bug has been repaired.
omxSetParameters()
[34] and global R option mxCondenseMatrixSlots
set to TRUE
has been repaired. This bug would have most likely manifested itself as mysterious errors at runtime involving the internal function 'setParametersMatrix'.
A number of known issues with the beta release of version 2.7 (which was v2.7.4) have been resolved for v2.7.9:
mxRun()
[23] would silently override the values of mxOptions [3] "Gradient step size", "Gradient iterations", and 'Function precision". The on-load default for these options is now the character string "Auto", which is automatically overridden with sensible numerical values at runtime, as in previous versions. However, if the user sets his/her own numerical values for these options prior to runtime, then mxRun()
[23] will respect those user-supplied values.
dnbinom()
and pnbinom()
have been replaced with omxDnbinom()
and omxPnbinom()
; these new functions are compatible with mxEval()
[13].
mxKalmanScores()
[35] are now correct.
omxAllInt()
no longer ends with an error if omxAllInt()
returns a probability of zero.
mxGetExpected()
[36] on an MxModel containing submodels that refer to the container no longer results in an error.
Some known issues with v2.7.9 exist:
summary()
) defined for that class will not work [40].
Links
[1] https://cran.r-project.org/web/packages/OpenMx/
[2] https://openmx.ssri.psu.edu/installing-openmx?q=installing-openmx
[3] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxOption.html
[4] https://github.com/OpenMx/OpenMx/blob/master/R/MxReservedNames.R
[5] https://github.com/OpenMx/OpenMx/blob/master/R/MxAutoStart.R
[6] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxExpectationHiddenMarkov.html
[7] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxSaturatedModel.html
[8] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeNelderMead.html
[9] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxConstraint.html
[10] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeSequence.html
[11] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeOnce.html
[12] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxComputeGradientDescent.html
[13] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxEval.html
[14] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxAlgebra.html
[15] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxMatrix.html
[16] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionWLS.html
[17] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionML.html
[18] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxData.html
[19] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxDataWLS.html
[20] https://openmx.ssri.psu.edu/node/4246
[21] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFactorScores.html
[22] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxSE.html
[23] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxRun.html
[24] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxDefaultComputePlan.html
[25] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionGREML.html
[26] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxGenerateData.html
[27] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxCI.html
[28] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxExpectationStateSpaceContinuousTime.html
[29] https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3486787/
[30] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxTryHard.html
[31] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/MxConstraint-class.html
[32] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxFitFunctionR.html
[33] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxMnor.html
[34] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/omxSetParameters.html
[35] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxKalmanScores.html
[36] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/mxGetExpected.html
[37] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/MxFitFunctionGREML-class.html
[38] https://github.com/OpenMx/OpenMx/issues/14
[39] https://openmx.ssri.psu.edu/docs/OpenMx/latest/_static/Rdoc/MxRAMModel-class.html
[40] https://github.com/OpenMx/OpenMx/issues/16