运行多级模型时,我收到以下两个警告:
警告消息:1:在checkConv(attr(opt,“ derivs”),opt $ par,ctrl = control $ checkConv ,:模型无法与max | grad |收敛= 103.424(tol = 0.002,组件1)2:在checkConv(attr(opt,“ derivs”),opt $ par,ctrl = control $ checkConv,:模型接近 无法识别:特征值非常大 -重新调整变量?
我的数据可以通过以下任一链接下载:Google Drive或Dropbox
令人困惑的是,当我在另一台计算机上尝试时,我有一个新警告:
边界(奇异)拟合:请参见?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问题中建议的许多解决方案,例如here。首先,更改优化器:
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,组件1) 2:在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,组件1) 3:在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等)