Bug in nlm()

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Bug in nlm()

Boehnstedt, Marie
Dear all,

I have found a bug in nlm() and would like to submit a report on this.
Since nlm() is in the stats-package, which is maintained by the R Core team, bug reports should be submitted to R's Bugzilla. However, I'm not a member of Bugzilla. Could anyone be so kind to add me to R's Bugzilla members or let me know to whom I should send the bug report?
Thank you in advance.

Kind regards,
Marie B�hnstedt


Marie B�hnstedt, MSc
Research Scientist
Max Planck Institute for Demographic Research
Konrad-Zuse-Str. 1, 18057 Rostock, Germany
www.demogr.mpg.de<http://www.demogr.mpg.de/>




----------
This mail has been sent through the MPI for Demographic ...{{dropped:9}}


______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Bug in nlm()

Martin Maechler
>>>>> Boehnstedt, Marie <[hidden email]>
>>>>>     on Fri, 3 Mar 2017 10:23:12 +0000 writes:

    > Dear all,
    > I have found a bug in nlm() and would like to submit a report on this.
    > Since nlm() is in the stats-package, which is maintained by the R Core team, bug reports should be submitted to R's Bugzilla. However, I'm not a member of Bugzilla. Could anyone be so kind to add me to R's Bugzilla members or let me know to whom I should send the bug report?

Dear Marie,

I can do this ... but  are you really sure?  There is
     https://www.r-project.org/bugs.html
which you should spend some time reading if you haven't already.

I think you would post a MRE (Minimal Reproducible Example) here
{or on stackoverflow or ...} if you'd follow what the 'R bugs' web
page (above) recommends and only report a bug after some
feedback from "the public".

Of course, I could be wrong.. and happy if you explain / tell me why.

Best,
Martin Maechler

    > Thank you in advance.

    > Kind regards,
    > Marie B�hnstedt


    > Marie B�hnstedt, MSc
    > Research Scientist
    > Max Planck Institute for Demographic Research
    > Konrad-Zuse-Str. 1, 18057 Rostock, Germany
    > www.demogr.mpg.de<http://www.demogr.mpg.de/>




    > ----------
    > This mail has been sent through the MPI for Demographic ...{{dropped:9}}


    > ----------------------------------------------------------------------
    > ______________________________________________
    > [hidden email] mailing list
    > https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Bug in nlm()

Martin Maechler
       {This was sent to me, MM, only, but for completeness should
        have gone back to R-devel.

        Further: I now *have* added Marie B to the members'of "R bugzilla"
        -- M.Maechler}


I had already read the R bug reporting guide and I'm sure it is a bug.
The bug occurs when the user provides not only the analytic gradient but also the analytic Hessian of the objective function. In that case, the algorithm does not converge due to an erroneous implementation of the modified Cholesky decomposition of the Hessian matrix. It is actually a bug in the C-code called by nlm(), therefore it is hard to show that the non-convergence of the algorithm is really due to this bug with only a MRE.
However, a short example (optimizing the Rosenbrock banana valley function with and without analytic Hessian) is:

fg <- function(x){  
  gr <- function(x1, x2) c(-400*x1*(x2 - x1*x1)-2*(1-x1), 200*(x2 - x1*x1))
  x1 <- x[1]; x2 <- x[2]
  res<- 100*(x2 - x1*x1)^2 + (1-x1)^2
  attr(res, "gradient") <- gr(x1, x2)
  return(res)
}
nlm.fg <- nlm(fg, c(-1.2, 1))

fgh <- function(x){
  gr <- function(x1, x2) c(-400*x1*(x2 - x1*x1) - 2*(1-x1), 200*(x2 - x1*x1))
  h <- function(x1, x2){
    a11 <- 2 - 400*x2 + 1200*x1*x1
    a21 <- -400*x1
    matrix(c(a11, a21, a21, 200), 2, 2)
  }
  x1 <- x[1];  x2 <- x[2];  res<- 100*(x2 - x1*x1)^2 + (1-x1)^2
  attr(res, "gradient") <- gr(x1, x2)
  attr(res, "hessian") <- h(x1, x2)
  return(res)
}
nlm.fgh <- nlm(fgh, c(-1.2,1))

I have almost finished a more detailed bug report, which I would like to submit.

Best,
Marie Boehnstedt

>>>>> Martin Maechler <[hidden email]>
>>>>>     on Fri, 3 Mar 2017 18:15:47 +0100 writes:

>>>>> Boehnstedt, Marie <[hidden email]>
>>>>>     on Fri, 3 Mar 2017 10:23:12 +0000 writes:

    >> Dear all, I have found a bug in nlm() and would like to
    >> submit a report on this.  Since nlm() is in the
    >> stats-package, which is maintained by the R Core team,
    >> bug reports should be submitted to R's Bugzilla. However,
    >> I'm not a member of Bugzilla. Could anyone be so kind to
    >> add me to R's Bugzilla members or let me know to whom I
    >> should send the bug report?

    > Dear Marie,

    > I can do this ... but are you really sure?  There is
    > https://www.r-project.org/bugs.html which you should spend
    > some time reading if you haven't already.

    > I think you would post a MRE (Minimal Reproducible
    > Example) here {or on stackoverflow or ...} if you'd follow
    > what the 'R bugs' web page (above) recommends and only
    > report a bug after some feedback from "the public".

    > Of course, I could be wrong.. and happy if you explain /
    > tell me why.

    > Best, Martin Maechler

    >> Thank you in advance.

    >> Kind regards, Marie B�hnstedt


    >> Marie B�hnstedt, MSc Research Scientist Max Planck
    >> Institute for Demographic Research Konrad-Zuse-Str. 1,
    >> 18057 Rostock, Germany
    >> www.demogr.mpg.de<http://www.demogr.mpg.de/>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Loading...