Dave said my newdata data frame 'new' must have a column named 'area'.
It did. Nonetheless predict.lm throws an error with type = "terms" and
newdata = new. I see nothing in the predict.lm  documentation that
bars this usage. Is there a bug?

To illustrate an OLS behavior, I had cited Ludbrook '12. Dave noted
the high reprint fee. So, from that paper,

#Ludbrook's data set S1 (except renaming
#his 'x' as 'concn' and his 'y' as 'area')
S1 <- data.frame(
    area = c(2.4,2.6,6.0,6.5,8.9,),
    concn = c(1.1,4,5,8.5,8.5))

#Regular and inverse OLS regressions
reg <- lm(area ~ concn, data = S1)
inv.reg <- lm(concn ~ area, data = S1)

#View the regular fit (blue line)
plot(area ~ concn, data = S1)
abline(reg, col = "blue") #OLS

#Add the inverse fit (red line)
lowHiAreas <- data.frame(area = c(0,8))
lowHiConcs <- predict(inv.reg,
    newdata = lowHiAreas,
    type = "response")
lines(x = lowHiConcs,
   y = unlist(lowHiAreas), col = "red")

According to Ludbrook the intersection of these lines is at point
{mean(concn), mean(area)}. He also shows several Model II
regression lines (e.g., least product regression) that also intersect there.

Dave and Rui both note that the concentrations I wish to predict will
include error, whereas my calibration concentrations are fixed. This
issue was raised also by VitoshKa in 2010
http://stackoverflow.com/questions/4191857/inverse-of-predict-function-in-r
who suggested that a Bayesian approach may be called for.

Rui showed how to convert normalized/centered predicted concentrations
back to real ones.

Rui (and also James in the Stack Overflow thread) talked about using
the x' = (y' - b0)/b1 approach. James did it in a way that he said
preserved variable names.

The Stack Overflow discussion also mentioned the function
chemCal::inverse.predict(), which is based on Massart et al., '97. I
need to read about this.

I guess for now I'll use the x' = (y' - b0)/b1 approach.

As no one has explained why predict.lm fails with type = "terms"
and newdata, and since I'm pretty sure I successfully did this in
years past, I may document this and submit it as a possible bug.

Thanks all,
-John

        [[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.

Reply via email to