混合效应模型的预测:如何处理随机效应?

机器算法验证 混合模式 线性模型 预言
2022-02-11 11:48:41

让我们考虑这个假设的数据集:

set.seed(12345)

num.subjects <- 10

dose <- rep(c(1,10,50,100), num.subjects)
subject <- rep(1:num.subjects, each=4)
group <- rep(1:2, each=num.subjects/2*4)

response <- dose*dose/10 * group + rnorm(length(dose), 50, 30)

df <- data.frame(dose=dose, response=response, 
                 subject=subject, group=group)

我们可以使用lme随机效应模型对响应进行建模:

require(nlme)
model <- lme(response ~ dose + group + dose*group, 
             random = ~1|subject, df)

我想使用predict这个模型的结果来获得,例如,第 1 组的普通受试者对 10 剂量的反应:

pred <- predict(model, newdata=list(dose=10, group=1))

但是,使用此代码,我收到以下错误:

Error in predict.lme(model, newdata = list(dose = 10, group = 1)) : 
cannot evaluate groups for desired levels on 'newdata'

例如,为了摆脱它,我需要做

pred <- predict(model, newdata=list(dose=10, group=1, subject=5))

然而,这对我来说并没有多大意义……这个主题在我的模型中是一个令人讨厌的因素,那么它有什么意义predict呢?如果我输入数据集中不存在的主题编号,则predict返回NA.

predict这是在这种情况下想要的行为吗?我错过了一些非常明显的东西吗?

1个回答

如果您查看帮助,predict.lme您会发现它有一个level参数来确定在哪个级别进行预测。默认值为最高或最内层,这意味着如果您不指定级别,那么它会尝试在主题级别进行预测。如果您level=0在第一次predict调用中指定(不带subject),那么它将给出总体水平的预测,并且不需要主题编号。