DHARMa: residuos simulados
Residuos simulados para validar supuestos, detectar outliers y documentar desviaciones del modelo.
Datasets: progesterone (concentraciones hormonales por ciclo menstrual)
Objetivos de aprendizaje
- Ajustar un LMM con pendiente aleatoria sobre datos hormonales.
- Explicar por qué los residuos "crudos" de un LMM son difíciles de interpretar.
- Generar y leer los residuos simulados de DHARMa (QQ-plot, residual vs. ajustado).
- Aplicar pruebas formales de uniformidad, dispersión y outliers.
- Documentar hallazgos diagnósticos con recomendaciones claras para el equipo clínico.
¿Por qué no basta con mirar los residuos "a mano"?
En un modelo de regresión simple, revisar residuos es sencillo: residuo vs. ajustado, QQ-plot, listo. En un LMM la historia es más compleja porque hay dos fuentes de variación (efectos aleatorios y residual) y los residuos "crudos" () no siempre siguen una distribución conocida de forma simple, especialmente con tamaños de muestra pequeños o estructuras de covarianza complejas.
El paquete DHARMa (Diagnostics for HierARchical Models) resuelve esto con residuos simulados: simula muchas réplicas de la respuesta a partir del modelo ajustado, y compara dónde cae el valor observado dentro de esa distribución simulada. El resultado es un residuo con una interpretación uniforme(0,1) bajo un modelo correcto, sin importar la complejidad del LMM/GLMM subyacente.
El dataset de progesterona
Los niveles de progesterona (logp) siguen una curva característica a lo largo del ciclo menstrual: bajos en la fase folicular, con un pico marcado tras la ovulación. Ajustamos un LMM con time y group (por ejemplo, mujeres con anovulación vs. ciclos normales) como efectos fijos, y un intercepto y pendiente aleatorios por mujer.
Qué mirar en los gráficos de DHARMa
plot(sim) produce dos paneles clave:
- QQ-plot de residuos uniformes: si el modelo es adecuado, los puntos deben caer sobre la línea diagonal. Desviaciones sistemáticas sugieren mala especificación de la distribución o de la parte sistemática del modelo.
- Residual vs. predicho: busca patrones (curvas, abanicos). Un patrón en forma de abanico sugiere heterocedasticidad no modelada; una curva sugiere que falta un término no lineal (por ejemplo, un spline, Módulo 9).
Las pruebas formales complementan la inspección visual:
testUniformity(): prueba de Kolmogorov-Smirnov sobre los residuos simulados, un valor p pequeño indica que no siguen Uniforme(0,1).testDispersion(): compara la varianza observada con la simulada, detecta sobre/sub-dispersión.testOutliers(): identifica observaciones que caen fuera del rango de las simulaciones (outliers "DHARMa").
De los gráficos a las recomendaciones
Un diagnóstico no termina en "el modelo está mal" o "el modelo está bien": el valor real está en traducir los hallazgos en acciones concretas, ¿agregar un término no lineal?, ¿revisar una observación específica con el equipo clínico?, ¿reportar el hallazgo como limitación si no afecta las conclusiones principales?
Flujo de análisis
- 1
Ajustar
Especificar y ajustar el LMM con la estructura de efectos fijos/aleatorios que mejor representa el diseño del estudio.
- 2
Simular
simulateResiduals() genera réplicas de la respuesta bajo el modelo ajustado (típicamente 250-1000 simulaciones).
- 3
Inspeccionar
plot(sim) para revisar el QQ-plot y el patrón de residuos vs. predichos.
- 4
Probar formalmente
testUniformity(), testDispersion() y testOutliers() para cuantificar las desviaciones observadas.
- 5
Documentar
Traducir cada hallazgo en una recomendación: ajustar el modelo, revisar un dato puntual, o reportar como limitación.
| Función | Qué evalúa | Valor p pequeño sugiere | Posible acción |
|---|---|---|---|
| testUniformity() | Los residuos simulados siguen U(0,1) | Mala especificación de la distribución o la media | Revisar familia/enlace, agregar términos no lineales |
| testDispersion() | Varianza observada vs. simulada | Sobre/sub-dispersión | Agregar efecto aleatorio adicional o término de dispersión |
| testOutliers() | Observaciones fuera del rango simulado | Presencia de outliers influyentes | Inspeccionar esos sujetos/observaciones con el equipo clínico |
Info: ¿cuántas simulaciones?
n = 250 suele ser suficiente para exploración rápida; para el reporte final usa n = 1000 o más, así las pruebas (KS, dispersión) son más estables y reproducibles.
Atención: un "p < 0.05" no es un veredicto automático
Con tamaños de muestra grandes, testUniformity() puede dar p pequeño ante desviaciones triviales. Combina siempre la prueba formal con la inspección visual y el juicio clínico sobre la magnitud del problema.
Repaso rápido: flashcards
Autoevaluación
1. ¿Qué distribución deberían seguir los residuos simulados de DHARMa si el modelo es correcto?
2. En plotResiduals(sim, form = prog$time), ¿qué estamos evaluando?
3. testOutliers(sim) señala varias observaciones como outliers. ¿Cuál es la mejor primera acción?
Apéndice: Diagnóstico por influencia — Distancia de Cook y DFBETAS
Más allá de los residuos, un análisis completo evalúa la influencia de observaciones y sujetos sobre los estimadores. Correa y Salazar (2016, Cap. 5) llaman a esto "diagnósticos vía eliminación de observaciones".
Distancia de Cook generalizada para LMM
Para el sujeto : D_i = \frac{(\hat\boldsymbol\beta_{(-i)} - \hat\boldsymbol\beta)^\top \widehat{\text{Var}}(\hat\boldsymbol\beta)^{-1} (\hat\boldsymbol\beta_{(-i)} - \hat\boldsymbol\beta)}{p} donde \hat\boldsymbol\beta_{(-i)} son los estimadores al excluir el sujeto y es el número de efectos fijos. Heurístico: sugiere influencia excesiva.
Apéndice: Diagnóstico por influencia — Distancia de Cook y DFBETAS
Más allá de los residuos, un análisis de diagnóstico completo debe evaluar la influencia de observaciones y sujetos sobre los estimadores del modelo. Correa y Salazar (2016, Cap. 5) denominan a esto "diagnósticos vía eliminación de observaciones".
Tipos de influencia en modelos mixtos
- Influencia en los efectos fijos (\hat\boldsymbol{\beta}): cuánto cambiaría si elimináramos el sujeto o la observación .
- Influencia en los efectos aleatorios (\hat\mathbf{b}_i): cuánto cambia la predicción individual.
- Influencia en la función de verosimilitud: distancia de Cook generalizada para LMM.
El paquete influence.ME (Nieuwenhuis et al., 2012) implementa estas medidas para modelos lmer.
Distancia de Cook generalizada para LMM
La distancia de Cook para el sujeto en un LMM se define como: D_i = \frac{(\hat\boldsymbol\beta_{(-i)} - \hat\boldsymbol\beta)^\top \text{Var}(\hat\boldsymbol\beta)^{-1} (\hat\boldsymbol\beta_{(-i)} - \hat\boldsymbol\beta)}{p} donde \hat\boldsymbol\beta_{(-i)} son los estimadores al excluir el sujeto , y es el número de efectos fijos. Un valor (criterio heurístico) sugiere influencia excesiva.