首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于嵌套glmer模型的仿真

基于嵌套glmer模型的仿真
EN

Stack Overflow用户
提问于 2015-09-19 13:41:48
回答 1查看 540关注 0票数 2

在处理随机效应时,我遇到了从3级glmer模型生成模拟的问题(我实际上使用的是通过bootMer进行预测的方法,但问题是相同的)。

这样做是可行的:

代码语言:javascript
运行
复制
library(lme4)
fit1 =   glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
                                            data = cbpp, family = binomial)
simulate(fit1, re.form=NULL)

这是失败的:

代码语言:javascript
运行
复制
cbpp$bigherd = rep(1:7, 8)
fit2 =   glmer(cbind(incidence, size - incidence) ~ period + (1 | bigherd / herd),
                             data = cbpp, family = binomial)
simulate(fit2, re.form=NULL)    
Error: No random effects terms specified in formula

非常感谢你的任何想法。

更新

本,非常感谢你在下面的帮助,真的很感激。我想知道我能不能再给你加把劲。

我想要做的是在反应尺度上模拟预测,我不确定我是否可以利用你的工作?或者除了我正在做的事情之外还有别的选择。谢谢!

这如预期的那样工作,但不以随机效应为条件:

代码语言:javascript
运行
复制
FUN = function(.){
    predict(., type="response")
}
bootMer(fit2, FUN, nsim=3)$t

这是行不通的,就像上面提到的问题一样:

代码语言:javascript
运行
复制
bootMer(fit2, FUN, nsim=3, use.u=TRUE)$t

据我所见,我无法将re.form传递给bootMer

下面的替代方案是否在不将use.u传递给bootMer的情况下以随机效应为条件进行模拟预测?

代码语言:javascript
运行
复制
FUN = function(.){
    predict(., type="response", re.form=~(1|herd:bigherd) + (1|bigherd))
}
bootMer(fit2, FUN, nsim=10)$t
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-19 16:33:49

我还不知道发生了什么,但这里有两个解决办法:

代码语言:javascript
运行
复制
simulate(fit2, re.form=lme4:::reOnly(formula(fit2)))
simulate(fit2, re.form=~(1|herd:bigherd) + (1|bigherd))

“斜杠”一词的扩展一定出了什么问题,因为这是行不通的:

代码语言:javascript
运行
复制
simulate(fit2, re.form=~(1|bigherd/herd))

我把这个贴在lme4问题上了

在当前的CRAN版本(1.1-9)中,这些解决方案不适用于bootMer (它只使用use.u参数,而不是re.form)。

它是固定的在开发版本上的Github (1.1-10):devtools::install_github("lme4/lme4")将安装它,如果你有编译工具安装。

同时,您可以继续实现您自己的参数引导带(对于参数引导,bootMer实际上是一个非常瘦的simulate()/[refit()orupdate()]/FUN`).包装器。很多复杂的事情都与并行计算有关(如果您想要在您自己的PB实现中进行并行计算,则必须将其中的一些添加回并行计算中)。

这是一个手摇参数引导程序的轮廓:

代码语言:javascript
运行
复制
nboot <- 10
nresp <- length(FUN(orig_fit))
res <- matrix(NA,nboot,nresp)
for (i in 1:nboot) {
  res[i,] <- FUN(update(orig_fit,data=simulate(orig_fit,...)))
             ## or use refit() for LMMs
             ## ... are options to simulate()
}
t(apply(res,2,quantile,c(0.025,0.975)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32668893

复制
相关文章

相似问题

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