On 01/15/2013 09:17 AM, li li wrote:
Hi all, For the simple linear regression, I want to find the input "x" value so that the lower confidnece limit is a specific number, say 0.2. In other words, I want to find the value of x so that the lower confidence bound crosses the horizontal line 0.2. Is there a simple way (an R function) that can do this?
I don't know of an extant R function, but it's simple enough. You just need to solve a quadratic equation. Here's my effort at writing an R function to effect this: xForCb <- function(model,level,cb) { s2 <- summary(model)$sigma^2 Cov <- summary(model)$cov.unscaled*s2 ccc <- coef(model) df <- model$df.residual q <- qt(level,df) A <- ccc[2]^2 - q^2*Cov[2,2] B <- 2*((cb-ccc[1])*(-ccc[2]) - q^2*Cov[1,2]) C <- (cb - ccc[1])^2 - q^2 * Cov[1,1] r1 <- (-B + sqrt(B^2 - 4*A*C))/(2*A) r2 <- (-B - sqrt(B^2 - 4*A*C))/(2*A) y1 <- ccc[1] + ccc[2]*r1 y2 <- ccc[1] + ccc[2]*r2 res <- c(r1,r2)[order(c(y2,y1))] names(res) <- c("x.for.lb","x.for.ub") res } E.g. of use: set.seed(42) x <- seq(0,10,length=101) y <- 1.5 + 2.5*x + rnorm(101,0,5) fit <- lm(y ~ x) pfit <- predict(fit,interval="confidence",level=0.90) plot(x,y) lines(x,pfit[,"fit"]) lines(x,pfit[,"upr"],col="red") lines(x,pfit[,"lwr"],col="green") xx <- xForCb(fit,0.95,5) abline(v=xx,col="blue") abline(h=5,col="blue") cheers, Rolf ______________________________________________ R-help@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.