通过R中的glmer捕捉收敛与否

时间:2015-03-24 02:18:27

标签: r glm convergence

我正在用glmer函数进行模拟。对于我提取的每个模拟 估计,......进入一个数据库,但我也希望有一个变量 指示模拟数据是否正确收敛。 (我得到警告,例如,奇异的收敛,错误的收敛,......但无论如何都会给出估计值。)

我试试

assign("last.warning", NULL, envir = baseenv()) # clear the previous warning
mod1=glmer(y~x+(1+x|study), family="binomial", data=test1)
warningss1=ifelse(length(warnings())>0, "yes", "no"); warningss1

即使它发散也总会让我回头。

1 个答案:

答案 0 :(得分:4)

无论如何,我不会反对警告的一般机制,而不是我们已经做过的事情。我无法找到将警告日志归零或重置的方法。它被相当有效地隐藏起来了。相反看一下这个对象,比如说它的名字是gm1,你就会失败收敛。 (我只是缩小了样本大小,直到发生收敛失败。):

    gm1@optinfo$conv$lme4$messages
#[1] "Model failed to converge with max|grad| = 0.10941 (tol = 0.001, component 5)"
#[2] " Hessian is numerically singular: parameters are not uniquely determined"   

any( grepl("failed to converge", gm1@optinfo$conv$lme4$messages) )
#[1] TRUE

#with a convergent run:
> any( grepl("failed to converge", gm1@optinfo$conv$lme4$messages) )
#[1] FALSE 
>   gm1@optinfo$conv$lme4$messages
#NULL