Hope these help for alternatives to lm()? I show the use of a 2nd order
polynomial as an example to generalize a bit.

Sometimes from the subject line two separate responses can appear as reposts
when in fact they are not... (though there are identical reposts too). I
should probably figure a way around that.

--- Stephen Tucker <[EMAIL PROTECTED]> wrote:

> ## Data input
> input <-
> "Year Count
> 1999  3
> 2000  5
> 2001  9
> 2002  30
> 2003  62
> 2004  154
> 2005  245
> 2006  321"
> 
> dat <- read.table(textConnection(input),header=TRUE)
> dat[,] <- lapply(dat,function(x) x-x[1])
>           # shifting in origin; will need to add back in later
> 
> ## Nonlinear least squares
> plot(dat)
> out <- nls(Count~b0*exp(b1*Year),data=dat,
>            start=list(b0=1,b1=1))
> lines(dat[,1],fitted(out),col=2)
> out <- nls(Count~b0+b1*Year+b2*Year^2,data=dat, #polynomial
>            start=list(b0=0,b1=1,b2=1))
> lines(dat[,1],fitted(out),col=3)
> 
> ## Optim
> f <- function(.pars,.dat,.fun) sum((.dat[,2]-.fun(.pars,.dat[,1]))^2)
> fitFun <- function(b,x) cbind(1,x,x^2)%*%b
> expFun <- function(b,x) b[1]*exp(b[2]*x)
> 
> plot(dat)
> out <- optim(c(0,1,1),f,.dat=dat,.fun=fitFun)
> lines(dat[,1],fitFun(out$par,dat[,1]),col=2)
> out <- optim(c(1,1),f,.dat=dat,.fun=expFun)
> lines(dat[,1],expFun(out$par,dat[,1]),col=3)



       
____________________________________________________________________________________
Got a little couch potato? 
Check out fun summer activities for kids.

______________________________________________
R-help@stat.math.ethz.ch 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