gpt4 book ai didi

r - 在新级别上使用lme4进行预测

转载 作者:行者123 更新时间:2023-12-04 10:03:48 25 4
gpt4 key购买 nike

我正在尝试拟合混合效果模型,然后使用该模型在可能具有不同级别的新数据集上生成估计。我期望新数据集上的估计将使用估计参数的平均值,但事实并非如此。这是一个最小的工作示例:

library(lme4)
d = data.frame(x = rep(1:10, times = 3),
y = NA,
grp = rep(1:3, each = 10))
d$y[d$grp == 1] = 1:10 + rnorm(10)
d$y[d$grp == 2] = 1:10 * 1.5 + rnorm(10)
d$y[d$grp == 3] = 1:10 * 0.5 + rnorm(10)
fit = lmer(y ~ (1+x)|grp, data = d)
newdata = data.frame(x = 1:10, grp = 4)
predict(fit, newdata = newdata, allow.new.levels = TRUE)

在此示例中,我实质上是使用不同的回归方程式(斜率分别为1、1.5和0.5)定义三个组。但是,当我尝试以未知水平对新数据集进行预测时,我得到的估计值是恒定的。我希望斜率和截距的期望值可用于生成此新数据的预测。我期待错了吗?或者,我的代码在做什么错?

最佳答案

如果不包括固定斜率,我通常不会包括随机斜率。似乎predict.merMod与我同意,因为它似乎仅使用固定效果来预测新的水平。该文档说:“预测将对以前未观察到的数据使用无条件(人口水平)的值”,但是这些值似乎无法用模型规范来估算。

因此,我建议使用以下模型:

fit = lmer(y ~ x + (x|grp), data = d)
newdata = data.frame(x = 1:10, grp = 4)
predict(fit, newdata = newdata, allow.new.levels = TRUE)
# 1 2 3 4 5 6 7 8 9 10
#1.210219 2.200685 3.191150 4.181616 5.172082 6.162547 7.153013 8.143479 9.133945 10.124410

这与仅使用模型的固定效果部分相同:
t(cbind(1, newdata$x) %*% fixef(fit))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 1.210219 2.200685 3.19115 4.181616 5.172082 6.162547 7.153013 8.143479 9.133945 10.12441

关于r - 在新级别上使用lme4进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com