# Re: [R] Gradient problem in nlm

From: Spencer Graves <spencer.graves_at_pdf.com>
Date: Sat 14 Oct 2006 - 18:21:29 GMT

Because of the lack of a self-contained, reproducible example, I can only guess. If it were my problem, I might try the following:

1. Try 'nlm' with 'print.level=2'. This should provide more detail about the circumstances under which it failed. If that didn't provide adequate detail, I might modify my objective function to print more detailed trace information each time it's called.
2. Compare the gradient with that computed numerically, e.g., using 'grad' in library(numDeriv), especially for combinations of values apparently tested by 'nlm'.
3. Work through all the examples on the 'nlm' help page and demo(nlm), making sure I understood those in full detail. Doing so might identify something I was doing wrong, etc.
4. If I can't solve the problem after all of the above, I might try to develop the simplest, self-contained example I can find that still exhibits the problem. This often leads me to the problem. If it doesn't, I then have a simple, self-contained example that I can then post to this list; including such an example on average tends to increase the speed and quality of responses (and sometimes even the quantity).
```      Hope this helps.
Spencer Graves

```

singyee ling wrote:
> Hello everyone!
>
>
> I am having some trouble supplying the gradient function to nlm in R for
> windows version 2.2.1.
>
> What follows are the R-code I use:
>
> fredcs39<-function(a1,b1,b2,x){return(a1+exp(b1+b2*x))}
> loglikcs39<-function(theta,len){
> value<-sum(mcs39[1:len]*fredcs39(theta[1],theta[2],theta[3],c(8:(7+len))) -
> pcs39[1:len] * log(fredcs39(theta[1],theta[2],theta[3],c(8:(7+len)))))
> a1<-theta[1]; b1<-theta[2]; b2<-theta[3]
> df.a1<-sum(-mcs39[1:len] + pcs39[1:len]/(a1+exp(b1+b2*c(8:(7+len)))))
> df.b1<-sum( -mcs39[1:len] * exp(b1+b2*c(8:(7+len))) + (pcs39[1:len] *
> exp(b1+b2*c(8:(7+len))) ) /(a1+exp(b1+b2*c(8:(7+len)))))
> df.b2<- sum(-mcs39[1:len] * exp(b1+b2*c(8:(7+len))) * c(8:(7+len)) +
> (pcs39[1:len] * exp(b1+b2*c(8:(7+len))) * c(8:(7+len)) )
> /(a1+exp(b1+b2*c(8:(7+len)))) )
>
>
> return(value)
> }
>
> theta.start<-c(0.01 ,-1.20, -0.0005)
> outcs39<-nlm(loglikcs39,theta.start,len=50)
>
>
> Error in nlm(loglikcs39, theta.start, len = 50) :
> probable coding error in analytic gradient
>
>
> Any light that can be shed on this would be highly appreciated.
> Many thanks
>
> Singyee Ling
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help