O modelo Lmer falha ao convergir

12

Meus dados são descritos aqui O que pode causar um "erro () é um erro singular" no aov ao ajustar uma ANOVA de medidas repetidas?

Estou tentando ver o efeito de uma interação usando, lmerentão meu caso base é:

my_null.model <- lmer(value ~ Condition+Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

my.model <- lmer(value ~ Condition*Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

A execução de anovame fornece resultados significativos, mas quando tento explicar a inclinação aleatória ( (1+Scenario|Player)), o modelo falha com este erro:

  Warning messages:
 1: In commonArgs(par, fn, control, environment()) :
   maxfun < 10 * length(par)^2 is not recommended.
 2: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp),  :
  convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 3: In commonArgs(par, fn, control, environment()) :
  maxfun < 10 * length(par)^2 is not recommended.
 4: In optwrap(optimizer, devfun, opt$par, lower = rho$lower, control = control,  :
   convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 5: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge with max|grad| = 36.9306 (tol = 0.002)
 6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

Alternativamente, se falhar a convergir após uma série de iterações (I configurá-lo para 100 000) e estou recebendo os mesmos resultados após 50ke 100kisso significa que ele é muito próximo do valor real, apenas não alcançá-lo. Então, posso relatar meus resultados assim?

Observe que quando eu defino as iterações tão altas, recebo apenas estes avisos:

 Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge with max|grad| = 43.4951 (tol = 0.002)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge: degenerate  Hessian with 1 negative eigenvalues
Pio
fonte

Respostas:

8

Veja esta conversa para um método alternativo de avaliar a convergência. Especificamente, este comentário de Ben Bolker:

obrigado. Um teste ainda mais simples seria pegar um exemplo adequado que fornecesse avisos de convergência e examinar os resultados de
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
e verificar se é razoavelmente pequeno (por exemplo, <0,001?)

Como alternativa, você pode tentar o conselho de Bolker aqui , que é tentar um otimizador diferente.

filups21
fonte
1
o que se deve fazer se max (abs (relgrad)) fornecer um valor de 2,9239489e-05?
Jens
1
@ Jens, então isso seria muito, muito pequeno (e-05 significa "escreva 5 zeros e depois os números que você vê à esquerda", com um ponto após o primeiro zero). Então, alguém ficaria muito feliz com esse valor!
Arthur Spoon