Tengo algunas preguntas sobre la especificación e interpretación de los GLMM. 3 preguntas son definitivamente estadísticas y 2 son más específicamente sobre R. Estoy publicando aquí porque en última instancia, creo que la cuestión es la interpretación de los resultados GLMM.
Actualmente estoy intentando montar una GLMM. Estoy utilizando los datos del censo de EE.UU. del Base de datos de trazos longitudinales . Mis observaciones son secciones censales. Mi variable dependiente es el número de viviendas vacías y estoy interesado en la relación entre las vacantes y las variables socioeconómicas. El ejemplo es sencillo, sólo se utilizan dos efectos fijos: el porcentaje de población no blanca (raza) y la renta media de los hogares (clase), más su interacción. Me gustaría incluir dos efectos aleatorios anidados: tramos dentro de las décadas y décadas, es decir, (década/tramo). Estoy considerando estos efectos aleatorios en un esfuerzo por controlar la autocorrelación espacial (es decir, entre tramos) y temporal (es decir, entre décadas). Sin embargo, también me interesa la década como efecto fijo, por lo que también la incluyo como factor fijo.
Dado que mi variable independiente es una variable de recuento de enteros no negativos, he intentado ajustar GLMMs de poisson y binomial negativa. Estoy utilizando el logaritmo de las unidades de vivienda totales como compensación. Esto significa que los coeficientes se interpretan como el efecto sobre la tasa de vacantes, no sobre el número total de viviendas vacías.
Actualmente tengo los resultados de un GLMM de Poisson y uno binomial negativo estimados con glmer y glmer.nb de lme4 . La interpretación de los coeficientes tiene sentido para mí en base a mi conocimiento de los datos y del área de estudio.
Si quiere el datos y guión están en mi Github . El guión incluye más de las investigaciones descriptivas que hice antes de construir los modelos.
Aquí están mis 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
Pruebas 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
Pruebas binomiales negativas DHARMa
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
Parcelas DHARMa
Poisson
Binomio negativo
Preguntas de estadística
Dado que todavía estoy descubriendo los GLMM, me siento inseguro en cuanto a la especificación y la interpretación. Tengo algunas preguntas:
-
Parece que mis datos no admiten el uso de un modelo de Poisson y, por lo tanto, es mejor utilizar el modelo binomial negativo. Sin embargo, recibo constantemente advertencias de que mis modelos binomiales negativos alcanzan su límite de iteración, incluso cuando aumento el límite máximo. "En theta.ml(Y, mu, pesos = objeto@resp$pesos, límite = límite, : límite de iteración alcanzado". Esto ocurre utilizando bastantes especificaciones diferentes (es decir, modelos mínimos y máximos tanto para efectos fijos como aleatorios). También he probado a eliminar los valores atípicos en mi dependiente (¡bruto, lo sé!), ya que el 1% superior de los valores son muy atípicos (el 99% inferior va de 0 a 1012, el 1% superior de 1013 a 5213). Eso no tuvo ningún efecto en las iteraciones y tampoco tuvo mucho efecto en los coeficientes. No incluyo esos detalles aquí. Los coeficientes entre Poisson y la binomial negativa también son bastante similares. ¿Es esta falta de convergencia un problema? ¿Es el modelo binomial negativo un buen ajuste? También he ejecutado el modelo binomial negativo utilizando AllFit y no todos los optimizadores lanzan esta advertencia (bobyqa, Nelder Mead y nlminbw no lo hicieron).
-
La varianza de mi efecto fijo de década es sistemáticamente muy baja o 0. Entiendo que esto podría significar que el modelo está sobreajustado. Sacar la década de los efectos fijos aumenta la varianza del efecto aleatorio de la década a 0,2620 y no tiene mucho efecto en los coeficientes del efecto fijo. ¿Hay algo malo en dejarlo? Me parece bien interpretar que simplemente no es necesario para explicar la varianza entre observaciones.
-
¿Indican estos resultados que debería probar con modelos de inflación cero? DHARMa parece sugerir que la inflación cero puede no ser el problema. Si cree que debería intentarlo de todos modos, vea más abajo.
Preguntas de la R
-
Estaría dispuesto a probar modelos con inflación cero, pero no estoy seguro de qué paquete implanta efectos aleatorios anidados para GLMMs de Poisson y binomial negativa con inflación cero. Utilizaría glmmADMB para comparar el AIC con modelos de inflación cero, pero está restringido a un solo efecto aleatorio, por lo que no funciona para este modelo. Podría probar con MCMCglmm, pero no sé de estadística bayesiana, así que tampoco es atractivo. ¿Alguna otra opción?
-
¿Puedo mostrar los coeficientes exponenciados dentro de summary(model), o tengo que hacerlo fuera de summary como he hecho aquí?