gpt4 book ai didi

r - 如果有警告,不要从 glmer 中保存 p 值/系数

转载 作者:行者123 更新时间:2023-12-05 04:10:25 24 4
gpt4 key购买 nike

我正在通过一系列分析运行 for 循环。对于其中一些测试,glmer 会返回一条警告消息(复制在下方)。我不想保存这些站点的 p 值或参数估计值。我想这将是一个带有伪代码的 if 语句,类似于 if no warning, then print beta/p-value to tests,但我不知道如何实现它。如有任何建议,我们将不胜感激!

Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with 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]
}

最佳答案

就其值(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)。

关于r - 如果有警告,不要从 glmer 中保存 p 值/系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44487274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com