Might "nls" be testing values for "lag" that exceed min(X)? That might produce the error you observe.

I routine reparameterize problems like this to send boundaries to Inf, e.g.:

x0 <- min(df$X) fit<-nls(Y ~ max.*(1 - exp(-(rate*(X-x0+exp(ln.lag)))^shape)),df,start=start.est, x0=x0)
##NOT TESTED


(Also, I try to avoid conficts between objects / variables I use and, e.g., standard system functions like "max" and "df". R can determine whether a function or a non-function is required in most but not all contexts.)

hope this helps. spencer graves

Mike Saunders wrote:

Hi,

I am rather new to R, but both myself and another much more experience user cannot 
figure this out.  I have a collegue who has a 800+ nonlinear regressions to run for 
seed germination (different species, treatments, etc.) over time.  I created a looping 
structure to extract the parameters from each regression; I will then use the 
parameters themselves for further analysis.  I would like to fit a 4-parameter, 
sigmoidal shape Weibull because it it paramatized to have a maximum germination rate 
(max), a time lag for the start of germination (lag), a germination rate (rate) and a 
shape parameter (shape).

Here is a copy of this bit of the code:

start.est=list(max=max(df$Y),rate=1/(df$X[tx]-((df$X[tz-1]+df$X[tz])/2)),
   lag=(df$X[tz-1]+df$X[tz])/2,shape=1.1)
nls.control(maxiter=1000,minFactor=1/8192)
fit<-nls(Y ~ max*(1 - exp(-(rate*(X-lag))^shape)),df,start=start.est)


Here is one column of the data (X=Julian day, Y = % germination):

      X        Y
1   111 0.0000000
2   125 0.0000000
3   131 0.0000000
4   138 0.3076923
5   145 0.4260355
6   152 0.4733728
7   159 0.5443787
8   166 0.5680473
9   173 0.5680473
10  180 0.5917160
11  187 0.5917160
12  194 0.5917160
13  201 0.6153846
14  208 0.6153846
15  215 0.6153846
16  223 0.6153846
17  229 0.6153846
18  236 0.6153846
19  245 0.6153846

Here is the error I keep getting:

Error in numericDeriv(form[[3]], names(ind), env) : Missing value or an Infinity produced when evaluating the model


I have tried these things to get this to work: 1) Mess with the starting values quite a bit 2) Seed the regression with linear estimates between my known points (i.e., figure out daily averages). I then wanted to regress on these to get starting estimates to use with the real data. 3) Drop out all the 0s in the seeded data 4) Add jitter to the seeded data I should note that this worked to get a 3-parameter Gompertz to work, but that functional form is more difficult to interpret biologically.

I am out of ideas.  Thoughts anyone?  I would appreciate any help.

Mike Saunders
Research Assistant
Department of Forest Ecosystem Sciences
University of Maine


[[alternative HTML version deleted]]

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



-- Spencer Graves, PhD, Senior Development Engineer O: (408)938-4420; mobile: (408)655-4567

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to