Evaluates convergence and numerical diagnostics for an OpenMx model.
Usage
mx_diagnostics(
model,
check = c("convergence", "fit", "parameters", "standard_errors", "boundaries",
"hessian"),
tol = 1e-06
)Arguments
- model
A fitted
mxModelobject.- check
Character vector specifying which diagnostics to perform out of
c("convergence", "fit", "parameters", "standard_errors", "boundaries", "hessian"). Default: all diagnostics.- tol
Numeric atomic vector, indicating the tolerance for checking whether estimates are near their boundaries.
Value
A list containing:
- checks_pass
Logical indicating whether all requested checks pass.
- convergence_ok
Logical indicating acceptable optimizer convergence.
- fit_ok
Logical indicating a finite model fit value.
- parameters_ok
Logical indicating finite parameter estimates.
- boundaries_ok
Logical indicating whether parameter boundary checks pass.
- standard_errors_ok
Logical indicating whether standard errors are available and valid.
- hessian_ok
Logical indicating whether the Hessian satisfies the implemented diagnostic criteria.
- warnings
Character vector describing detected problems.
Details
Convergence diagnostics do not guarantee that the global maximum of the likelihood has been found. Boundary estimates and non-positive-definite Hessians may indicate weak identification. Boundary estimates do not necessarily imply optimization failure.
Examples
if (FALSE) { # \dontrun{
library(OpenMx)
library(metamixture)
set.seed(123)
dat <- sim_mix_rma(n = 100)
fit <- remix(dat$yi, dat$vi, classes = 2)
# Run all -diagnostic checks
mx_diagnostics(fit)
# Check only optimizer convergence and model fit
mx_diagnostics(fit, check = c("convergence", "fit"))
# Overall result
mx_diagnostics(fit)$checks_pass
} # }