2016-08-01 33 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,同樣會發生。