Skip to content

lme4/glmer convergence warnings

3 messages · Corey Sparks, Ben Bolker, Paul Johnson

#
Hello all,
I?ve been seeing the aforementioned convergence errors for weeks in a course i?m teaching using lme4, so I decided to follow Ben?s advice on reporting the :

I?m fitting a binomial GLMM for small area estimation model building here:
glmer(I(bmi>30)~povz+vachousz+baccz+blackz+hispanicz+factor(region)+(1|state)+(1|cofips), family="binomial", data=merged, weights=cntywt/mean(cntywt))

n=~240000, n_cofips=217, n_state=46
I get the warning:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.235915 (tol = 0.001)

and the gradients:

relgrad <- with(fit.1 at optinfo$derivs,solve(Hessian,gradient))
[1] 0.0001631008

and when I use refit(), I get:
fit.1<-refit(fit.1)
[1] 2.369877e-06

For another model on a LMM, I get:

fit.mix<-lmer(bmiz~agez+lths+coll+black+hispanic+other+(1|cofips), brfss_11)

In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00550412 (tol = 0.002)

relgrad <- with(fit.mix at optinfo$derivs,solve(Hessian,gradient))
[1] 8.099289e-08

Hope this helps


Corey Sparks
Assistant Professor
Department of Demography
The University of Texas at San Antonio
501 West Cesar E Chavez Blvd
corey.sparks 'at' utsa.edu
coreysparks.weebly.com
210 458 3166
#
On 14-04-10 09:01 PM, Corey Sparks wrote:

            
This is good (relative gradient is less than the 0.001 or 0.002
tolerance we would think to set as a default)
This doesn't really matter so much (as long as we're getting below
tolerance on the relative gradient, I don't care so much if we can
decrease it still further by refitting).
ditto.
Yes, this is encouraging (switching to relative gradients would clear
everything up here)
11 days later
#
Hi

I have that same convergence warning, but I've fiddled around quite a
bit and get the same estimates whether I change to Nelder_Mead or use
the routines in optimx.  I did the relgrad check Ben asked for.

This means all good, right? Itty bitty number being good...
[1] 0.0000001698392
I can upload the data and code if you need, its got a lot of rows :)
Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.00954838 (tol = 0.002)
Linear mixed model fit by maximum likelihood  ['lmerMod']
Formula: liquidAssetswASINH ~ NoNo + (e2bonly + e2bPlus) * (tage) + (e2bonly +
    e2bPlus) * (tpearnTMmeanw1000) + esex + emsr + eracer + renroll +
    eeducater + rmesrrTMpcttrunc + errprRefNew + etenurerTM.ch6 +
    tfipsstr + (1 | sippidf)
   Data: dat
Control: lmerControl(optimizer = "bobyqa")

      AIC       BIC    logLik  deviance  df.resid
 484468.0  484763.2 -242203.0  484406.0    100967

Scaled residuals:
    Min      1Q  Median      3Q     Max
-4.4895 -0.2807  0.0128  0.4315  5.0182

Random effects:
 Groups   Name        Variance Std.Dev.
 sippidf  (Intercept) 3.186    1.785
 Residual             4.992    2.234
Number of obs: 100998, groups: sippidf, 36415

Fixed effects:
                              Estimate Std. Error t value
(Intercept)                   3.532580   0.114950   30.73
NoNoNoNo                     -5.827712   0.034154 -170.63
e2bonlyYes                    1.445270   0.131311   11.01
e2bPlus1                     -0.096062   0.120796   -0.80
tage                          0.044094   0.002449   18.01
tpearnTMmeanw1000             0.279506   0.012600   22.18
esexFemale                   -0.069325   0.025256   -2.74
emsrNot                       1.454538   0.025194   57.73
eracerNotWhite               -0.299493   0.036034   -8.31
eracerAsian                  -0.208051   0.064168   -3.24
renrollEnrolled full-time     0.320056   0.032989    9.70
renrollEnrolled part-time     0.181865   0.039189    4.64
eeducaterpartHigh            -0.064377   0.074716   -0.86
eeducaterHighSch             -0.090467   0.069822   -1.30
eeducaterpartColl             0.074347   0.070763    1.05
eeducaterCollege              0.807621   0.074188   10.89
rmesrrTMpcttruncPartJob      -0.017902   0.032287   -0.55
rmesrrTMpcttruncJob           0.082878   0.034674    2.39
errprRefNewYes                0.089412   0.046943    1.90
etenurerTM.ch6NotOwner_Owner  0.049244   0.041681    1.18
etenurerTM.ch6Owner           0.245273   0.023970   10.23
etenurerTM.ch6Owner_NotOwner  0.014995   0.049510    0.30
tfipsstrWest                 -0.139529   0.037873   -3.68
tfipsstrNorth Central        -0.020640   0.036890   -0.56
tfipsstrSouth                -0.163906   0.034739   -4.72
e2bonlyYes:tage              -0.131191   0.004494  -29.19
e2bPlus1:tage                 0.008010   0.003859    2.08
e2bonlyYes:tpearnTMmeanw1000 -0.160948   0.023931   -6.73
e2bPlus1:tpearnTMmeanw1000    0.263943   0.015025   17.57

Correlation matrix not shown by default, as p = 29 > 20.
Use print(...., correlation=TRUE)  or
     vcov(....)     if you need it
[1] 0.0000001698392
On Thu, Apr 10, 2014 at 8:35 PM, Ben Bolker <bbolker at gmail.com> wrote: