[R-sig-ME] Response time modeling: Warning message with non-normal RAs

Gabriel Baud-Bovy b@ud-bovy@g@briel @ending from h@r@it
Mon Oct 15 14:53:24 CEST 2018


Dear all,

I have a dataset with response times of 200 participants measured 36 time in different conditions.
The RTs distribution is right skewed as it is generally the case for RTs. I would like to avoid transform them
(see Lo & Andrew (2015)](https://www.frontiersin.org/articles/10.3389/fpsyg.2015.01171/full).
However, I often encounter warning messages with this dataset with a GLMM with Gamma
distribution and identity link. The problem is not caused by an over parametrization as it arises
even in the case in a intercept only model.

> fit <- glmer(choice.lat ~ 1 + (1|su), data=dat, family=Gamma(link="identity"))
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.220808 (tol = 0.001, component 1)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?

> fit
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: Gamma  ( identity )
Formula: choice.lat ~ 1 + (1 | su)
   Data: dat
      AIC       BIC    logLik  deviance  df.resid
 22629.26  22649.78 -11311.63  22623.26      6914
Random effects:
 Groups   Name        Std.Dev.
 su       (Intercept) 0.8477
 Residual             0.5721
Number of obs: 6917, groups:  su, 200
Fixed Effects:
(Intercept)
      3.044
convergence code 0; 2 optimizer warnings; 0 lme4 warnings

The dispersion parameter of the estimated Gamma distribution is  sigma(fit.glmer)^2 = 0.327, which
fits reasonably well the RTs.

After some poking around, I figured out that the problem probably comes from the
fact that the participants means are NOT distributed normally.  In fact, their distribution
is similarly skewed. Removing the two extreme subjects or using a log link function "solves" the convergence
problem but I don't like either solution because the is no valid reason to exclude these subjects
and using a log transform cause theoretical problems when one want to interpret
effects of more complex models (see Lo & Andrew (2015)).

I have seen many discussions of about warning message/convergence problem (
e.g. https://rstudio-pubs-static.s3.amazonaws.com/33653_57fc7b8e5d484c909b615d8633c01d51.html).
The usual advice is to try with different optimizers and/or simplify the model, which do not help here (they all give
similar warning messages).  I have two questions:

1) Can somebody explain intuitively why non-normal random effects lead to warning
   messages ?  I would have naively assumed that it would simply lead to large a large variance estimate.

2) Is there something within the lme4 framework  to tackle this problem? Should I
   simply ignore the warning messages ?

3) What principle approach would you suggest ? I have  seen that brms allow in principle to specify
   non-normal random effect (I think that only student  is implemented so far) but I haven't tried yet.

Here is a toy problem that reproduces the issue (it depends on the seed actually). Depending
on the choice of the dispersion parameter for the RAs, it is possible also to induce convergence
problem.

# artificial data set
nsu <- 200
nrep <- 36
mu <- 3.0      # mean RT
phi.su <- 0.8  # dispersion participants
phi <- 0.3     # dispersion
d <- expand.grid(
  su = paste0("S",1:nsu),
  rep = 1:nrep,
  mu =NA,
  rt = NA)

set.seed(125)
# generate 200 gamma distributed  participant means
mu.su <- sort(rgamma(nsu, shape=1/phi.su, scale=phi.su*mu))
d$mu <- mu.su[d$su]
# add Gamma noise
d$rt <- rgamma(nsu*nrep,shape=1/phi,scale=phi*d$mu)
# fit intercept GLMM model
D

# histogram of participant means and response times
par(mfrow=c(1,2))
hist(mu.su,n=50)
hist(d$rt,n=200,xlim=c(0,10))

> all_fit(fit)
bobyqa. : [OK]
Nelder_Mead. : [OK]
optimx.nlminb : [OK]
optimx.L-BFGS-B : [OK]
nloptwrap.NLOPT_LN_NELDERMEAD : [OK]
nloptwrap.NLOPT_LN_BOBYQA : [OK]
nmkbw. : [OK]
....
were 13 warnings (use warnings() to see them)
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.215844 (tol = 0.001, component 1)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?
3: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.220808 (tol = 0.001, component 1)
4: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?
5: In optwrap(optimizer, devfun, start, rho$lower, control = control,  ... :
  convergence code 1 from optimx
6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.215713 (tol = 0.001, component 1)
7: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?
8: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.102562 (tol = 0.001, component 1)
9: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.109779 (tol = 0.001, component 1)
10: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.109779 (tol = 0.001, component 1)
11: In optwrap(optimizer, devfun, start, rho$lower, control = control,  ... :
  convergence code 2 from nmkbw
12: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model failed to converge with max|grad| = 0.220811 (tol = 0.001, component 1)
13: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  ... :
  Model is nearly unidentifiable: very large eigenvalue
 - Rescale variables?


Thank you,

Gabriel


--
---------------------------------------------------------------------
Gabriel Baud-Bovy               tel.: (+39) 348 172 4045     (mobile)
UHSR University                       (+39) 02 2643 3429 (laboratory)
via Olgettina, 58                     (+39) 02 9175 1540  (secretary)
20132 Milan, Italy              email:       gabriel.baud-bovy using hsr.it<mailto:gabriel.baud-bovy using hsr.it>
---------------------------------------------------------------------



Rispetta l’ambiente: non stampare questa mail se non è necessario.
Respect the environment: print this email only if necessary.

	[[alternative HTML version deleted]]



More information about the R-sig-mixed-models mailing list