首页 文章

如果有警告,请不要将p值/系数保存在glmer中

提问于
浏览
2

我正在通过一系列分析运行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 回答

  • 2

    对于它的 Value ,这些是警告,而不是错误(老派的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|)")]    
    }
    

    确保在开始之前使用 NA 值填充 tests 结构:然后您可以轻松查看哪些测试失败,并将结果仅删除成功测试(例如使用 na.omit(as.data.frame(tests)) ) .

    可能值得一读 ?convergence :我可能会将不良收敛的容忍度设置得稍高一些(例如0.02) .

相关问题