On Aug 30, 2012, at 2:29 PM, John Thaden wrote: > 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? >
After correcting the error in your definition of the 'area' vector I get no error from predict.lm(). David. > 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 David Winsemius, MD Alameda, CA, USA [[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.