Hi Ravi,

Thanks for your great suggestion, it does exactly what I need as it provides
more insight into what is going on in the 'black box'. In addition, it's
much faster than optim(). I will use this function in the future.

Kind Regards,

Shimrit



On Tue, Feb 24, 2009 at 2:33 PM, Ravi Varadhan <rvarad...@jhmi.edu> wrote:

> Hi,
>
> If you look at the source code for optim() in the optim.c file, you will
> see
> the following lines for "BFGS":
>
>        if (trace && (iter % nREPORT == 0))
>            Rprintf("iter%4d value %f\n", iter, f);
>
> This means that "BFGS" does not output gradient values when you "trace" the
> iterations.  Let us look at the code for "L-BFGS-B":
>
>            if(trace == 1 && (iter % nREPORT == 0)) {
>                Rprintf("iter %4d value %f\n", iter, f);
>
> So, it seems like even "L-BFGS-B" algorithm is also not going to be useful
> to you.
>
>
> You can use the spg() function in the "BB" package.  Its usage is very
> similar to that of optim().  When you specify trace=TRUE, it will give you
> both function and (projected) gradient information.  You can use the
> "triter" parameter to control the frequency of output, i.e. settig
> triter=1,
> will give you the fn and gr values at each iteration.
>
>        library(BB)
>        ?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: rvarad...@jhmi.edu
>
> Webpage:  http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html
>
>
>
>
> ----------------------------------------------------------------------------
> --------
>
>
> -----Original Message-----
> From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org]
> On
> Behalf Of Shimrit Abraham
> Sent: Tuesday, February 24, 2009 9:00 AM
> To: r-help@r-project.org
> Subject: [R] Tracing gradient during optimization
>
> Hi everyone,
>
> I am currently using the function optim() to maximize/minimize functions
> and
> I would like to see more output of the optimization procedure, in
> particular
> the numerical gradient of the parameter vector during each iteration.
> The documentation of optim() describes that the trace parameter should
> allow
> one to trace the progress of the optimization.
> I use the following command:
>
> optim(par = vPar,
>         fn = calcLogLik,
>         method = "BFGS",
>         control = list(trace = TRUE, fnscale = -1, maxit = 2000));
>
> which gives very little information:
>
> initial  value 3.056998
> final  value 2.978351
> converged
>
> Specifying trace >1, for instance trace = 20, does not result in more
> information. Is there a way to view more details of the progress perhaps by
> using another optimizer?
>
> Thanks,
>
> Shimrit Abraham
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@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.
>
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@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.

Reply via email to