[R] fitting an exp model

Ben Bolker bbolker at gmail.com
Thu Jan 19 20:35:38 CET 2012


arivald <rzepus.m <at> gmail.com> writes:

> I am trying to fit an exponential model using nls to some data. 
> 
> #data 
> t <- c(0,15,30,60,90,120,240,360,480)
> var <- c(0.36,9.72,15.50,23.50,31.44,40.66,59.81,73.11,81.65)
> df <- data.frame(t, var)
> 
> # model      
> # var ~ a+b*(1-exp(-k*t))
> 
> # I'm looking for values of     a,b and k
> 
> #  formula 
> #  mod <- nls(formula = var ~ a+b *(1-exp((-k)*t)), start=list(a=0, b=10,
> k=0), trace=T)
> 
> # It fails and I get the following error - 
> Error in nlsModel(formula, mf, start, wts) : 
>   singular gradient matrix at initial parameter estimates 
> 

  Try different starting values, especially with k>0 ?


mod2 <- nls(formula = var ~ a+b *(1-exp((-k)*t)),
            start=list(a=0, b=10,k=0.01), trace=TRUE)

Alternately you can try a self-starting model (see ?SSasymp),
although the parameterization is a little different.

mod3 <- nls(formula = var ~ SSasymp(t,b,a,lrc), trace=TRUE)
coef(mod2)
coef(mod3)
with(as.list(coef(mod3)),c(a=a,b=b-a,k=exp(lrc)))



More information about the R-help mailing list