On 20/01/12 06:38, arivald wrote:
Hello there,

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

I was trying different methods and looking for some solutions but nothing is
working...

Any suggestions how I can fix this? I appreciated any help
Thanks in advance.

Try different starting values.  Yours are out to lunch.  Look at:

    plot(function(t){10*(1-exp(-t))},xlim=c(0,500),xlab="t",ylab="var")

This goes to hell in a handcart at about t=6 and looks nothing like

    plot(t,var)

I found that

mod <- nls(formula = var ~ a + b *(1-exp((-k)*t)), start=list(a=0,b=80, k=0.01))

works OK.  Then doing

    ccc <- coef(mod)
plot(function(t){ccc[1] +ccc[2]*(1-exp(-ccc[3]*t))},xlim=c(0,500),xlab="t",ylab="var")
    points(t,var)

indicates a fairly reasonable fit. One wonders however about the validity of the model
considering the lack of  fit at t=0.

R has great and easy-to-use graphics capabilities.  Use them!

    cheers,

        Rolf Turner

______________________________________________
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.

Reply via email to