2

运行多级模型时出现以下两个警告:

警告消息: 1: 在 checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 模型无法收敛到 max|grad| = 103.424 (tol = 0.002, component 1) 2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 模型几乎无法识别:非常大的特征值 - 重新调整变量?

我的数据可以通过以下任一链接下载: Google DriveDropbox

令人费解的是,当我在不同的计算机上尝试时,我有一个新的警告:

边界(奇异)拟合:参见 ?isSingular

运行模型的代码如下:

library(mlmRev)

New <- lmer(cong_LH_all ~ voter_exp_dif_LH_all + education + knowledge_adj + dif_cls_LH_all 
            + cong_closest + ENEP + (1|election), cses_leg) 

我已经尝试了许多其他 Stack Overflow 类似问题中建议的解决方案,比如这里。首先,更改优化器:

Model1.2 <- lmerTest::lmer(cong_LH_all ~ voter_exp_dif_LH_all + education      
+ knowledge_adj + dif_cls_LH_all + dif_cls_LH_all + cong_closest + ENEP +
+ (1|election), data = cses_leg, control = lmerControl(optimizer="bobyqa",
optCtrl=list(maxfun=2e5)))

警告消息:1:在 checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 模型无法收敛到 max|grad| = 6.1826 (tol = 0.002, component 1) 2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 模型几乎无法识别:非常大的特征值 - 重新调整变量?

Model1.3 <- lmerTest::lmer(cong_LH_all ~ voter_exp_dif_LH_all + education + knowledge_adj + dif_cls_LH_all + dif_cls_LH_all + cong_closest + ENEP  + (1|election), data = cses_leg, control= lmerControl(optimizer="Nelder_Mead", optCtrl=list(maxfun=2e5)))

边界(奇异)拟合:参见 ?isSingular

Model1.4 <- lmerTest::lmer(cong_LH_all ~ voter_exp_dif_LH_all + education + knowledge_adj + dif_cls_LH_all + dif_cls_LH_all + cong_closest + ENEP  + (1|election), data = cses_leg, control= lmerControl(optimizer="nlminbwrap", optCtrl=list(maxfun=2e5)))

警告消息: 1: 在 optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp), : 来自 nlminbwrap 的收敛代码 1 2: 在 checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : 模型未能收敛到 max|grad| = 25.1833 (tol = 0.002, component 1) 3: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :模型几乎无法识别:非常大的特征值 - 重新调整变量?

然后,我已经完成了奇点检查,这可能是问题所在,但我不知道如何解决:

tt <- getME(New,"theta")
ll <- getME(New,"lower")
min(tt[ll==0])

结果值:

0.1728425

尝试重新缩放(使用上面相同链接中的代码):

numcols <- grep("^c\\.", names(cses_leg))
cses_l2 <- cses_leg
cses_l2[,numcols] <- scale(cses_l2[,numcols])
New <- lmer(cong_LH_all ~ voter_exp_dif_LH_all + education + knowledge_adj +    dif_cls_LH_all + cong_closest + ENEP + (1|election), cses_l2)

也许我可以对特定变量进行一些更简单的重新缩放,但我不知道从哪里开始。它们都或多或少相似(从 1-10、0-4 等)

4

0 回答 0