Eu tenho algumas perguntas sobre especificação e interpretação de GLMMs. Definitivamente, três perguntas são estatísticas e duas são mais específicas sobre R. Estou publicando aqui porque, em última análise, acho que a questão é a interpretação dos resultados do GLMM.
Atualmente, estou tentando ajustar um GLMM. Estou usando os dados do censo dos EUA do Longitudinal Tract Database . Minhas observações são setores censitários. Minha variável dependente é o número de unidades habitacionais vagas e estou interessado na relação entre vaga e variáveis socioeconômicas. O exemplo aqui é simples, basta usar dois efeitos fixos: porcentagem da população não branca (raça) e renda média da família (classe), além de sua interação. Eu gostaria de incluir dois efeitos aleatórios aninhados: tratados dentro de décadas e décadas, ou seja (década / setor). Estou considerando essas aleatórias em um esforço para controlar a autocorrelação espacial (isto é, entre setores) e temporal (isto é, entre décadas). No entanto, também estou interessado na década como efeito fixo, por isso também o incluo como fator fixo.
Como minha variável independente é uma variável de contagem inteira não negativa, eu tenho tentado ajustar poisson e GLMMs binomiais negativos. Estou usando o log do total de unidades habitacionais como um deslocamento. Isso significa que os coeficientes são interpretados como o efeito na taxa de desocupação, não no número total de casas desocupadas.
Atualmente, tenho resultados para um Poisson e um GLMM binomial negativo estimado usando glmer e glmer.nb do lme4 . A interpretação dos coeficientes faz sentido para mim com base no meu conhecimento da área de dados e estudo.
Se você deseja que os dados e o script estejam no meu Github . O script inclui mais investigações descritivas que eu fiz antes de construir os modelos.
Aqui estão os meus resultados:
Modelo de Poisson
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: poisson ( log )
Formula: R_VAC ~ decade + P_NONWHT + a_hinc + P_NONWHT * a_hinc + offset(HU_ln) + (1 | decade/TRTID10)
Data: scaled.mydata
AIC BIC logLik deviance df.resid
34520.1 34580.6 -17250.1 34500.1 3132
Scaled residuals:
Min 1Q Median 3Q Max
-2.24211 -0.10799 -0.00722 0.06898 0.68129
Random effects:
Groups Name Variance Std.Dev.
TRTID10:decade (Intercept) 0.4635 0.6808
decade (Intercept) 0.0000 0.0000
Number of obs: 3142, groups: TRTID10:decade, 3142; decade, 5
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.612242 0.028904 -124.98 < 2e-16 ***
decade1980 0.302868 0.040351 7.51 6.1e-14 ***
decade1990 1.088176 0.039931 27.25 < 2e-16 ***
decade2000 1.036382 0.039846 26.01 < 2e-16 ***
decade2010 1.345184 0.039485 34.07 < 2e-16 ***
P_NONWHT 0.175207 0.012982 13.50 < 2e-16 ***
a_hinc -0.235266 0.013291 -17.70 < 2e-16 ***
P_NONWHT:a_hinc 0.093417 0.009876 9.46 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) dc1980 dc1990 dc2000 dc2010 P_NONWHT a_hinc
decade1980 -0.693
decade1990 -0.727 0.501
decade2000 -0.728 0.502 0.530
decade2010 -0.714 0.511 0.517 0.518
P_NONWHT 0.016 0.007 -0.016 -0.015 0.006
a_hinc -0.023 -0.011 0.023 0.022 -0.009 0.221
P_NONWHT:_h 0.155 0.035 -0.134 -0.129 0.003 0.155 -0.233
convergence code: 0
Model failed to converge with max|grad| = 0.00181132 (tol = 0.001, component 1)
Modelo binomial negativo
Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) ['glmerMod']
Family: Negative Binomial(25181.5) ( log )
Formula: R_VAC ~ decade + P_NONWHT + a_hinc + P_NONWHT * a_hinc + offset(HU_ln) + (1 | decade/TRTID10)
Data: scaled.mydata
AIC BIC logLik deviance df.resid
34522.1 34588.7 -17250.1 34500.1 3131
Scaled residuals:
Min 1Q Median 3Q Max
-2.24213 -0.10816 -0.00724 0.06928 0.68145
Random effects:
Groups Name Variance Std.Dev.
TRTID10:decade (Intercept) 4.635e-01 6.808e-01
decade (Intercept) 1.532e-11 3.914e-06
Number of obs: 3142, groups: TRTID10:decade, 3142; decade, 5
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.612279 0.028946 -124.79 < 2e-16 ***
decade1980 0.302897 0.040392 7.50 6.43e-14 ***
decade1990 1.088211 0.039963 27.23 < 2e-16 ***
decade2000 1.036437 0.039884 25.99 < 2e-16 ***
decade2010 1.345227 0.039518 34.04 < 2e-16 ***
P_NONWHT 0.175216 0.012985 13.49 < 2e-16 ***
a_hinc -0.235274 0.013298 -17.69 < 2e-16 ***
P_NONWHT:a_hinc 0.093417 0.009879 9.46 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Correlation of Fixed Effects:
(Intr) dc1980 dc1990 dc2000 dc2010 P_NONWHT a_hinc
decade1980 -0.693
decade1990 -0.728 0.501
decade2000 -0.728 0.502 0.530
decade2010 -0.715 0.512 0.517 0.518
P_NONWHT 0.016 0.007 -0.016 -0.015 0.006
a_hinc -0.023 -0.011 0.023 0.022 -0.009 0.221
P_NONWHT:_h 0.154 0.035 -0.134 -0.129 0.003 0.155 -0.233
Testes de Poisson DHARMa
One-sample Kolmogorov-Smirnov test
data: simulationOutput$scaledResiduals
D = 0.044451, p-value = 8.104e-06
alternative hypothesis: two-sided
DHARMa zero-inflation test via comparison to expected zeros with simulation under H0 = fitted model
data: simulationOutput
ratioObsExp = 1.3666, p-value = 0.159
alternative hypothesis: more
Testes DHARMa binomiais negativos
One-sample Kolmogorov-Smirnov test
data: simulationOutput$scaledResiduals
D = 0.04263, p-value = 2.195e-05
alternative hypothesis: two-sided
DHARMa zero-inflation test via comparison to expected zeros with simulation under H0 = fitted model
data: simulationOutput2
ratioObsExp = 1.376, p-value = 0.174
alternative hypothesis: more
DHARMa parcelas
Poisson
Binomial negativo
Questões estatísticas
Como ainda estou descobrindo os GLMMs, estou me sentindo insegura quanto à especificação e interpretação. Eu tenho algumas questões:
Parece que meus dados não suportam o uso de um modelo de Poisson e, portanto, estou melhor com o binômio negativo. No entanto, recebo constantemente avisos de que meus modelos binomiais negativos atingem seu limite de iteração, mesmo quando eu aumento o limite máximo. "Em theta.ml (Y, mu, pesos = objeto @ resp $ pesos, limite = limite,: limite de iteração atingido." Isso ocorre usando algumas especificações diferentes (por exemplo, modelos mínimo e máximo para efeitos fixos e aleatórios). Eu também tentei remover discrepantes no meu dependente (bruto, eu sei!), Já que o 1% superior dos valores é muito discrepante (99% inferior variam de 0 a 1012, 1% superior a 1013-5213). não tem nenhum efeito nas iterações e muito pouco efeito nos coeficientes.Não incluo esses detalhes aqui. Os coeficientes entre Poisson e o binômio negativo também são bastante semelhantes. Essa falta de convergência é um problema? O modelo binomial negativo é um bom ajuste? Também executei o modelo binomial negativo usandoO AllFit e nem todos os otimizadores emitem esse aviso (bobyqa, Nelder Mead e nlminbw não).
A variação para o efeito fixo da minha década é consistentemente muito baixa ou 0. Entendo que isso pode significar que o modelo está super ajustado. Tirar uma década dos efeitos fixos aumenta a variação do efeito aleatório da década para 0,2620 e não afeta muito os coeficientes de efeitos fixos. Há algo de errado em deixá-lo dentro? Estou bem interpretando-o como simplesmente não sendo necessário para explicar a variação da observação.
Esses resultados indicam que eu deveria tentar modelos inflados com zero? A DHARMa parece sugerir que a inflação zero pode não ser o problema. Se você acha que eu deveria tentar de qualquer maneira, veja abaixo.
Perguntas R
Eu gostaria de experimentar modelos inflados com zero, mas não tenho certeza de qual pacote implementa efeitos aleatórios aninhados para Poisson inflado com zero e GLMMs binomiais negativos. Eu usaria o glmmADMB para comparar o AIC com modelos inflados por zero, mas ele é restrito a um único efeito aleatório, portanto não funciona para este modelo. Eu poderia tentar o MCMCglmm, mas não conheço as estatísticas bayesianas, o que também não é atraente. Alguma outra opção?
Posso exibir coeficientes exponenciados no resumo (modelo) ou preciso fazê-lo fora do resumo, como fiz aqui?
bobyqa
otimizador e não produziu nenhum aviso. Qual é o problema então? Basta usar bobyqa
.
bobyqa
converge melhor que o otimizador padrão (e acho que li em algum lugar que ele se tornará padrão nas versões futuras do lme4
). Não acho que você precise se preocupar com a não convergência com o otimizador padrão, se ele convergir bobyqa
.
decade
tanto fixo quanto aleatório não faz sentido. Tenha-o como fixo e inclua-o apenas(1 | decade:TRTID10)
como aleatório (o que equivale a(1 | TRTID10)
supor que o seuTRTID10
não tenha os mesmos níveis por décadas diferentes) ou remova-o dos efeitos fixos. Com apenas 4 níveis, é melhor consertá-lo: a recomendação usual é ajustar efeitos aleatórios se houver 5 níveis ou mais.