I am fitting a mixed effects model with a binary outcome. I have one fixed effect (Offset
, a 3 level factor) and one random effect (chamber, with multiple data points coming from each chamber). I have included random intercepts that vary across chambers to account for the non-independence of data points that come from the same chamber. There are 27 chambers with 3-20 data points coming from each chamber. My code is as follows:
ball1=glmer(Buried~Offset+(1|Chamber), family=binomial,
data=ballData)
I then added random slopes to my model (that is allowed the slopes to vary across chambers) to see if I could imrpove the fit of the model. My code for this second model was
ball2=glmer(Buried~Offset+(Offset|Chamber), family=binomial,
data=ballData)
ball2 did run and produce parameter estimates, however it gave me the following error message:
In checkConv(attr(opt, "derivs"), opt\$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio - Rescale variables?
Nonetheless a comparison of the deviances between the two models showed that adding the random slopes did not improve the fit of the model. I have two questions (I have spent hours browsing the internet/other CV questions and am still unsure, so any help is much appreciated)
1) What does the error message mean and what can I do to fix the problem? I don't think I can rescale my variables because they are all factors.
2) I am including the random factor simply to control for any variation in the outcome variable across chambers so that I can test for the main effect of Offset. Is it correct to include both random slopes and intercepts to control for variation due to Chamber (i.e. (Offset|Chamber)
), or is including only random intercepts sufficient to control for variation across Chambers (i.e. (1|Chamber)
)?
Here are the outputs for the models with and without the random slope. The first model (that includes random intercepts only, runs smoothly. When I add the random slopes (the second model), the warning appears.
Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) [glmerMod]
Family: binomial ( logit )
Formula: Buried ~ Offset + (1 | Chamber)
Data: ballData
AIC BIC logLik deviance df.resid
340.8 355.2 -166.4 332.8 267
Scaled residuals:
Min 1Q Median 3Q Max
-1.5886 -0.6587 -0.5681 0.7003 1.9255
Random effects:
Groups Name Variance Std.Dev.
Chamber (Intercept) 0.1574 0.3967
Number of obs: 271, groups: Chamber, 27
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.7705 0.3010 2.559 0.01049 *
Offset2 -1.2389 0.4021 -3.081 0.00206 **
Offset3 -1.8705 0.4059 -4.608 4.07e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) Offst2
Offset2 -0.723
Offset3 -0.765 0.545
>
Now for the model with the random slopes added:
Generalized linear mixed model fit by maximum likelihood (Laplace
Approximation) [glmerMod]
Family: binomial ( logit )
Formula: Buried ~ Offset + (Offset | Chamber)
Data: ballData
AIC BIC logLik deviance df.resid
347.5 379.9 -164.8 329.5 262
Scaled residuals:
Min 1Q Median 3Q Max
-1.7529 -0.5876 -0.5876 0.7008 1.9055
Random effects:
Groups Name Variance Std.Dev. Corr
Chamber (Intercept) 0.3795 0.6160
Offset2 0.8254 0.9085 -0.50
Offset3 0.3795 0.6160 -1.00 0.50
Number of obs: 271, groups: Chamber, 27
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.8497 0.3771 2.253 0.0242 *
Offset2 -1.2570 0.5349 -2.350 0.0188 *
Offset3 -1.9132 0.4343 -4.406 1.05e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) Offst2
Offset2 -0.705
Offset3 -0.868 0.612
convergence code: 0
Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
I have tried the following optimizers: however, they result in various new warnings:
ball2=glmer(Buried~Offset+(Offset|Chamber), family=binomial,
data=ballData,
control=glmerControl(optimizer="bobyqa"))
##
ball2=glmer(Buried~Offset+(Offset|Chamber), family=binomial,
data=ballData,
control=glmerControl(optimizer="Nelder_Mead"))
##
ball2=glmer(Buried~Offset+(Offset|Chamber), family=binomial,
data=ballData,
control=glmerControl(optimizer="optimx",
optCtrl=list(method="nlminb")))
##
ball2=glmer(Buried~Offset+(Offset|Chamber), family=binomial,
data=ballData,
control=glmerControl(optimizer="optimx",
optCtrl=list(method="L-BFGS-B")))