I have data that looks like

O.lengthO.age
176	1
179	1
182	1
...
493	5
494	5
514	5
606	5
462	6
491	6
537	6
553	6
432	7
522	7
625	8
661	8
687	10
704	10
615	12
(truncated)

with a simple VonB growth model from within nls():

plot(O.length~O.age, data=OS)
Oto = nls(O.length~Linf*(1-exp(-k*(O.age-t0))), data=OS,
      start=list(Linf=1000, k=0.1, t0=0.1), trace=TRUE)
      mod <- seq(0, 12)                                                                    
mod=seq(1,12, by=0.001)
lines(mod, predict(Oto, list(O.age = mod)))

I'm trying to put 95% confidence intervals on the nls() regression with code that I found in the R-help archive:

se.fit <- sqrt(apply(attr(predict(Oto,list(O.age=mod)),"gradient", col="blue"),1,
                  function(x) sum(vcov(Oto)*outer(x,x))))
matplot(mod, predict(Oto,list(O.age=mod))+
               outer(se.fit,qnorm(c(.5, .025,.975))),type="l")

Unfortunately, I get the error:

Error in apply(attr(predict(Oto, list(O.age = mod)), "gradient", col = "blue"),  : 
  dim(X) must have a positive length

after the se.fit statement is submitted.  My lack of R programming knowledge prohibits me from debugging this on my own.  My biggest problem is not knowing what, exactly, is going on in the se.fit or matplot() statements.  

Any ideas as to how I can get this to work?

Thanks,

SR  



Steven H. Ranney
Graduate Research Assistant (Ph.D)
USGS Montana Cooperative Fishery Research Unit
Montana State University
PO Box 173460
Bozeman, MT 59717-3460

phone: (406) 994-6643
fax:   (406) 994-7479


	[[alternative HTML version deleted]]

