Estoy ajustando un modelo de efectos aleatorios con glmer
algunos datos comerciales. El objetivo es analizar el desempeño de ventas por distribuidor, teniendo en cuenta la variación regional. Tengo las siguientes variables:
distcode
: ID de distribuidor, con aproximadamente 800 nivelesregion
: ID geográfica de nivel superior (norte, sur, este, oeste)zone
: geografía de nivel medio anidada dentroregion
, alrededor de 30 niveles en totalterritory
: geografía de bajo nivel anidada dentro dezone
unos 150 niveles
Cada distribuidor opera en un solo territorio. La parte difícil es que se trata de datos resumidos, con un punto de datos por distribuidor. Así que tengo 800 puntos de datos y estoy tratando de ajustar (al menos) 800 parámetros, aunque de manera regular.
He ajustado un modelo de la siguiente manera:
glmer(ninv ~ 1 + (1|region/zone/territory) + (1|distcode), family=poisson)
Esto se ejecuta sin problemas, aunque imprime una nota:
El número de niveles de un factor de agrupación para los efectos aleatorios es igual a n, el número de observaciones
¿Es esto algo sensato? Obtengo estimaciones finitas de todos los coeficientes, y el AIC tampoco es irrazonable. Si pruebo un poisson GLMM con el enlace de identidad, el AIC es mucho peor, por lo que el enlace de registro es al menos un buen punto de partida.
Si trazo los valores ajustados frente a la respuesta, obtengo lo que es esencialmente un ajuste perfecto, lo que supongo es porque tengo un punto de datos por distribuidor. ¿Es razonable o estoy haciendo algo completamente tonto?
Esto está utilizando datos de un mes. Puedo obtener datos para varios meses y obtener alguna replicación de esa manera, pero tendría que agregar nuevos términos para la variación de mes a mes y las posibles interacciones, ¿correcto?
ETA: volví a ejecutar el modelo anterior, pero sin una family
discusión (por lo tanto, solo un LMM gaussiano en lugar de un GLMM). Ahora lmer
me dio el siguiente error:
Error en (función (fr, FL, inicio, REML, detallado): el número de niveles de un factor de agrupación para los efectos aleatorios debe ser menor que el número de observaciones
Entonces supongo que no estoy haciendo algo sensato, ya que cambiar la familia no debería tener un efecto. Pero la pregunta ahora es, ¿por qué funcionó en primer lugar?
fuente
glmer
embargo, expliqué por qué esto funciona en el caso de todos modos (a pesar de no estar demasiado contento con eso).Un nivel por observación puede ser muy útil si ha dispersado los datos de conteo como su variable de respuesta. Es equivalente a decir que espera que sus datos de recuento provengan de una distribución lognormal de Poisson, es decir, que el parámetro lambda de su distribución Poisson no está completamente determinado por las variables predictoras en su modelo y que las posibilidades se distribuyen de manera lognormal.
Ben Bolker, uno de los desarrolladores de lme4, ha hecho dos ejemplos de tutoriales con esto. El primero, con datos sintéticos, entra un poco más en detalles. Puedes encontrar un pdf aquí . También realizó un análisis exploratorio de datos con datos reales que involucran búhos (código pdf y R disponible desde aquí ).
fuente
glmer
una manera conceptual.distributor
es un efecto de interés: quiero ver cómo se desempeñan los distribuidores en relación entre sí al permitir otras variables. Por lo tanto, es más comparable a un modelo mixto lineal convencional, donde el sobreajuste es una preocupación genuina.