让我们考虑这个假设的数据集:
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
吗?我是否真的缺少明显的东西?
@ user11852:只是为了澄清,我正在考虑将其作为要使用的模型,例如在针对同一主题重复测量的情况下。
—
nico,
@ user11852:我不是要对同一主题进行估算。为了获得人口估计数,我对各种主题做了重复测量。由于我已经有了实验性的答案,所以我不关心已经测试过的主题……我希望能够预测特定群体的新主题对刺激的反应。格雷格的回答确实解决了这个问题。
—
nico
model