You are here
OpenMx 2.11 released!
Wed, 09/19/2018 - 15:23 — AdminRobK
New Features, Performance Improvements, and Tweaks Since v2.9.6:
- A new optimizer, which uses generalized simulated annealing, has been implemented.
- There are two new functions,
omxAkaikeWeights()
and mxModelAverage()
, for information-theoretic model-averaging and multimodel inference.
- Two new functions,
mxPearsonSelCov()
and mxPearsonSelMean()
, implement the Pearson-Aitken selection formulae. Both functions are usable in MxAlgebras.
- There is a new function,
mxComputeLoadMatrix()
, which constructs an object, to be placed into a custom compute plan, that will load a CSV file directly into the backend.
mxSE()
is now much faster, made possible by the new mxComputeJacobian()
, which creates a compute step to calculate a Jacobian matrix.
- During interactive R sessions,
mxTryHard()
now by default suppresses most persistent printing to the console; this behavior is set by argument silent
.
- The columns of the "CI details" table (in verbose
summary()
output) have been reordered, to make the table more readable.
- OpenMx now reports WLSM and WLSMV fit statistics for models that use the WLS fitfunction.
mxStandardizeRAMpaths()
now reports elements of the 'M' matrix, re-scaled to standard-deviation units.
mxAutoStart()
can now be used with diagonally weighted least squares.
mxGenerateData()
is now compatible with MxModels that depend on objects in other MxModels, in the same container MxModel.
- There is now an mxOption, "Max minutes", which (if positive) sets a maximum allowed backend time elapsed, in minutes (the on-load value of this option is 0, meaning no limit, i.e.
Inf
).
mxMatrix()
now partially matches the value of its type
argument. For instance, type="Ze"
is now equivalent to type="Zero"
.
- The Jacobian matrix output by
omxManifestModelByParameterJacobian()
(e.g., as in mxCheckIdentification()
) now has dimnames, which make it easier to read.
- SLSQP can now use multiple threads to calculate its numeric gradient of the GREML fitfunction. It does so automatically, using as many threads as provided by mxOption "Number of Threads".
- It is now possible to put a checkpointing step into a custom compute plan.
- By default, OpenMx now allows the Eigen linear-algebra library to use multiple threads.
- A value of "none" is now accepted for argument
scale
to mxExpectationHiddenMarkov()
and mxExpectationMixture()
.
- MxConstraints that depend upon definition variables now throw a warning at runtime.
- The output of
mxPower()
is more detailed.
- When using
mxFitFunctionML()
with rowDiagnostics=TRUE
, the fitfunction object will be populated at runtime by an additional row-wise diagnostic, namely, the per-row squared Mahalanobis distance.
Bug-fixes Since v2.9.6:
- The major iteration maximum is now enforced per optimization problem, not per call to
mxRun()
. This bug often caused the last few confidence limits attempted during a run to all be flagged as failing due to the optimizer reaching status BLUE.
- The on-load-default value of mxOption "mvnRelEps" has been increased to 0.005 from 0.001, which was judged to be too strict, and slowed down OpenMx too much. As a result, threshold models should now run more quickly, though sometimes the user may need to reduce "mvnRelEps" to get a threshold model to converge.
- A long-standing bug in
mxTryHard()
has been repaired. This bug caused the final numeric derivatives to be calculated in a different manner with mxTryHard()
versus direct mxRun()
, for threshold models using the default compute plan. This bug-fix may reduce the frequency of status Red in such cases.
mxCompareMatrix()
now works correctly.
- Previously,
mxSE()
would fail with an error if an R symbol referring to a character string were provided as argument x
. A new argument, forceName
, can be set to TRUE
to force mxSE()
to work in such a case.
mxBootStrapEvalByName()
no longer ignores arguments bq
and method
.
omxGetParameters()
now works smoothly with parameter labels in the form 'model.matrix[row,col]'.
mxPower()
now works smoothly with unlabeled parameters.
mxGenerateData()
now assumes a mean vector of zero when it is passed an MxModel that does not specify a mean.
mxPath()
statements that create zero paths no longer throw an error.
- OpenMx now reports sensible RMSEA confidence intervals for extremely ill-fitting models.
- AIC and BIC are no longer reported for MxModels fit with WLS, as they are not theoretically coherent outside of a maximum-likelihood context. Additionally, the
logLik
method now returns NA
when used on an MxModel with fit units other than '-2lnL'.
- Using the GREML expectation with the ML fitfunction now, as originally designed, fits the model by ML, not REML. This repairs a regression introduced in v2.6.
- The Nelder-Mead optimizer now returns status 10 if the initial simplex is infeasible, instead of throwing a fatal error.
- A bug has been repaired that could cause segfaults when the Nelder-Mead optimizer was using its "GDsearch" heuristic for MxConstraints.
- Per-MxModel option names are now case-insensitive.
- MxModels returned from
mxTryHard()
now have the 'infoDefinite' element of their output slot populated appropriately.
Known Issues: