我正在通过一系列分析运行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,component 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]
}
1 回答
对于它的 Value ,这些是警告,而不是错误(老派的R人员对这种区别往往很挑剔:我相应地编辑了你的问题,如果你愿意,你可以回滚这些变化) . 您可以按照@ RichardTelford的建议(在上面的评论中),但是如果不是将所有警告升级为错误,则可以获得更高的精度,只升级渐变收敛警告(您还可以选择调整此检查的容差) .
为了可读性和健壮性,我稍微修改了你的代码(例如,通过名称而不是位置来引用你想要的系数表的组件) .
确保在开始之前使用
NA
值填充tests
结构:然后您可以轻松查看哪些测试失败,并将结果仅删除成功测试(例如使用na.omit(as.data.frame(tests))
) .可能值得一读
?convergence
:我可能会将不良收敛的容忍度设置得稍高一些(例如0.02) .