r glmer-Warnungen: Modell konvergiert nicht und Modell ist nahezu nicht identifizierbar

10

Ich habe in diesem Forum Fragen dazu gesehen, und ich habe sie auch selbst in einem früheren Beitrag gestellt, aber ich konnte mein Problem immer noch nicht lösen. Deshalb versuche ich es erneut und formuliere die Frage diesmal so klar wie möglich mit möglichst detaillierten Informationen.

Mein Datensatz enthält eine binomialabhängige Variable, 3 kategoriale feste Effekte und 2 kategoriale zufällige Effekte (Element und Betreff). Ich verwende ein Modell mit gemischten Effekten glmer(). Folgendes habe ich in R eingegeben:

modelall<- glmer(moodR ~ group * context * condition + (1|subject) + (1|item),
                 data = RprodHSNS, family = "binomial")

Ich bekomme 2 Warnungen:

Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.02081 (tol = 0.001, component 11)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?`

Meine Zusammenfassung sieht folgendermaßen aus:

Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: binomial  ( logit )
Formula: moodR ~ group * context * condition + (1 | subject) + (1 | item)
Data: RprodHSNS`


AIC      BIC   logLik deviance df.resid
1400.0   1479.8   -686.0   1372.0     2195 `

Scaled residuals: 
Min      1Q  Median      3Q     Max 
-8.0346 -0.2827 -0.0152  0.2038 20.6578 `

Random effects:
Groups  Name        Variance Std.Dev.
item    (Intercept) 1.475    1.215   
subject (Intercept) 1.900    1.378   
Number of obs: 2209, groups:  item, 54; subject, 45
Fixed effects:`
Estimate Std. Error z value Pr(>|z|)`                             
(Intercept)                -0.61448   42.93639  -0.014 0.988582  
group1                     -1.29254   42.93612  -0.030 0.975984    
context1                    0.09359   42.93587   0.002 0.998261   
context2                   -0.77262    0.22894  -3.375 0.000739***
condition1                  4.99219   46.32672   0.108 0.914186
group1:context1            -0.17781   42.93585  -0.004 0.996696
group1:context2            -0.10551    0.09925  -1.063 0.287741
group1:condition1          -3.07516   46.32653  -0.066 0.947075
context1:condition1        -3.47541   46.32648  -0.075 0.940199
context2:condition1        -0.07293    0.22802  -0.320 0.749087
group1:context1:condition1  2.47882   46.32656   0.054 0.957328
group1:context2:condition1  0.30360    0.09900   3.067 0.002165 **

---

Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
            (Intr) group1 cntxt1 cntxt2 cndtn1 grp1:cnt1 grp1:2 grp1:cnd1 cnt1:1 cnt2:1 g1:1:1
group1      -1.000                                                                            
context1    -1.000  1.000                                                                
context2     0.001  0.000 -0.001                                                              
condition1  -0.297  0.297  0.297  0.000                                                       
grp1:cntxt1  1.000 -1.000 -1.000  0.001 -0.297                                                
grp1:cntxt2  0.001  0.000  0.000 -0.123  0.000  0.000                                       
grp1:cndtn1  0.297 -0.297 -0.297 -0.001 -1.000  0.297     0.000                               
cntxt1:cnd1  0.297 -0.297 -0.297 -0.001 -1.000  0.297     0.001  1.000                        
cntxt2:cnd1  0.000  0.000 -0.001  0.011  0.001  0.000    -0.197 -0.001    -0.001              
grp1:cnt1:1 -0.297  0.297  0.297  0.001  1.000 -0.297    -0.001 -1.000    -1.000  0.001       
grp1:cnt2:1  0.000  0.000  0.001 -0.198  0.000 -0.001     0.252  0.000     0.001 -0.136  0.000

Extrem hohe p-Werte, was nicht möglich zu sein scheint.

In einem früheren Beitrag habe ich gelesen, dass eines der Probleme behoben werden kann, indem die Anzahl der Iterationen erhöht wird, indem Folgendes in den Befehl eingefügt wird:

glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 100000))

Also das habe ich getan:

modelall <- glmer(moodR ~ group * context * condition + (1|subject) + (1|item),
                  data = RprodHSNS, family = "binomial", 
                  glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 100000)))

Jetzt ist die zweite Warnung weg, aber die erste ist noch da:

> Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.005384 (tol = 0.001, component 7)

Die Zusammenfassung sieht auch noch seltsam aus:

Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
 Family: binomial  ( logit )
