Модель логистической регрессии не сходится с использованием функции glmer ()

Я попытался создать модель логистической регрессии со смешанным эффектом, используя функцию glmer(), однако модель не сходится. Во-первых, я изменил категориальные переменные с векторов на факторы.

schwa_completed_2$Outcome <- as.factor(schwa_completed_2$Outcome)
schwa_completed_2$frequency_grouped <- as.factor(schwa_completed_2$frequency_grouped)
schwa_completed_2$sonority_grouped <- as.factor(schwa_completed_2$sonority_grouped)
schwa_completed_2$participant_gender <- as.factor(schwa_completed_2$participant_gender) 
schwa_completed_2$participant_age_group <- as.factor(schwa_completed_2$participant_age_group)
schwa_completed_2$Speaker <- as.factor(schwa_completed_2$Speaker)

Также есть еще одна непрерывная переменная. Затем я создал модель

model <- glmer(Outcome ~ frequency_grouped + sonority_grouped + syl_sec_EN +
                         participant_gender + participant_age_group + 1|Speaker,
           data = schwa_completed_2, family = binomial, optimizer = "bobyqa")

К сожалению, модель не сходится. Если я избавился от эффекта «Динамик», модель работает нормально, однако результаты, вероятно, искажены.

Предупреждающие сообщения:
1: In commonArgs (par, fn, control, environment ()):
maxfun ‹10 * length (par) ^ 2 не рекомендуется.
2: In optwrap (optimizer, devfun , start, rho $ lower, control = control,:
код сходимости 1 от bobyqa: bobyqa - максимальное количество функций
превышено
3: In (function (fn, par, lower = rep. int (-Inf, n), upper = rep.int (Inf,:
сбой сходимости в 10000 оценок
4: В checkConv (attr (opt, "производные"), opt $ par, ctrl = control $ checkConv,: Модель не удалось сходиться с max | grad | = 0,0785481 (tol = 0,001, компонент 1)

Generalized linear mixed model fit by maximum likelihood (Laplace 
Approximation) ['glmerMod']
Family: binomial  ( logit )
Formula: Outcome ~ frequency_grouped + sonority_grouped + syl_sec_EN +  
participant_gender + participant_age_group + 1 | Speaker
Data: schwa_completed_2

 AIC      BIC   logLik deviance df.resid 
1820.8   2066.1   -864.4   1728.8     1486 

Scaled residuals: 
Min      1Q  Median      3Q     Max 
-2.5957 -0.6255 -0.3987  0.7714  3.4432 

Random effects:
Groups  Name                                 Variance Std.Dev. Corr                         
Speaker (Intercept)                          2.08476  1.4439                                
        frequency_groupedmoderately_frequent 0.78914  0.8883   -0.15                        
        frequency_groupedvery_frequent       3.07514  1.7536   -0.90  0.35                  
        sonority_groupedsonorants            1.33795  1.1567    0.82 -0.44 -0.91            
        sonority_groupedstops                1.76849  1.3298    0.02 -0.42 -0.36  0.51      
        sonority_groupedvowels               2.97690  1.7254    0.23  0.02 -0.32  0.55  0.77
        syl_sec_EN                           0.03217  0.1794   -0.62 -0.42  0.32 -0.44  0.11 -0.52  
        participant_genderM                  0.41458  0.6439   -0.86 -0.18  0.77 -0.77 -0.24 -0.62  0.82 
        participant_age_groupY               0.52428  0.7241    0.46  0.80 -0.20  0.06 -0.44  0.08 -0.73 -0.63

Number of obs: 1532, groups:  Speaker, 40

Fixed effects:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  -0.7650     0.1862  -4.108 3.99e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
convergence code: 0
Model failed to converge with max|grad| = 0.0785481 (tol = 0.001, component 1)
failure to converge in 10000 evaluations

Это из-за слишком сложной модели или мой ноутбук недостаточно мощный? Я не знаю, что мне делать в этот момент. Могу ли я что-нибудь сделать, чтобы это исправить?


person phnlg    schedule 01.06.2018    source источник
comment
Вы имели в виду, чтобы все переменные были случайными (и не имели фиксированных эффектов), или вы имели в виду ... + (1|Speaker)   -  person user20650    schedule 01.06.2018
comment
ps в более общем плане ?convergence дает кое-что попробовать   -  person user20650    schedule 01.06.2018
comment
проголосовал за закрытие как опцию, не отвечающую   -  person user20650    schedule 05.06.2018
comment
Извините за то, что не ответил, помогло использование функции scale () для переменной syl_sec_EN   -  person phnlg    schedule 05.06.2018
comment
ха, без проблем ... просто подумал, что вы сделали раннер (теперь нет голосов, чтобы закрыть). Но рада, что ты с этим справился. Может быть, сочтите это как ответ ?? (ps действительно кажется немного нестандартным включать термины как случайные эффекты, но не как фиксированные эффекты?)   -  person user20650    schedule 05.06.2018


Ответы (1)


Хорошо, мне помогло сгруппировать динамики с помощью group by, а затем scale переменной syl_sec_EN

person phnlg    schedule 08.06.2018