[R] predict.lm, matrix in formula and newdata

William Dunlap wdunlap at tibco.com
Tue Aug 17 18:22:48 CEST 2010


> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Stephan Kolassa
> Sent: Tuesday, August 17, 2010 5:25 AM
> To: R-help at r-project.org
> Subject: [R] predict.lm, matrix in formula and newdata
> 
> Dear all,
> 
> I am stumped at what should be a painfully easy task: 
> predicting from an lm object. A toy example would be this:
> 
> XX <- matrix(runif(8),ncol=2)
> yy <- runif(4)
> model <- lm(yy~XX)
> XX.pred <- data.frame(matrix(runif(6),ncol=2))
> colnames(XX.pred) <- c("XX1","XX2")
> predict(model,newdata=XX.pred)
> 
> I would have expected the last line to give me the 
> predictions from the model based on the new data given in 
> XX.pred... but all I get are in-sample fits along with a 
> warning "'newdata' had 3 rows but variable(s) found have 4 
> rows". Why would predict.lm worry about the number of rows in 
> the model matrix?

Note that the formula in the model is y~XX so predict()
is going to look for a variable called 'XX', not 'XX1' and 'XX2'.
XX.pred doesn't have a variable called XX so predict() uses
the one in the global environment.  Put an XX of the appropriate
type in your newdata argument and it will work.  E.g.,
  > XX.predMatrix <- data.frame(XX=I(matrix(runif(6),ncol=2)))
  > predict(model,newdata=XX.predMatrix)
          1         2         3 
  0.8864115 0.3825788 0.4744272
  > # no warnings 

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com 

> Unfortunately, ?predict.lm does not seem to be helpful, and 
> neither RSiteSearch nor rseek.org have been useful. I'm sure 
> that I am making an elementary error somewhere (am I 
> misunderstanding the lm(yy~XX) part?) and would appreciate a 
> gentle nudge in the right direction.
> 
> Thank you,
> Stephan
> 
> -- 
> GMX DSL SOMMER-SPECIAL: Surf & Phone Flat 16.000 für nur 
> 19,99 ¿/mtl.!*
> 
> ______________________________________________
> R-help at 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.
> 



More information about the R-help mailing list