处理混合线性嵌套模型时如何使用预测

时间:2018-01-17 02:33:59

标签: r lme4

我有一个mod = lmer(y ~ A + B + (1|line))

形式的模型
  • y是连续响应变量,大约2000行
  • AB是固定效果,有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)

0 个答案:

没有答案