[R] Question about nlminb function

J C Nash pro|jcn@@h @end|ng |rom gm@||@com
Fri Apr 3 15:48:32 CEST 2020


This thread points out the important and often overlooked
difference between "convergence" of an algorithm and "termination"
of a program. I've been pushing this button for over 30 years,
and I suspect that it will continue to come up from time to time.

Sometimes it is helpful to put termination criteria actually into
the user function. Alternatively try a different optimizer. The optimx
package wraps several, including a few for bounds constrained optimization.
Note that a new version will go up once revdeps have been checked. Dylan
Beijers noted a minor glitch if users want to "maximize".

If the termination criteria are really critical, some of the methods now
merged into optimx (Rvmmin, Rcgmin, Rtnmin) are all in R. I won't pretend
that diving in and making changes is easy, though I've tried to move the
code more and more to maintainability and transparency. If anyone is
interested in pursuing that sort of thing, I'll be willing to advise or
help as long as the requests aren't too strident.

For information, while all-R programs used to be much slower than those
in Fortran or C or C++, users should time their problems rather than just
assume a great penalty for running things completely in R. The human time
saving is generally more important.

Best, John Nash


On 2020-04-03 5:24 a.m., Ivan Krylov wrote:
> On Thu, 2 Apr 2020 10:26:07 +0000
> "Lim, Hwanggyu" <hlim using gmac.com> wrote:
> 
>> when n-1th estimates and nth estimates have absolute differences
>> less than 0.001 for all three parameters, the iteration must stop
> 
>> I am using nlminb optimization function
> 
> nlminb function uses the PORT library. According to [1], the closest
> thing PORT has to what you want is the notion of X-convergence, namely,
> stopping when max(scale * abs(x - xstar))/max(scale * abs(x + xstar)) is
> considered to be below control$x.tol (with xstar being supposed local
> minimiser and scale being all ones by default). Using it as an absolute
> stopping criterion in x requires knowledge of at least order of
> magnitude of xstar, though, so it might not be feasible.
> 
> Note that ?nlminb says in the description that it is there "for
> historical compatibility."
> 
> The nloptr package offers an xtol_abs option [2] that results in the
> behaviour you want.
>



More information about the R-help mailing list