Francisco Mora Ardila
2012-May-16 00:08 UTC
[R] confidence intervals for nls or nls2 model
Hi all I have fitted a model usinf nls function to these data:> x[1] 1 0 0 4 3 5 12 10 12 100 100 100> y[1] 1.281055090 1.563609934 0.001570796 2.291579783 0.841891853 [6] 6.553951324 14.243274230 14.519899320 15.066473610 21.728809880 [11] 18.553054450 23.722637370 The model fitted is: modellogis<-nls(y~SSlogis(x,a,b,c)) It runs OK. Then I calculate confidence intervals for the actual data using: dataci<-predict(as.lm(modellogis), interval = "confidence") BUt I don?t get smooth curves when plotting it, so I want to get other "confidence vectors" based on a new x vector by defining a new data to do predictions: x0 <- seq(0,15,1) dataci<-predict(as.lm(modellogis), newdata=data.frame(x=x0), interval = "confidence") BUt it does not work: I get the same initial confidence interval Any ideas on how to get tconfidence and prediction intervals using new X data on a previous model? Thanks Francisco ---------------------- Francisco Mora Ardila Estudiante de Doctorado Centro de Investigaciones en Ecosistemas Universidad Nacional Aut?noma de M?xico
On May 15, 2012, at 8:08 PM, Francisco Mora Ardila wrote:> Hi all > > I have fitted a model usinf nls function to these data: > >> x > [1] 1 0 0 4 3 5 12 10 12 100 100 100 > >> y > [1] 1.281055090 1.563609934 0.001570796 2.291579783 0.841891853 > [6] 6.553951324 14.243274230 14.519899320 15.066473610 21.728809880 > [11] 18.553054450 23.722637370 > > The model fitted is: > > modellogis<-nls(y~SSlogis(x,a,b,c)) > > It runs OK. Then I calculate confidence intervals for the actual > data using: > > dataci<-predict(as.lm(modellogis), interval = "confidence") > > BUt I don?t get smooth curves when plotting it, so I want to get > other "confidence > vectors" based on a new x vector by defining a new data to do > predictions: > > x0 <- seq(0,15,1) > dataci<-predict(as.lm(modellogis), newdata=data.frame(x=x0), > interval = "confidence") > > BUt it does not work:I am really getting tired of seeing the phrase "doesn't work". And on my machine it throws an error saying there is no as.lm function> This seemes to give "smooth results: dataci<-predict(as.lm(modellogis), newdata=data.frame(x=x0), interval = "confidence") And notice that this message is in ?predict.nls interval "At present this argument is ignored.> I get the same initial confidence interval > > Any ideas on how to get tconfidence and prediction intervals using > new X data on a > previous model? > > Thanks > > Francisco > > > > ---------------------- > Francisco Mora Ardila > Estudiante de Doctorado > Centro de Investigaciones en Ecosistemas > Universidad Nacional Aut?noma de M?xico > > ______________________________________________ > R-help at r-project.org 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.David Winsemius, MD West Hartford, CT
On Tue, May 15, 2012 at 8:08 PM, Francisco Mora Ardila <fmora at oikos.unam.mx> wrote:> Hi all > > I have fitted a model usinf nls function to these data: > >> x > ?[1] ? 1 ? 0 ? 0 ? 4 ? 3 ? 5 ?12 ?10 ?12 100 100 100 > >> y > ?[1] ?1.281055090 ?1.563609934 ?0.001570796 ?2.291579783 ?0.841891853 > ?[6] ?6.553951324 14.243274230 14.519899320 15.066473610 21.728809880 > [11] 18.553054450?23.722637370 > > The model fitted is: > > modellogis<-nls(y~SSlogis(x,a,b,c)) > > It runs OK. Then I calculate confidence intervals for the actual data using: > > dataci<-predict(as.lm(modellogis), interval = "confidence") > > BUt I don?t get smooth curves when plotting it, so I want to get other "confidence > vectors" based on a new x vector by defining a new data to do predictions: > > x0 <- ?seq(0,15,1) > dataci<-predict(as.lm(modellogis), newdata=data.frame(x=x0), interval = "confidence") > > BUt it does not work: I get the same initial confidence interval > > Any ideas on how to get tconfidence and prediction intervals using new X data on a > previous model? >as.lm is a linear model between the response variable and the gradient of the nonlinear model and as we see below x is not part of that linear model so x can't be in newdata when predicting from the tangent model. We can only make predictions at the original x points. For other x's we could use Interpolation. See ?approx (?spline can also work in smooth cases but in the example provided the function has a kink and that won't work well with splines.)> as.lm(modellogis)$modely a b c (offset) 1 1.281055090 0.06601796 -4.411829e-01 1.168928e+00 1.397153 2 1.563609934 0.04798815 -3.268846e-01 9.766080e-01 1.015584 3 0.001570796 0.04798815 -3.268846e-01 9.766080e-01 1.015584 4 2.291579783 0.16311227 -9.767241e-01 1.597189e+00 3.451981 5 0.841891853 0.12203013 -7.665928e-01 1.512752e+00 2.582551 6 6.553951324 0.21464369 -1.206154e+00 1.564573e+00 4.542552 7 14.243274230 0.74450055 -1.361047e+00 -1.455630e+00 15.756031 8 14.519899320 0.59707858 -1.721353e+00 -6.770205e-01 12.636107 9 15.066473610 0.74450055 -1.361047e+00 -1.455630e+00 15.756031 10 21.728809880 1.00000000 -2.943955e-13 -9.073765e-12 21.163223 11 18.553054450 1.00000000 -2.943955e-13 -9.073765e-12 21.163223 12 23.722637370 1.00000000 -2.943955e-13 -9.073765e-12 21.163223 -- Statistics & Software Consulting GKX Group, GKX Associates Inc. tel: 1-877-GKX-GROUP email: ggrothendieck at gmail.com