1

I am running the following code:

results <- lmer(train$y ~ factor(train$x1) + (1|factor(train$x2)))
predicted <- predict(results, newdata=test)

However, length(predicted) is not equal to nrow(test), but is instead equal to nrow(train).

Even if I use data=train for lmer, I still have the same issue.

What am I doing wrong?

UPDATE: Looks like going this route fixed it.

predicted <- predict(results, newdata=data.frame(y=test$y,x1=test$x1,x2=factor(test$x2)),allow.new.levels=TRUE)

BobbyJohnsonOG
  • 141
  • 1
  • 10

1 Answers1

2

Because you are using train$ during model fitting. Try:

results <- lmer(y ~ factor(x1) + (1|factor(x2)), data = train)
predicted <- predict(results, newdata=test)

Don't use any of the following:

results <- lmer(train$y ~ factor(train$x1) + (1|factor(train$x2)))
results <- lmer(train$y ~ factor(train$x1) + (1|factor(train$x2)), data = train)

This issue is not exclusive to lmer. For lm, glm, the same would happen.

Zheyuan Li
  • 71,365
  • 17
  • 180
  • 248