我有一个mod = lmer(y ~ A + B + (1|line))
y
是连续响应变量,大约2000行A
和B
是固定效果,有2个级别(不存在/不存在)line
是随机效应,大约有100个级别为了预测响应变量,我所要做的就是构造一个New_Data
数据帧(100 x 3),第一列包含所有行,2和3个零
然后我点击adjusted = predict(mod, New_Data)
。工作得很好。
现在由于不同的实验设计,我有一个额外的随机效果,该行嵌套在其中。该模型变为:
mod = lmer(y ~ A + B + (1|batch) + (1|batch:line))
我再次构建了一个New_Data
数据框,现在有4列,第4列在第1级有批处理(4个可能的级别)
但现在在尝试预测时,预测函数告诉我:
levelfun(r,n,allow.new.levels = allow.new.levels)中的错误: 在newdata中检测到新的级别
我做错了什么?
library(lme4)
library(data.table)
lines <- factor(c('line.c', 'line.c', 'line.b', 'line.b', 'line.a', 'line.a',
'line.d', 'line.d', 'line.e', 'line.e'))
Model_Data <- data.table(y = rnorm(10),
A = factor(c('a', 'a', 'b', 'b', 'b', 'a', 'a', 'c', 'c', 'c')),
B = lines,
C = factor(c(rep(1, 4), rep(2, 4), 3, 3)))
My_Model <- Model_Data[, lmer(y ~ A + (1|C) + (1|C:B))]
Prediction_Data <- data.table(B = levels(lines),
A = factor('a', levels=c('a', 'b', 'c')),
C = factor(1, levels=c(1,2,3)))
y.adjusted <- predict(My_Model, Prediction_Data)