Skip to content
Back to formatted view

Raw Message

Message-ID: <509265C0.90602@gmail.com>
Date: 2012-11-01T12:06:24Z
From: Ben Bolker
Subject: convergence in GLMM (lme4 package)
In-Reply-To: <CADtmEn42Kh-ryV7TZ6Voi7RkAuM1tVdkxSpQ8cdkFTZjaB39iw@mail.gmail.com>

On 12-10-31 02:27 PM, Mart? Casals wrote:
> Hi Ben,
> Thank you very much for all your help, so far. Nonetheless, there is
> still something not working. If you could have a look at the following
> code, I would highly appreciate it. It's about how to count convergence
> problems of function glmer within a simulation. I tried to adapt your
> proposal to my models, but something's not working, probably to me lack
> of knowledge of functions like tryCatch and withCallingHandlers.

  Here's my attempt.
  A reproducible example would have been slightly more convenient --
I'm guessing a bit here.

options(warn=2)
nsim <- 1000  ## BMB: setting this to a parameter
warn<-rep(NA,nsim)
estglmer<-vector('list',nsim)
## BMB: it is marginally more efficient to pre-allocate
## lists (although prob doesn't
##  matter in this much case, glmer() is the slow part)

## don't know why estglmer needs names?

## The model to be fitted (Y, Category, fallswinner & ncombat are
##  variables in data frame dd)
modfun <- function(dat) glmer(Y~Category+fallswinner+(1|id),
       offset=(log(ncombat)),nAGQ=50,family="poisson",data=dat)

for(i in 1:nsim){
     # The data to be used
   ## nAGQ=50 is a little surprising.  Do you really need that much?
     estglmer[[i]]<-withCallingHandlers(
              tryCatch(modfun(alldata[[i]]),
                 error = function(e) {
                      warn[i] <<- paste("ERROR:",e$message)
                       NA
                   }),
                   warning = function(w) {
                        warn[i] <<- w$message
                        invokeRestart("muffleWarning")
                   })
}


> 
> 
> I'm thinking about the topic and I don't know if it?s useful to obtain
> the warnings/errors, because I should  look at each error and then I
> should decide what I can do.
> 
> I only want to inform aboutpercentage of convergence of GLMM, that is
> the converge is true or false.  I understand that a model is considered
> as not convergent  either if the estimation process did not converge or
> if the estimate or its standard error was not provided. For example, in
> some cases the parameter can be estimated but the estimation process was
> unable to provide a positive definite variance-covariance matrix of the
> parameters (problems with Hessian), mainly due to the instability of the
> model.
> 
> Thank you very much in advance for your suggestions.
> 
> Mart?
> 
> 
> 
> 2012/10/23 Mart? Casals <mcasals at aspb.cat <mailto:mcasals at aspb.cat>>
> 
>     Thank you so much Ben!!
> 
>     Mart?
> 
> 
>     2012/10/23 Ben Bolker <bbolker at gmail.com <mailto:bbolker at gmail.com>>
> 
>         Mart? Casals <mcasals at ...> writes:
> 
>         >
>         > I?m working on the simulation results and I would like to know the
>         > convergence of the GLMM model. For example, if I want to
>         obtain the
>         > converge in the glm case with R, I can extract:
>         >
>         > model1<-glm(................family=" ",data=)
>         >
>         > *model1$converged*
>         >
>         > [1] TRUE
>         >
>         > I don?t know if exist a similar function in the lme4 package
>         (glmer ).
>         >
> 
>           I think not.
>           I believe the only way to do this (it may have been discussed
>         before)
>         is to use options(warning=2) to promote warnings to errors, then
>         to use
>         tryCatch() etc. to intercept the errors and store the
>         information somewhere.
> 
>         http://comments.gmane.org/gmane.comp.lang.r.lme4.devel/8691
>         https://stat.ethz.ch/pipermail/r-help/2012-February/302767.html
> 
>           I've added a bit on this to http://glmm.wikidot.com/faq, since
>         it's
>         not the first time it has come up ...
> 
>          Ben Bolker
> 
>         _______________________________________________
>         R-sig-mixed-models at r-project.org
>         <mailto:R-sig-mixed-models at r-project.org> mailing list
>         https://stat.ethz.ch/mailman/listinfo/r-sig-mixed-models
> 
> 
> 
> 
>     -- 
>     Mart? Casals Toquero
> 
>     Centre d' Investigaci? Biom?dica d'Epidemiolog?a i Salut P?blica
> 
>     Ag?ncia de Salut P?blica de Barcelona
> 
>     Servei d' Epidemiologia
> 
>     Tel. 932384545 extensi?: 391
> 
>     mcasals at aspb.es <mailto:mcasals at aspb.es>
> 
> 
> 
> 
> -- 
> Mart? Casals Toquero
> 
> Centre d' Investigaci? Biom?dica d'Epidemiolog?a i Salut P?blica
> 
> Ag?ncia de Salut P?blica de Barcelona
> 
> Servei d' Epidemiologia
> 
> Tel. 932384545 extensi?: 391
> 
> mcasals at aspb.es <mailto:mcasals at aspb.es>