# Non linear Regression: "singular gradient matrix at initial parameter estimates"

6 messages
Open this post in threaded view
|

## Non linear Regression: "singular gradient matrix at initial parameter estimates"

 Hi, I am using nls to fit a non linear function to some data but R keeps giving me "singular gradient matrix at initial parameter estimates" errors. For testing purposes I am doing this: ### R code ### x <- 0:140 y <- 200 / (1 + exp(17 - x)/2) * exp(-0.02*x) # creating 'perfect' samples with fitting model yeps <- y + rnorm(length(y), sd = 2) # adding noise # results in above error fit = nls(yeps ~ p1 / (1 + exp(p2 - x) / p3) * exp(p4 * x)) ### >From what I've found in this list I think that my model is over-parameterized. How can I work around that? Thanks, Felix         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Non linear Regression: "singular gradient matrix at initial parameter estimates"

 On 2011-04-11 13:29, Felix Nensa wrote: > Hi, > > I am using nls to fit a non linear function to some data but R keeps giving > me "singular gradient matrix at initial parameter estimates" errors. > For testing purposes I am doing this: > > ### R code ### > > x<- 0:140 > y<- 200 / (1 + exp(17 - x)/2) * exp(-0.02*x) # creating 'perfect' samples > with fitting model > yeps<- y + rnorm(length(y), sd = 2) # adding noise > > # results in above error > fit = nls(yeps ~ p1 / (1 + exp(p2 - x) / p3) * exp(p4 * x)) > > ### > >> From what I've found in this list I think that my model is over-parameterized. > How can I work around that? Take out p3; it's redundant. Peter Ehlers > Thanks, > > Felix > > [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] 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. ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Non linear Regression: "singular gradient matrix at initial parameter estimates"

 Hi Peter, thank you for your reply. Now I see, that P3 is indeed redundand. But with the simplified model... fit = nls(yeps ~ p1 / (1 + exp(p2 - x)) * exp(p4 * x)) ...nls still produces the same error. Any ideas? Felix 2011/4/12 Peter Ehlers <[hidden email]> > On 2011-04-11 13:29, Felix Nensa wrote: > >> Hi, >> >> I am using nls to fit a non linear function to some data but R keeps >> giving >> me "singular gradient matrix at initial parameter estimates" errors. >> For testing purposes I am doing this: >> >> ### R code ### >> >> x<- 0:140 >> y<- 200 / (1 + exp(17 - x)/2) * exp(-0.02*x) # creating 'perfect' samples >> with fitting model >> yeps<- y + rnorm(length(y), sd = 2) # adding noise >> >> # results in above error >> fit = nls(yeps ~ p1 / (1 + exp(p2 - x) / p3) * exp(p4 * x)) >> >> ### >> >>  From what I've found in this list I think that my model is >>> over-parameterized. >>> >> How can I work around that? >> > > Take out p3; it's redundant. > > Peter Ehlers > >  Thanks, >> >> Felix >> >>        [[alternative HTML version deleted]] >> >> ______________________________________________ >> [hidden email] 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]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Non linear Regression: "singular gradient matrix at initial parameter estimates"

 Use a more realistic starting point instead of the default one: fit <- nls(yeps ~ p1 / (1 + exp(p2 - x)) * exp(p4 * x), start=list(p1=410,p2=18,p4=-.03)) This works for me:  > fit Nonlinear regression model    model:  yeps ~ p1/(1 + exp(p2 - x)) * exp(p4 * x)     data:  parent.frame()         p1        p2        p4 199.48276  16.28664  -0.01987   residual sum-of-squares: 560.6 Number of iterations to convergence: 5 Achieved convergence tolerance: 5.637e-07 Ciao!                          mario On 12-Apr-11 18:01, Felix Nensa wrote: > fit = nls(yeps ~ p1 / (1 + exp(p2 - x)) * exp(p4 * x)) > -- Ing. Mario Valle Data Analysis and Visualization Group            | http://www.cscs.ch/~mvalleSwiss National Supercomputing Centre (CSCS)      | Tel:  +41 (91) 610.82.60 v. Cantonale Galleria 2, 6928 Manno, Switzerland | Fax:  +41 (91) 610.82.82 ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.