0

I am trying to cross-validate a panel data analysis, but I am having trouble with the prediction function. The code below is a section of the CV function where the problem occurs. When I try to run this part of the function I get the error message tagged on to the end of the code description.

compare <- data.frame()
train.model <- list()

  for (f in 1:numoffolds)
{
train.model[[f]] <- plm(logit(II1)~.,data=select(filter(train, cv != f),-Incomegroup, -cv), 
                       model="within", effect="twoways", index=c("Year", "Country") )


 II1.p <- predict(train.model[[f]], newdata=select(filter(train, cv == f),-Country, -Year, -cv, -Incomegroup), type="response")
II1 <- filter(train, cv == f)$II1
compare <- rbind(compare, data.frame(II1.p = II1.p, II1 = II1))


}


Error in crossprod(beta, t(X)) : non-conformable arguments
Called from: crossprod(beta, t(X))

I've had a look at the prediction function and the X and beta terms are of conflicting dimensions. Does anyone have a suggesting to what I can do to overcome this problem?

function (object, newdata = NULL, ...) 
{
tt <- terms(object)
if (is.null(newdata)) {
result <- fitted(object, ...)
}
else {
Terms <- delete.response(tt)
m <- model.frame(Terms, newdata)
X <- model.matrix(Terms, m)
beta <- coef(object)
result <- as.numeric(crossprod(beta, t(X)))
}
result

I've been thinking about resorting to other methods such as tree based regression, but I wanted to use plm to make a specific point. Any helping comments and/or codes would be greatly appreciated.

Herzriesig
  • 131
  • 6
  • Are you using new data for the prediction or to you want to get the predicted values from the model on the original data? – Helix123 Aug 10 '16 at 12:18
  • Hi @Helix123, I want to compare II1(predicted) with II1 from the original data. The goal is to calculate the RMSE for both training set and test set. – Herzriesig Aug 12 '16 at 19:20

0 Answers0