Duncan has given a indication of why nls() has troubles, and you have found a way to work around the problem partially. However, you may like to try nlmrt (from R-forge project
R-forge.r-project.org/R/?group_id=395 It is intended to be very aggressive in finding a solution, and also to deal with small residual problems that are really not statistical in nature i.e., nonlinear least squares but not nonlinear regression. Note that there is a function wrapnls() if you want the nls() output structure which is very useful for modeling. nlmrt::nlxb is closer to an optimization method. I'd be interested to know if you find the solution found by nlmrt is useful in your context. ---------------------------------------------- require(nlmrt) nlsfit2<- nlxb(data=dd, y ~ 1/2 * ( 1- tanh((x - ttt)/smallc) * exp(-x / tau2) ), start=list(ttt=0.4, tau2=0.1) , trace=TRUE) ---------------------------------------------- Best, JN On 07/12/2012 06:00 AM, r-help-requ...@r-project.org wrote: > From: Jonas Stein <n...@jonasstein.de> > To: <r-h...@stat.math.ethz.ch> > Subject: [R] nls problem: singular gradient > Message-ID: <e8h0d9-ao4....@news.jonasstein.de> > Content-Type: text/plain > > Why fails nls with "singular gradient" here? > I post a minimal example on the bottom and would be very > happy if someone could help me. > Kind regards, > > ########### > > # define some constants > smallc <- 0.0001 > t <- seq(0,1,0.001) > t0 <- 0.5 > tau1 <- 0.02 > > # generate yy(t) > > yy <- 1/2 * ( 1- tanh((t - t0)/smallc) * exp(-t / tau1) ) + > rnorm(length(t))*0.01 > > # show the curve > > plot(x=t, y=yy, pch=18) > > # prepare data > > dd <- data.frame(y=yy, x=t) > > nlsfit <- nls(data=dd, y ~ 1/2 * ( 1- tanh((x - ttt)/smallc) * exp(-x / > tau2) ), start=list(ttt=0.4, tau2=0.1) , trace=TRUE) > > # get error: > # Error in nls(data = dd, y ~ 1/2 * (1 - tanh((x - ttt)/smallc) * > exp(-x/tau2)), : > # singular gradient > > -- Jonas Stein <n...@jonasstein.de> ---------------------------- ______________________________________________ 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.