Модель R Lmer не сходится, почти неидентифицируемо (очень большое собственное значение) / единственное соответствие - PullRequest
0 голосов
/ 06 января 2020

У меня было два следующих предупреждения при запуске многоуровневой модели:

Предупреждающие сообщения: 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.)

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...