Hello.

I am trying to fit an asymptotic relationship (nonlinear) to some

ecological data, and am having problems. I am interested in the upper

bound on the data (i.e. if there is an upper limit to 'y' across a range

of 'x'). As such, I am using the nonlinear quantile regression package

(nlrq) to fit a michaelis mention type model.

The errors I get (which are dependant on the quantile of interest and the

particular dataset) tend to result in illogical regression results with

the nlqr package.

To test this, I created artificial datasets that were based on underlying

asymptotic or linear data. When tested with a nonlinear model, the linear

data produces an error (step factor reduced below 'midFactor'--a problem

dealt with previously on this list). This script is below, for interest.

My question is whether this is a problem that I should deal with through

fixing my script somehow, or whether fitting a nonlinear model to data

that may have an underlying linear pattern is inherently statistically

wrong (I thought that I could use the estimate of the asymptote as a

metric of how linear versus asymptotic the data were).

Many thanks, in advance.

roly russell - oregon state university

PS - I have not consulted Bates & Watts yet; I will.

# build artificial data with multiplicative error

Dat <- NULL; Dat$x <- rep(seq(1,25,by=3), 5)

set.seed(1)

Dat$y <- SSmicmen(Dat$x, 50, 12)*rnorm(45, 1, 0.1)

plot(Dat)

# fit a classical least-square regression

Dat.nls <- nls(y ~ SSmicmen(x, Vmax, Km), data=Dat); Dat.nls

lines(1:25, predict(Dat.nls, newdata=list(x=1:25)), col=1)

# the 1st and 3rd quartiles regressions

Dat.nlrq <- nlrq(y ~ SSmicmen(x, Asym, mid), data=Dat, tau=0.25,

trace=TRUE)

lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=3)

Dat.nlrq <- nlrq(y ~ SSmicmen(x, Asym, mid), data=Dat, tau=0.75,

trace=TRUE)

lines(1:25, predict(Dat.nlrq, newdata=list(x=1:25)), col=3)

# build artificial LINEAR data with multiplicative error

Dat <- NULL; Dat$x <- rep(1:25, 2)

set.seed(1)

Dat$y <- (Dat$x)*rnorm(50, 1, 0.1)

plot(Dat)

# fit first a classical least-square regression

Dat.nls <- nls(y ~ SSmicmen(x, Vmax, Km),

data=Dat,control=nls.control(minFactor=1/4096)); Dat.nls

lines(1:25, predict(Dat.nls, newdata=list(x=1:25)), col=1)