Se estivermos montando um glmer, podemos receber um aviso informando que o modelo está encontrando dificuldades para convergir ... por exemplo
>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.00389462 (tol = 0.001)
Outra maneira de verificar a convergência discutida neste tópico por @Ben Bolker é:
relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
#[1] 1.152891e-05
se max(abs(relgrad))
for, <0.001
então as coisas podem ficar bem ... então, neste caso, temos resultados conflitantes? Como devemos escolher entre os métodos e nos sentirmos seguros com o nosso modelo?
Por outro lado, quando obtemos valores mais extremos, como:
>Warning message:
In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 35.5352 (tol = 0.001)
relgrad <- with(model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
#[1] 0.002776518
Isso significa que precisamos ignorar os resultados / estimativas / valores-p do modelo? 0.0027 é muito grande para prosseguir?
Quando diferentes otimizadores fornecem resultados diferentes e a centralização de variáveis / remoção de parâmetros (reduzindo os modelos ao mínimo) não ajuda, mas os VIFs são baixos, os modelos não são superdispersos e os resultados dos modelos fazem sentido lógico com base em expectativas a priori, parece difícil saber o que fazer.
Aconselhamento sobre como interpretar os problemas de convergência, quão extremos eles precisam ser para realmente nos preocupar e possíveis maneiras de tentar gerenciá-los além dos mencionados seriam muito úteis.
Usando:
R version 3.1.0 (2014-04-10)
elme4_1.1-6
fonte
lme4
(versão 1.1-7) tem um comportamento de aviso diferente que os autores acreditam ter menos probabilidade de emitir avisos de "alarme falso". Você pode tentar atualizarlme4
para a versão mais recente, ajustar o modelo novamente e verificar se ainda recebe avisos semelhantes, pelo menos no primeiro caso.Respostas:
Tenha medo. Tenha muito medo.
No ano passado, entrevistei John Nash, autor de optim e optimx, para um artigo no site DeveloperWorks da IBM. Falamos sobre como os otimizadores funcionam e por que eles falham quando falham. Ele parecia ter como certo que eles costumam fazer. É por isso que os diagnósticos estão incluídos no pacote. Ele também achou que você precisava "entender seu problema" e entender seus dados. Tudo isso significa que os avisos devem ser levados a sério e são um convite para analisar seus dados de outras maneiras.
Normalmente, um otimizador para de pesquisar quando não pode mais melhorar a função de perda em uma quantidade significativa. Não sabe para onde ir a seguir, basicamente. Se o gradiente da função de perda não for zero nesse ponto, você não atingiu um extremo de nenhum tipo. Se o Hessiano não for positivo, mas o gradiente for zero, você não encontrou um mínimo, mas possivelmente encontrou um ponto máximo ou de sela. Dependendo do otimizador, porém, os resultados sobre o Hessian podem não ser fornecidos. No Optimx, se você deseja avaliar as condições KKT, é necessário solicitá-las - elas não são avaliadas por padrão. (Essas condições examinam o gradiente e o Hessian para ver se você realmente tem um mínimo.)
O problema com modelos mistos é que as estimativas de variação para os efeitos aleatórios são limitadas a positivas, colocando assim um limite dentro da região de otimização. Mas suponha que um efeito aleatório específico não seja realmente necessário em seu modelo - ou seja, a variação do efeito aleatório é 0. Seu otimizador irá para esse limite, não poderá prosseguir e parará com um gradiente diferente de zero. Se a remoção desse efeito aleatório melhorasse a convergência, você saberá que esse foi o problema.
Como um aparte, observe que a teoria da máxima verossimilhança assintótica pressupõe que o MLE seja encontrado em um ponto interior (ou seja, não no limite dos valores lícitos dos parâmetros) - portanto, os testes de razão de verossimilhança para componentes de variância podem não funcionar quando de fato a hipótese nula de variância zero é verdadeiro. O teste pode ser feito usando testes de simulação, conforme implementado no pacote RLRsim.
Para mim, suspeito que os otimizadores tenham problemas quando há muito poucos dados para o número de parâmetros ou o modelo proposto não é realmente adequado. Pense no sapatinho de cristal e na meio-irmã feia: você não pode colocar seus dados no modelo, por mais que tente, e algo precisa dar.
Mesmo que os dados se ajustem ao modelo, eles podem não ter o poder de estimar todos os parâmetros. Uma coisa engraçada aconteceu comigo nesse sentido. Simulei alguns modelos mistos para responder a uma perguntasobre o que acontece se você não permitir que os efeitos aleatórios sejam correlacionados ao ajustar um modelo de efeitos mistos. Simulei dados com uma forte correlação entre os dois efeitos aleatórios e, em seguida, ajustei o modelo nos dois sentidos com lmer: colocando 0 correlações e correlações livres. O modelo de correlação se encaixa melhor que o modelo não correlacionado, mas, curiosamente, em 1000 simulações, eu tive 13 erros ao ajustar o modelo verdadeiro e 0 erros ao ajustar o modelo mais simples. Não entendo completamente por que isso aconteceu (e repeti os Sims para resultados semelhantes). Eu suspeito que o parâmetro de correlação é bastante inútil e o otimizador não consegue encontrar o valor (porque isso não importa).
Você perguntou sobre o que fazer quando diferentes otimizadores fornecem resultados diferentes. John e eu discutimos esse ponto. Alguns otimizadores, na sua opinião, simplesmente não são tão bons! E todos eles têm pontos fracos - isto é, conjuntos de dados que os farão falhar. É por isso que ele escreveu o optimx, que inclui uma variedade de otimizadores. Você pode executar vários no mesmo conjunto de dados.
Se dois otimizadores fornecerem os mesmos parâmetros, mas diagnósticos diferentes - e esses parâmetros fizerem sentido no mundo real -, eu estaria inclinado a confiar nos valores dos parâmetros. A dificuldade pode estar no diagnóstico, que não é à prova de idiotas. Se você não forneceu explicitamente a função gradiente e / ou matriz Hessian, o otimizador precisará estimar isso a partir da função de perda e dos dados, que é apenas outra coisa que pode dar errado.
Se você também estiver obtendo valores de parâmetros diferentes, convém tentar diferentes valores iniciais e ver o que acontece então. Alguns otimizadores e alguns problemas são muito sensíveis aos valores iniciais. Você quer começar no parque de baile.
fonte
Eu só quero complementar a ótima resposta da @ Placidia. Você pode conferir "Modelos lineares ricamente parametrizados: aditivos, séries temporais e modelos espaciais usando efeitos aleatórios", de James Hodges (2014). Ele discute o que não sabemos sobre modelos mistos e, ao mesmo tempo, tenta oferecer uma teoria ampla, além de dicas práticas para ajustar modelos complexos.
Um modelador muitas vezes assustado, acho as discussões de Hodge sobre "quebra-cabeças" inestimáveis. Ele explica casos estranhos decorrentes da modelagem de efeitos mistos, incluindo "Um efeito aleatório competindo com um efeito fixo" e "Competição entre efeitos aleatórios". Soa familiar?
fonte