Hi,

I'm having trouble with the confidence interval of the nls function.
I did my home work, and searched acros the support list until I came up with 
following solution of Peter Dalgaard:

            example(predict.nls) 
            se.fit <- sqrt(apply(attr(predict(fm,list(Time = 
tt)),"gradient"),1, 
            function(x) sum(vcov(fm)*outer(x,x))))
matplot(tt, predict(fm,list(Time = tt))+
               outer(se.fit,qnorm(c(.5, .025,.975))),type="l")
            points(demand ~ Time, data = BOD) 
            One slight issue is that it doesn't work if "newdata" is omitted, 
but then you can easily get the gradient from fm$m$gradient() 

I tried this with my own data:
    Data <- data.frame(Temp=rep(c(25,40),each=3), Mnd = c(1:3),Degr = 
c(0.057,0.077,0.108,0.148,0.198,0.223))
    model <- nls(Degr~exp((A/(Temp)+log(Mnd))*B),Data,start=list(A=-10,B=1))
    Months <- c(1,2,3,6,9,12,24,48)
    se.fit <- sqrt(apply(attr(predict(model,list(Temp = 
25,Mnd=Months)),"gradient"),1, function(x) sum(vcov(fm)*outer(x,x))))

But unfortunately I get an error ( Error in apply(attr(predict(model, list(Temp 
= 25, Mnd = Months)), "gradient"),  : 
        dim(X) must have a positive length)

When I try using the gradient of the model instead of using the new data then 
there is no problem:
    se.fit <- sqrt(apply(model$m$gradient(),1, function(x) 
sum(vcov(model)*outer(x,x))))
    matplot(Data$Mnd, predict(model,list(Temp = 
Data$Temp,Mnd=Data$Mnd))+outer(se.fit,qnorm(c(.5, 025,.975))),type="l")

But how about calculating confidence intervals of new data? How do I get an 
gradient for these values?

I'm using Windows XP, R 2.4.1.


Thanks

Bart
        [[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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to