[R] issue with L-BFGS-B in optim (optim just hangs)

Ravi Varadhan RVaradhan at jhmi.edu
Fri Apr 17 18:45:46 CEST 2009


Tiago,

If you have an improper integral, i.e. with at least one of the limits being
infinite, it is generally not a good idea to use large positive or negative
values to compute such integrals. You should use "integrate" (calling it
twice) to compute your double integral.  This might solve your problem,
assuming that is your problem.

Ravi.
----------------------------------------------------------------------------
-------

Ravi Varadhan, Ph.D.

Assistant Professor, The Center on Aging and Health

Division of Geriatric Medicine and Gerontology 

Johns Hopkins University

Ph: (410) 502-2619

Fax: (410) 614-9625

Email: rvaradhan at jhmi.edu

Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html



----------------------------------------------------------------------------
--------


-----Original Message-----
From: Tiago Marques [mailto:tiago at mcs.st-and.ac.uk] 
Sent: Friday, April 17, 2009 11:56 AM
To: Ravi Varadhan
Cc: r-help at r-project.org
Subject: Re: [R] issue with L-BFGS-B in optim (optim just hangs)

Dear R-help list,

Just a wrap up for this issue. Thanks to Ravi Varadan and Paul Smith for
useful feedback (both on and off list).

It seems like the culprit was another function being called within optim,
namely adapt (used to solve numerically a double integral in the likelihood
I am maximizing). From what I was able to track down, it is adapt that just
hangs. I do not know exactly why, but decreasing the precision in adapt,
using parameter eps, solves it somewhat.

I have not yet investigated thoroughly if decreasing eps does have an impact
on my results, but that is another story!

Best,

Tiago

Ravi Varadhan wrote:
> Hi Tiago,
> 
> It is hard for me to speculate without knowing more about your problem.  
> 
> Here is what I would suggest, assuming your problem specification and 
> its computer implementation are correct:
> 
> (1) You may try to terminate the algorithm by specifying a different 
> stopping criterion than the default values, and see whether the 
> solution is of acceptable accuracy.  You can increase "factr" and/or 
> "pgtol" to see if this problem goes away.
> 
> (2) Another option is to increase "lmm" parameter, which is the number 
> of BFGS updates saved for approximating the hessian.  Results in Zhu et
al.
> (ACM 1997) show that increasing "lmm" tends to improve the reliability 
> of the algorithm.  Try, for example, lmm=17 (default is lmm = 5).  
> Also, try using "trace" to get more information on what goes on.
> 
> I can also suggest some alternative solutions:
> 
> (3).  An easy solution is to try a different optimization algorithm: 
> YOU can try either nlminb() or spg() in package "BB".
> 
> (4).  If it is easy to do so, specify analytic score function, i.e. 
> the gradient of log-likelohood, and re-run optim() or nlminb() or spg().
> 
> 
> Hope this helps,
> Ravi.
> 
> ----------------------------------------------------------------------
> ------
> Ravi Varadhan, Ph.D.
> Assistant Professor, The Center on Aging and Health Division of 
> Geriatric Medicine and Gerontology Johns Hopkins University
> Ph: (410) 502-2619
> Fax: (410) 614-9625
> Email: rvaradhan at jhmi.edu
> Webpage:  
> http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
> 
> ----------------------------------------------------------------------
> ------
> --------

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Tiago Marques
> Sent: Wednesday, April 15, 2009 10:57 AM
> To: r-help at r-project.org
> Subject: [R] issue with L-BFGS-B in optim (optim just hangs)
> 
> Dear R-Help List,
> 
> I am using optim, with method=L-BFGS-B, to maximize a likelihood 
> inside a large simulation exercise. This runs fine for most simulated 
> data sets, but for some reason, about 1 out of 100 times, optim will just
hang.
> Using a dumb approach to the problem (i.e. printing the parameter 
> values each time the function being maximized is evaluated), I tracked 
> down when this happens, and although I do not understand optim's 
> behavior or what triggers it, it seems to happen specifically when one 
> of the parameter boundaries is reached - and then the function just stops
being evaluated.
> 
> But there is nothing special with the parameter boundary, i.e., if  I 
> decrease or increase the boundary using say lower and upper arguments 
> in optim, the function seems to hang at the new values. So it does not 
> seem to be a specific value that triggers the behavior, but the fact 
> that the value is the boundary defined in the function call.
> 
> As anyone seen this behavior before? Is it me missing something or is 
> this some bug in "method=L-BFGS-B"? Any suggestions on how to deal with
it?
> 
> Many thanks for any useful feedback,
> 
> Tiago
> 
> --
> 
> Tiago André Marques
> Research Unit for Wildlife Population Assessment Centre for Research 
> into Ecological and Environmental Modelling University of St Andrews 
> The Observatory Buchanan Gardens St Andrews Fife KY16 9LZ Scotland
> 
> Tel: 00441334461842 Fax: 00441334461800 (Scotland office)
> Tel: 00351210198736 (Portugal home)
> 
> http://www-maths.mcs.st-andrews.ac.uk/homepages/tam2.html
> http://www.creem.st-and.ac.uk/tiago/
> 
> The University of St Andrews is a charity registered in Scotland : No
> SC013532
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.




More information about the R-help mailing list