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.

Reply via email to