问题描述
我在 R 中使用了 solnp()。我知道收敛输出为 0 表示收敛成功。但是值 1 或 2 之间有什么区别?我似乎无法在 R 文档中找到答案。谢谢。
解决方法
挖掘 solnp()
的源代码,我发现了以下内容
if (get(".solnp_errors",envir = .solnpenv) == 1) {
convergence = 2
if (trace)
cat(paste("\nsolnp--> Solution not reliable....Problem Inverting Hessian.\n",sep = ""))
}
else {
if (.vnorm(c(tt[1],tt[2])) <= tol) {
convergence = 0
if (trace)
cat(paste("\nsolnp--> Completed in ",.solnp_iter," iterations\n",sep = ""))
}
else {
convergence = 1
if (trace)
cat(paste("\nsolnp--> Exiting after maximum number of iterations\n","Tolerance not achieved\n",sep = ""))
}
}
这意味着
- congergence = 0:成功
- 收敛 = 1:达到最大迭代次数
- 收敛 = 2:由于反转 Hessian 的问题,解决方案不可靠