This is an internal function used to check the convergence of the optim function.
check_support(target_stats, stats_statmat, threshold = 0.8, warn = TRUE) check_convergence(optim_output, model, support, crit = 5)
target_stats, stats_statmat | See ergmito_formulae. |
---|---|
threshold | Numeric scalar. Confidence range for flagging an observed statistic as potentially near the boundary. |
warn | logical scalar. |
optim_output | A list output from the stats::optim function. |
model | An object of class ergmito_loglik. |
support | As returned by |
crit | Numeric scalar. Level at which a parameter estimate will be questioned. |
A list with the following components:
par
Updated set of parameters
vcov
Updated variance-covariance matrix
valid
Vector of integers with the parameters that are marked as OK.
status
Return code of the analysis. See details.
note
A note describing the status.
The function makes an analysis of the outcome of the model and makes the corresponding adjustments when required. In particular, we check:
Whether the optimization algorithm converged or not
If the obtained estimates maximize the function. If this is not the case,
the function checks whether the MLE may not exist. This usually happens
when the log-likelihood function can improve by making increments to parameters
that are already tagged as large. If the ll improves, then the value is
replaced with Inf
(+- depending on the sign of the parameter).
If the Hessian is semi-positive-definite, i.e. if it is invertible. If it is not, it usually means that the function did not converged, in which case we will use MASS::ginv instead.
The return codes are composed of two numbers, the first number gives information regarding of the parameter estimates, while the second number give information about the variance-covariance matrix.
Column 1:
0: Converged and estimates at the max.
1: It did not converged, but I see no issue in the max.
2: One or more estimates went to +/-Inf
3: All went to hell. All estimates went to +/-Inf
Column 2:
0: Hessian is p.s.d.
1: Hessian is not not p.s.d.
Possible codes and corresponding messages:
00 All OK (no message).
01 optim converged, but the Hessian is not p.s.d. .
10 optim did not converged, but the estimates look OK. .
11 optim did not converged, and the Hessian is not p.s.d. .
20 A subset of the parameters estimates was replaced with +/-Inf. .
21 A subset of the parameters estimates was replaced with +/-Inf, and the Hessian matrix is not p.s.d. .
30 All parameters went to +/-Inf suggesting that the MLE may not exists. .