2016-08-01 44 views
0

我运行下面的代码:Lmer4预测函数返回拟合值,不newdata值

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

然而,length(predicted)不等于nrow(test),但不是等于nrow(train)

即使我使用data=trainlmer,我仍然有同样的问题。

我在做什么错?

更新:看起来像去这条路线固定它。

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

+0

尝试'?predictInterval' – AdamO

+0

同样的问题。列车和测试数据框中的列名完全相同。 – BobbyJohnsonOG

回答

2

因为你是模型拟合过程中使用train$。尝试:

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

不要使用以下内容:

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

这个问题不只限于lmer。对于lmglm,同样会发生。