如何解决bootMer CI 的问题:上限和下限相同
我最难为我的 glmer 泊松模型生成置信区间。在遵循了几个非常有用的教程(例如 https://drewtyre.rbind.io/classes/nres803/week_12/lab_12/)以及 stackoverflow 帖子之后,我不断得到非常奇怪的结果,即 CI 的上限和下限相同。
这是一个可重复的示例,其中包含一个名为“生产”的响应变量、一个名为“Treatment_Num”的固定效应和一个名为“基因型”的随机效应:
df1 <- data.frame(production=c(15,12,10,9,6,8,5,3,2,1,0),Treatment_Num=c(1,4,4),Genotype=c(1,2))
#运行 glmer 模型
df1_glmer <- glmer(production ~ Treatment_Num +(1|Genotype),data = df1,family = poisson(link = "log"))
#制作一个空数据集进行预测,其中包含解释变量但没有响应
require(magrittr)
df_empty <- df1 %>%
tidyr::expand(Treatment_Num,Genotype)
#创建包含预测的新列
df_empty$PopPred <- predict(df1_glmer,newdata = df_empty,type="response",re.form = ~0)
#bootMer 函数
myFunc_df1_glmer <- function(mm) {
predict(df1_glmer,re.form=~0)
}
#run bootMer
require(lme4)
merBoot_df1_glmer <- bootMer(df1_glmer,myFunc_df1_glmer,nsim = 10)
#从中获取置信区间
predCL <- t(apply(merBoot_df1_glmer$t,MARGIN = 2,FUN = quantile,probs = c(0.025,0.975)))
#将置信区间的上下限输入df_empty
df_empty$lci <- predCL[,1]
df_empty$uci <- predCL[,2]
#查看 df_empty 时,问题就很明显了:lci 和 uci 是相同的!
df_empty
您能给我的任何见解将不胜感激!
解决方法
忽略我的意见!
问题在于您创建的传递给 <MyComponent/>
的函数。您写道:
bootMer()
参数 myFunc_df1_glmer <- function(mm) {
predict(df1_glmer,newdata = df_empty,type="response",re.form=~0)
}
应该是从引导数据派生的拟合模型对象。
但是,你不把这个对象传递给mm
,而是原始模型
目的。如果更改的功能:
predict()
然后它工作:
myFunc_df1_glmer <- function(mm) {
predict(mm,re.form=~0)
#^^ pass in the object created by bootMer
}
顺便说一句 - 您的实际数据有多少基因型?如果少于5-7你可能
做的更好使用直线上升> df_empty
# A tibble: 8 x 5
Treatment_Num Genotype PopPred lci uci
<dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 12.9 9.63 15.7
2 1 2 12.9 9.63 15.7
3 2 1 5.09 3.87 5.89
4 2 2 5.09 3.87 5.89
5 3 1 2.01 1.20 2.46
6 3 2 2.01 1.20 2.46
7 4 1 0.796 0.361 1.14
8 4 2 0.796 0.361 1.14
基因型的一个因素使用金额到零
反差。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。