[R] Predicting with a principal component regression model: "non-conformable arguments" error

From: Alison Callahan <alison.callahan_at_gmail.com>
Date: Mon, 18 Apr 2011 18:18:39 -0400


Hello all,

I have generated a principal components regression model using the pcr() function from the PLS package (R version 2.12.0). I am getting a "non-conformable arguments" error when I try to use the predict() function on new data, but only when I try to read in the new data from a separate file.

More specifically, when my data looks like this

#########training data #1#################

var1          var2           var3             response            train
1                2              type1            33                     TRUE
2                23            type2            44                     TRUE

.....

   .......

18              11            type1            45                      FALSE


and I use the predict() function from the PLS package as in the example from http://rss.acs.unt.edu/Rdoc/library/pls/html/predict.mvr.html, e.g.

###################################

mydata <- read.csv("mydata.csv", header=TRUE)

mydata <- data.frame(mydata)

pcrmodel <- pcr(response ~ var1+var2+var3, data = mydata[mydata$train,])

predict(pcrmodel, type = "response", newdata = mydata[!mydata$train,])

###################################

the code works, and the model predicts new values for the "response" variable rows where train=FALSE.

However, as soon as I put the rows where train = FALSE into a separate file and remove the "train" column so that my training data looks like this:

#########training data #2 ################
var1          var2           var3             response
1                2              type1            33
2                23            type2            44

.....

and my new test data, saved in a separate file (say "newdata.csv") looks like this

########test data in separate file, newdata.csv ###############

var1          var2           var3             response
3                5              type1            23
4                7              type2            30

.....
18 11 type1 45

if I train a PCR model using the training data #2 and try to predict with the resulting model and the data from "newdata.csv", e.g.,

##################################

trainingdata <- read.csv("mydata_without_train_column.csv", header=TRUE)

trainingdata <- data.frame(trainingdata)

testingdata <- read.csv("newdata.csv", header=TRUE)

testingdata <- data.frame(testingdata)

pcrmodel2 <- pcr(response ~ var1+var2+var3, data = trainingdata)

predict(pcrmodel, type = "response", newdata = testingdata)

##############################

I get the following error:

"Error in newX %*% B : non-conformable arguments"

I don't understand why I get this error only when I put the non-training data into a separate file from the training data and load it as a separate object. Any help is appreciated,

Alison

        [[alternative HTML version deleted]]



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. Received on Mon 18 Apr 2011 - 22:20:56 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 26 Apr 2011 - 18:40:33 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive