В чем смысл sol $convergence = 1 или 2 с solnp()?

#r #output #nonlinear-optimization #convergence

#r #вывод #нелинейная оптимизация #сходимость

Вопрос:

Я использую solnp() в R. Я знаю, что результат конвергенции, равный 0, указывает на успешную конвергенцию. Но в чем разница между значениями 1 или 2? Кажется, я не могу найти ответ в документации R. Спасибо.

Ответ №1:

Покопавшись в исходном коде 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, 
              " iterationsn", sep = ""))
    }
    else {
        convergence = 1
        if (trace) 
            cat(paste("nsolnp--> Exiting after maximum number of iterationsn", 
              "Tolerance not achievedn", sep = ""))
    }
}
 

Это означает, что

  • конгергенция = 0: Успех
  • сходимость = 1: достигнуто максимальное количество итераций
  • сходимость = 2: решение ненадежно из-за проблем с инвертированием мешковины

Комментарии:

1. Ах, фантастика! Спасибо! Так что, я думаю, в случае 2 это означает, что, возможно, мои начальные значения нуждаются в повторной настройке, я думаю.