我正在用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
即使它发散也总会让我回头。
答案 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