Formula: moodR ~ group * context * condition + (1 | subject) + (1 | item)
   Data: RprodHSNS
Control: glmerControl(optimizer = "bobyqa", optCtrl = list(maxfun = 1e+05))`

AIC      BIC   logLik deviance df.resid 
1400.0   1479.8   -686.0   1372.0     2195

Scaled residuals: 
Min      1Q  Median      3Q     Max 
-8.0334 -0.2827 -0.0152  0.2038 20.6610 

Random effects:
Groups  Name        Variance Std.Dev.
item    (Intercept) 1.474    1.214   
subject (Intercept) 1.901    1.379   
Number of obs: 2209, groups:  item, 54; subject, 45

Fixed effects:
                        Estimate Std. Error z value Pr(>|z|)    
(Intercept)                -0.64869   26.29368  -0.025 0.980317    
group1                     -1.25835   26.29352  -0.048 0.961830    
context1                    0.12772   26.29316   0.005 0.996124    
context2                   -0.77265    0.22886  -3.376 0.000735 ***
condition1                  4.97325   22.80050   0.218 0.827335    
group1:context1            -0.21198   26.29303  -0.008 0.993567    
group1:context2            -0.10552    0.09924  -1.063 0.287681    
group1:condition1          -3.05629   22.80004  -0.134 0.893365    
context1:condition1        -3.45656   22.80017  -0.152 0.879500    
context2:condition1        -0.07305    0.22794  -0.320 0.748612    
group1:context1:condition1  2.45996   22.80001   0.108 0.914081    
group1:context2:condition1  0.30347    0.09899   3.066 0.002172 ** 

---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Correlation of Fixed Effects:
        (Intr) group1 cntxt1 cntxt2 cndtn1 grp1:cnt1 grp1:2 grp1:cnd1 cnt1:1 cnt2:1 g1:1:1
group1      -1.000                                                                            
context1    -1.000  1.000                                                                     
context2     0.000  0.000  0.000                                                              
condition1   0.123 -0.123 -0.123 -0.001                                                       
grp1:cntxt1  1.000 -1.000 -1.000  0.001  0.123                                                
grp1:cntxt2  0.001  0.000  0.000 -0.123  0.001  0.000                                         
grp1:cndtn1 -0.123  0.123  0.123  0.000 -1.000 -0.123    -0.001                               
cntxt1:cnd1 -0.123  0.123  0.123  0.000 -1.000 -0.123     0.000  1.000                        
cntxt2:cnd1  0.000  0.000  0.000  0.011 -0.001  0.000    -0.197  0.001     0.001              
grp1:cnt1:1  0.123 -0.123 -0.123  0.000  1.000  0.123     0.000 -1.000    -1.000 -0.001      
grp1:cnt2:1  0.000 -0.001  0.001 -0.198  0.001 -0.001     0.252 -0.001     0.000 -0.136  0.000

Was kann ich tun, um das zu lösen? Oder kann mir jemand sagen, was diese Warnung überhaupt bedeutet (auf eine Weise, die ein R-Neuling wie ich verstehen kann)?

Brechje van Osch
quelle

Antworten:

7

Hier finden Sie eine ausführliche Beschreibung zur Fehlerbehebung: https://rstudio-pubs-static.s3.amazonaws.com/33653_57fc7b8e5d484c909b615d8633c01d51.html

Grundsätzlich werden empfohlen, Ihre Variablen neu zu skalieren und zu zentrieren, auf Singularität zu prüfen, Gradientenberechnungen zu überprüfen, weitere Iterationen durch Neustart von der vorherigen Anpassung hinzuzufügen und verschiedene Optimierer auszuprobieren. Die letzte Empfehlung (dh Optimierer) hat in der Vergangenheit für mich funktioniert:

z. B. control=glmerControl(optimizer="bobyqa",optCtrl=list(maxfun=2e5))zu Ihrem glmerAnruf hinzufügen .

Jeffrey Girard
quelle
6

Die Korrelation fester Effekte in Ihrer letzten Ausgabe deutet darauf hin, dass ein Problem der Multikollinearität vorliegt. Einige der festen Effekte sind nahezu perfekt korreliert (r = 1 oder r = -1). Insbesondere Gruppe1 und ihre Wechselwirkungen scheinen problematisch zu sein. Sie können einige beschreibende Statistiken und Diagramme Ihrer Variablen mit festem Effekt und der Interaktionen überprüfen. Vielleicht ist es nur ein einfacher Codierungsfehler beim Erstellen der Gruppenkategorien.

stijn
quelle