我拟合了一个简单的非线性混合效应模型:
start <- c(b1=5, b2=2)
nform <- ~ exp(b1)*(input^b2)
nfun <- deriv(nform, namevec=c("b1", "b2"),
function.arg=c("input","b1", "b2"))
nlmer_model <- nlmer(y~ nfun(x, b1, b2)~(b1|group)+(b2|group),
data=my_data, start = start)
接下来,我想在一组新数据集上预测 y 已知。一种方法是获得固定和随机效果:
fixed_effects <- fixef(nlmer_model)
random_effects <- ranef(nlmer_model)$group
b1 <- fixed_effects[1] + random_effects$b1
b2 <- fixed_effects[2] + random_effects$b2
coeff <- data.table(grp=row.names(random_effects), b1, b2)
new_data2 <- merge(new_data, coeff, by="grp")
new_data2[, y := exp(b1)*(x^b2)]
目前尚不清楚我们现在是否可以使用 predict() 获得相同的结果。 我都试过了。
pred <- predict(nlmer_model, new_data)
pred <- predict(nlmer_model, new_data, re.form=~(b1|group)+(b2|group))
但是在两种情况下我都收到消息“eval(predvars, data, env) 错误:找不到对象‘b1’”。
那么,在使用 predict() 函数和 NLMER 模型时,是否有可能重现我们使用 ranef() 和 fixef() 得到的相同结果?