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


13

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

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吗?我是否真的缺少明显的东西?


modelXβ+žγÿñXβ+žγσ2一世ž
usεr11852

@ user11852:只是为了澄清,我正在考虑将其作为要使用的模型,例如在针对同一主题重复测量的情况下。
nico,

ž

2
@ user11852:我不是要对同一主题进行估算。为了获得人口估计数,我对各种主题做了重复测量。由于我已经有了实验性的答案,所以我不关心已经测试过的主题……我希望能够预测特定群体的新主题对刺激的反应。格雷格的回答确实解决了这个问题。
nico

Answers:


17

如果您查看帮助,predict.lme将会看到它有一个level参数,该参数确定进行预测的级别。默认值为最高或最里面,这意味着如果您未指定级别,则它将尝试在主题级别进行预测。如果您将其指定level=0为第一次predict致电的一部分(无subject),则它将在总体水平上给出预测,而无需主题编号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.