R:将 predict() 函数与 NLMER 结合使用

问题描述 投票:0回答:0

我拟合了一个简单的非线性混合效应模型:

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() 得到的相同结果?

r predict mixed-models non-linear-regression
© www.soinside.com 2019 - 2024. All rights reserved.