如何从运行 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"
我在一个循环中 运行 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"