[R] curve fitting problem

Gabor Grothendieck ggrothendieck at gmail.com
Mon Dec 24 16:02:48 CET 2007


Your model is singular.  Varying m and log(l) have the same
effect: log(ir) = log(k) + m * log(l) * ox

Also with plinear you don't specify the linear coefficients but
rather an X matrix whose coefficients represent them:
If we use this model instead:

ir = k * exp(m * ox)

Then:

> mod0 <- lm(log(ir) ~ ox)
> mod0

Call:
lm(formula = log(ir) ~ ox)

Coefficients:
(Intercept)           ox
   2.199743     0.003835

> nls(ir ~ exp(m * ox), start = list(m = coef(mod0)[2]), algorithm = "plinear")
Nonlinear regression model
  model:  ir ~ exp(m * ox)
   data:  parent.frame()
       m     .lin
0.003991 9.091758
 residual sum-of-squares: 0.3551

Number of iterations to convergence: 3
Achieved convergence tolerance: 5.289e-07

On Dec 24, 2007 9:04 AM,  <pieterprovoost at gmail.com> wrote:
> I'm trying to fit a function y=k*l^(m*x) to some data points, with  reasonable starting value estimates (I think). I keep getting "singular matrix 'a' in solve".
>
> This is the code:
>
> ox <- c(-600,-300,-200,1,100,200)
> ir <- c(1,2.5,4,9,14,20)
> model <- nls(ir ~ k*l^(m*ox),start=list(k=10,l=3,m=0.004),algorithm="plinear")
> summary(model)
> plot(ox,ir)
> testox <- seq(-600,200,length=100)
> k <- 10
> l <- 3
> m <- 0.004
> testir <- k*l^(m*testox)
> lines(testox,testir)
>
> Any thoughts?
> Thanks!
>
> --
> This message was sent on behalf of pieterprovoost at gmail.com at openSubscriber.com
> http://www.opensubscriber.com/messages/r-help@stat.math.ethz.ch/topic.html
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list