[R] Question about nlminb function

Lim, Hwanggyu h||m @end|ng |rom gm@c@com
Tue Apr 7 21:38:44 CEST 2020


Hello John,

Thank you so much for your valuable response. I think using several new optimization function (e.g., Rvmmin) would be a good option for me. I will dive into those function. Thank you again!

Best,
Hwanggyu

-----Original Message-----
From: J C Nash <profjcnash using gmail.com>
Sent: Friday, April 3, 2020 9:49 AM
To: Ivan Krylov <krylov.r00t using gmail.com>; Lim, Hwanggyu <hlim using gmac.com>
Cc: r-help using r-project.org
Subject: Re: [R] Question about nlminb function

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.
>
The information in this transmission is confidential and intended only for the recipient listed above. If you are not the intended recipient, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. If you are not the intended recipient, you are hereby notified that any disclosure, copying or distribution of this message, or the taking of any action based upon it, is strictly prohibited.


More information about the R-help mailing list