OpenMx 2.7.18 released

We are pleased to announce the official release of OpenMx version 2.7.18. Click here for instructions on how to install the package from our virginia.edu repository. As usual, our repository has package binaries for Windows and MacOS, and source tarballs for Linux/GNU, all of which come with the NPSOL optimizer.

Users of Windows and Linux/GNU can also install OpenMx v2.7.18 from CRAN. However, CRAN has not been able to build functioning OpenMx binaries for MacOS since OpenMx v2.7.10. MacOS users can still obtain version 2.7.18 via CRAN, but the Mac onto which you are installing the package must be configured to build it from source. Again, precompiled MacOS binaries of version 2.7.18 are available through our own repository. MacOS users can also install an NPSOL-enabled "bleeding-edge" build of the package from here (though users should be aware that the bleeding-edge build is not a stable release, and has not necessarily even passed our test suite).

New features, performance improvements, and bug-fixes since OpenMx v2.7.12 include the following:

  • OpenMx now has a parametric bootstrapping feature! mxParametricBootstrap() simulates data from a null model to obtain parametric-bootstrap marginal p-values for a set of labeled parameters (fixed in the null model). Parametric bootstrapping is also used for the bootstrap likelihood-ratio test (see below).
  • A new function, mxCompareMatrix(), carries out all pairwise comparisons of MxModels in a set of MxModel objects.
  • mxCompare() now detects certain invalid or possibly-invalid model comparisons, and throws an error or warning(s) accordingly.
  • Both mxCompare() and mxCompareMatrix() can be used to conduct the bootstrap likelihood-ratio test. The bootstrap LRT procedure generates data under a null model to obtain a parametric-bootstrap null distribution of model-comparison LRT statistics, from which the p-value for the observed test statistics can be calculated. This is especially useful for situations where the chi-square approximation to the test statistics' null distribution is questionable, mixture models being a notable such example.
  • A new expectation class, MxExpectationMixture, is now available for finite mixture models.
  • Generic methods 'anova', 'simulate', 'confint', and 'vcov' now have definitions for the MxModel object class.
  • There is a new function, omxRunCI(), which calculates the confidence intervals requested in an MxModel's mxCI() statement, without redoing the primary optimization to find point estimates. This makes it simple for the user to calculate CIs only from one "best" model out of a candidate set, or to use a different optimizer to find point estimates and confidence limits.
  • OpenMx now reports the largest relative error bound it encountered while evaluating the multivariate-normal probability integral near the solution, and throws a warning if it is larger than 1%. This is to alert the user that OpenMx had difficulty accurately evaluating the fitfunction near the solution in an analysis involving ordinal data.
  • Some bugs, which had prevented WLS from working with ordinal data plus RAM or LISREL expectation, are now repaired.
  • mxDataWLS() now correctly enforces the requirement that ordinal variables be ordered factors.
  • mxDataWLS() can now provide means for all-continuous data when requested to do so.
  • OpenMx now gives a more helpful error message when fitting a model by WLS that is not identified.
  • mxDataWLS() no longer accepts argument debug; the debug argument was never intended for non-developer use to begin with. Users who have scripts that pass a value of debug to mxDataWLS() will now find that doing so causes an error. That technically makes this a backwards-incompatible change, but the now-eliminated argument never did anything of interest to end-users in the first place.
  • Previously, mxBootstrap() accepted argument plan, which was used to provide a compute plan to be used in each bootstrap replication. Now, mxBootstrap() uses the compute plan it finds inside the MxModel object it is passed via its first argument, model. Argument plan is deprecated, and providing a non-NULL value for it will result in an error. Note that this is a backwards-incompatible change.
  • imxRobustSE() and imxRowGradients() now work with most multigroup models. These functions now catch and throw an error or warning in several cases where robust standard errors would not be valid. Note that imxRowGradients() has a new argument, robustSE.
  • imxRobustSE() can now return the whole robust sampling covariance matrix for the free parameters if requested to do so through its new argument, details.
  • Argument key to mxOption() is now case-insensitive. For example, mxOption(NULL,"Default optimizer"), mxOption(NULL,"Default Optimizer"), and mxOption(NULL,"default optimizer") now all do the same thing.
  • The ML fitfunction no longer evaluates to NaN at the start values if the state-space initial means and variances depend upon definition variables.
  • If confidence intervals are requested for an entire symmetric MxMatrix, then OpenMx no longer calculates the redundant confidence intervals for matrix elements that are equal due to symmetry. This will save computation time.
  • mxVersion() now reports whether or not NPSOL is available, and whether or not OpenMx was compiled for multithreading with OpenMP.
  • Previously, there was a bug in mxStandardizeRAMpaths() such that, if a RAM model contained submodels, the path coefficients in that container model would not be included in the output. This bug, which would most likely have manifested in multilevel models, has been repaired.
  • mxStandardizeRAMpaths() was never designed for use with definition variables (see its documentation, which has been updated with relevant details). Therefore, it now throws a warning if it is used on an MxModel containing definition variables.
  • mxGenerateData() is now compatible with the multigroup fitfunction.
  • mxTryHard() has a new argument, silent (defaults to FALSE). If silent=TRUE, most of mxTryHard()'s message-printing is suppressed.
  • Several of OpenMx's help pages have been updated with advisory information, clarifying details, and error-corrections.
  • A bug in how "wall time" is displayed in MxModels' summary() output has been corrected.
  • The error message for non-conformable matrix multiplication in an MxAlgebra now identifies the non-comformable matrices by name.
  • OpenMx now gives a warning when a factor (as in the R datatype) is used as a definition variable, and coerces it to integer.
  • OpenMx now correctly detects NAs on integer-typed definition variables; this repairs a regression introduced in an earlier release of version 2.7.x.
  • In the summary() output for an MxModel using the GREML expectation, the "Saturated" and "Independence" entries in the "Model Statistics" table are now set to NA. The GREML expectation was designed for scenarios where a "saturated" model has no sensible definition (although, in a future release, OpenMx may be able to populate the "Independence" entry in some cases).
  • omxParallelCI() was designed for OpenMx version 1.x, and as a result, has not always worked nicely with version 2.x. Now, it has a new argument, independentSubmodels, which can be set to FALSE to make it behave more consistently with the version-2.x design. A new function mentioned above, omxRunCI(), is in fact a wrapper to omxParallelCI(), with independentSubmodels=FALSE and run=TRUE.
  • A bug, which had prevented omxParallelCI() from working with MxAlgebras that reference a range of matrix elements with the colon operator, :, has been repaired.

    There are also a few known issues with version 2.7.18:

  • The GREML expectation was designed to work with both the GREML fitfunction (to fit the model by REML) and with the ML fitfunction (to fit the model by ordinary ML). A regression was introduced in version 2.7.9 that causes OpenMx to silently internally switch to the GREML fitfunction when the user attempts to use the ML fitfunction with a GREML expectation. This issue is expected to be resolved in a future release.
  • Including an ordinal variable with zero variance as an endogenous variable in a model currently results in a misleading error message. We plan to implement a more helpful error message in a future release.