sol$convergence = 1 or 2 with solnp() 是什么意思?

问题描述

我在 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 的问题,解决方案不可靠

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...