我正在通过一系列分析运行for循环。对于其中一些测试,glmer
会返回一条警告消息(复制如下)。我想不保存这些网站的p值或参数估计值。我想这会是一个带有类似if no warning, then print beta/p-value to tests
的伪代码的if语句,但我无法弄清楚如何实现它。任何建议将不胜感激!
警告信息:
在checkConv(attr(opt,“derivs”)中,选择$ par,ctrl = control $ checkConv,:
模型无法与max | grad |收敛= 0.00778865(tol = 0.001,组分1)
for (i in 1:10000) {
test <- glmer(cbind(mcounts[i,], counts[i,] - mcounts[i,]) ~ pred + (1 |indiv), family = binomial)
summary(test)$coefficients[2,4] -> tests[i,2]
summary(test)$coefficients[2,1] -> tests[i,1]
}
答案 0 :(得分:2)
对于它的价值,这些是警告,而不是错误(老派R的人往往对这种区别挑剔:我相应地编辑了你的问题,你可以如果您愿意,请回滚更改)。您可以按照@ RichardTelford的建议(在上面的评论中),但是如果不是将所有警告升级为错误,您将获得更高的精度,您只升级渐变收敛警告(您还可以选择调整容差)这次检查)。
为了可读性和健壮性,我稍微修改了你的代码(例如,通过名称而不是位置来引用你想要的系数表的组件)。
gcontrol <- glmerControl(check.conv.grad = .makeCC("error", tol = 2e-3))
for (i in 1:10000) {
test <- try(glmer(cbind(mcounts[i,], counts[i,] - mcounts[i,]) ~
pred + (1 |indiv), family = binomial,
control=gcontrol
))
if (inherits(test,"try-error")) next ## if error skip to next iteration
cc <- coef(summary(test))
tests[i,] <- cc["pred",c("Estimate","Pr(>|z|)")]
}
确保在开始之前用tests
值填充NA
结构:然后您可以轻松查看哪些测试失败,并将结果仅删除成功测试(例如{{1} }})。
可能值得一读na.omit(as.data.frame(tests))
:我可能会将不良收敛的容忍度设置得稍高一些(例如0.02)。