У меня было два следующих предупреждения при запуске многоуровневой модели:
Предупреждающие сообщения: 1: В checkConv (attr (opt, "производные"), opt $ par, ctrl = control $ checkConv ,: Модель не удалось сойтись с max | grad | = 103,424 (tol = 0,002, компонент 1) 2: В checkConv (attr (opt, «производные»), opt $ par, ctrl = control $ checkConv,: модель практически неопознаваема : очень большое собственное значение - Масштабировать переменные?
Мои данные можно загрузить по одной из следующих ссылок: Google Диск или 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)
Я пробовал много решений, предложенных в других аналогичных вопросах переполнения стека, например, здесь . Во-первых, смена оптимизаторов:
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, «производные»), opt $ par, ctrl = control $ checkConv,: модель не сходится с max | grad | = 6.1826 (tol = 0,002, компонент 1) 2: В checkConv (attr (opt, «производные»), 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 (оптимизатор, devfun, getStart ( start, rho $ lower, rho $ pp),: код сходимости 1 из nlminbwrap 2: в checkConv (attr (opt, «производные»), opt $ par, ctrl = control $ checkConv,: модели не удалось сойтись с max | grad | = 25.1833 (tol = 0,002, компонент 1) 3: В checkConv (attr (opt, «производные»), 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)
Может быть, я мог бы сделать несколько более простое изменение масштаба для указанных c переменных, но я не знаю, с чего начать. Все они более или менее похожи (шкалы от 1 до 10, 0-4 и т. Д. c.)
.