首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有嵌套随机效应的lmer模型的预测

具有嵌套随机效应的lmer模型的预测
EN

Stack Overflow用户
提问于 2020-02-03 11:56:20
回答 1查看 1.7K关注 0票数 3

我目前正试图帮助一位同事,但我根本找不到解决办法。所以我希望其他人能帮助我们。

我有一个数据集,包含不同研究设计的权重数据,用于不同研究中的不同物种(一项研究包括多个设计和多个物种)。我想研究重量和研究设计之间的关系,用研究和物种作为嵌套随机效应。

模型看起来像这样,运行良好:

代码语言:javascript
运行
复制
m <- lmer(weight ~ design +(1|study/species), data=dataset)

我试图对不同的物种进行预测,但通过一项一般性的研究:我做了一个新的data.table new.dt,其中包含了原始数据集的独特设计-物种组合,并为报告添加了一列。

代码语言:javascript
运行
复制
new.dt <- unique(dataset[,.(design, species))
new.dt$study <- "xyz"

然后,我使用了预测函数,并允许新的水平。

代码语言:javascript
运行
复制
new.dt$p <- predict(m, newdata=new.dt, re.form= NULL, allow.new.levels=TRUE) 

我没有发现错误,但我对设计中的每一个物种都有相同的预测。

是否有办法使嵌套随机效应的一部分保持原有的水平,使另一部分成为新的水平?

提前谢谢你!

更新-工作示例:此问题不依赖于数据集。

代码语言:javascript
运行
复制
library(data.table)
library(lme4)

dt <- data.table(expand.grid(design=c("a", "b"), species=c("x", "y", "z"), report=c("1", "2", "3"), count=seq(1, 10, 1)))
dt$weight <- 0

dt[species=="x"]$weight <- rnorm(60, 70, 10)
dt[species=="y"]$weight <- rnorm(60, 80, 15)
dt[species=="z"]$weight <- rnorm(60, 90, 20)

dt[design=="a"]$weight <- dt[design=="a"]$weight- 0.1*dt[design=="a"]$weight

dt[report=="1"]$weight <- dt[report=="1"]$weight+0.15*dt[report=="1"]$weight
dt[report=="2"]$weight <- dt[report=="2"]$weight-0.15*dt[report=="1"]$weight

m <-lmer(weight~design+(1|report/species), data=dt)

dt.pred <- unique(dt[,c(1:2)])
dt.pred$report<- "xyz"
dt.pred$pred<-predict(m, newdata=dt.pred, re.form= NULL, allow.new.levels=TRUE) 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 07:23:05

“相同”来自这样一个事实:您正在设置re.form = NULL或等效re.form = ~ 0

线性混合效应模型建立了Y|beta,b ~ intercept + X %*% beta + Z %*% b + e模型,通过设置re.form = NULL,在预测期间设置了Z %*% b = 0的定义。由于这是模型的随机部分,(即(1|report/species) ),您正在消除speciesreport的随机效应。

在混合模型中,您可以将这种预测称为“无条件预测”(或边缘预测),而在实践中则更多地称之为伪无条件预测。它通常用于随机效应包含individual的模型中。在这种情况下,当你观察到一个新的人,你有一个未知的随机效应,但根据你的研究,你可能只感兴趣的“系统”或“固定”效应(即,个人步行上班之前,被汽车击中?)他骑自行车了吗?)在这里,只看无条件/边际效应是有意义的。

另一种说法是,通过设置re.form = NULL,您将表示Z %*% b = 0。由于物种是权重为Zb的一部分,您无法看到特定物种对您的预测的影响。

只有当你知道物种,并能在你的预测中使用随机效应,你才能得到不同的预测,不同的物种具有相同的固定效果。

Ps. -- data.table包有一个与expand.grid相同的函数,称为CJ,这对于更大的集合来说会更快,更节省内存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60038784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档