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")))