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

Charles Roosen croosen at mango-solutions.com
Tue Aug 17 14:38:44 CEST 2010


Hi Stephan,

You'll get the expected result if you pass a data.frame to the lm() function when fitting the model.

> yy <- runif(4)
> XX <- matrix(runif(8),ncol=2)
> df <- data.frame(y=yy, XX)
> df
           y        X1        X2
1 0.52889284 0.8055476 0.6670006
2 0.09989951 0.2498907 0.8867955
3 0.17523284 0.8959978 0.2316362
4 0.82489564 0.4446880 0.1369342

> model <- lm(y~., data=df)
> fitted(model)
        1         2         3         4 
0.2442617 0.2634438 0.4734091 0.6478062

> XX.pred <- data.frame(matrix(runif(6), ncol=2))
> names(XX.pred) <- c("X1", "X2")
> predict(model, XX.pred)
        1         2         3 
0.1365312 0.2394404 0.3789291 

Best regards,
Charlie Roosen
Mango Solutions


-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Stephan Kolassa
Sent: 17 August 2010 14:25
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?

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.
LEGAL NOTICE
This message is intended for the use o...{{dropped:9}}



More information about the R-help mailing list