Hello,
Instead of reversing the regression, that, like you say, may have
problems, it's very easy to wrap the formula
x' <- (y' - beta0)/beta1
in a function and use the direct regression to get new 'x' values from
new 'y' ones.
This function assumes a first order ols model.
invpredict <- function(model, newdata){
if(class(newdata) %in% c("data.frame", "list"))
newdata <- unlist(newdata)
cc <- coef(model)
x <- (newdata - cc[1])/cc[2]
x
}
# Using your last data example
inv2 <- invpredict(model, c(1600, 34000))
cbind(new=c(1600, 34000), inv.pred, inv2)
new inv.pred inv2
1 1600 0.5091916 -0.5980076
2 34000 244.4645607 245.7692308
I wonder what would be the CI's for the predicted 'concn'.
Rui Barradas
Em 30-08-2012 00:08, John Thaden escreveu:
Draper & Smith sections (3.2, 9.6) address prediction interval issues, but
I'm also concerned with the linear fit itself. The Model II regression
literature makes it abundantly clear that OLS regression of x on y
frequently yields a different line than of y on x. The example below is not
so extreme, but those given e.g. by Ludbrook, J. (2012) certainly are. Rui
notes the logical problem of imputing an unknown x using a calibration
curve where the x values are without error. Regression x on y doesn't help
that. But on a practical level, I definitely recall (years ago) using
predict.lm and newdata to predict x terms. I wish I remembered how.
require(stats)
#Make an illustrative data set
set.seed(seed = 1111)
dta <- data.frame(
area = c(
rnorm(6, mean = 4875, sd = 400),
rnorm(6, mean = 8172, sd = 800),
rnorm(6, mean = 18065, sd = 1200),
rnorm(6, mean = 34555, sd = 2000)),
concn = rep(c(25, 50, 125, 250), each = 6))
model <- lm(area ~ concn, data = dta)
inv.model <- lm(concn ~ area, data = dta)
plot(area ~ concn, data = dta)
abline(model)
inv.new = cbind.data.frame(area = c(1600, 34000))
inv.pred <- predict(inv.model, newdata = inv.new)
lines(x = inv.pred, y = unlist(inv.new), col = "red")
_____________________________
Ludbrook, J. (2012). "A primer for biomedical scientists on how to execute
Model II linear regression analysis." Clinical and Experimental
Pharmacology and Physiology 39(4): 329-335.
[[alternative HTML version deleted]]
______________________________________________
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.
______________________________________________
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.