如何从运行 1000 个混合效果模型的循环中提取和保存错误

How do I extract and save errors from a loop that runs 1000 mixed-effect models

我在一个循环中 运行 1000 个模型,但有些模型没有收敛。有谁知道保存这些错误的代码,所以我可以调查一下? 基本上我有一个基于数据帧运行 1000 次的模型形式,然后我保存模型系数。虽然我得到了所有 1000 个模型系数,但最后我确实得到了一些没有收敛的错误。

代码:

 for(i in 1:n_rand){
   print(i)
   modform <- formula(paste("RESPONSE ~",
        colnames(dataframe)[(11+i)],"+(1|X)+(1|Y)"))
   aaa <- lmer(modform, data=dataframe)
   nullcoef_tab$COEFF[i] <- fixef(aaa)[2]
}

我不确定我手边有没有合适的收敛问题示例,但您应该查看拟合模型的 @optinfo$conv 组件:

library(lme4)
data(Orthodont, package = "nlme")
fm1 <- lmer(distance ~ age + (age|Subject) + (0+nsex|Subject) +
   (0 + nsexage|Subject), data=Orthodont)
fm1@optinfo$conv

结果:

$opt
[1] 0  ## convergence code from optimizer

$lme4
$lme4$messages
[1] "boundary (singular) fit: see help('isSingular')"
fm2 <- lmer(distance ~ age + (age*nsex|Subject), Orthodont, 
    control = lmerControl(check.nobs.vs.nRE = "ignore"))
fm2@optinfo$conv
$opt
[1] 0

$lme4
$lme4$code
[1] -3

$lme4$messages
[1] "unable to evaluate scaled gradient"                                       
[2] "Model failed to converge: degenerate  Hessian with 4 negative eigenvalues"