Aproximación con splines (Curva no paramétrica)
Un caso clínico completo que integra especificación, splines, diagnóstico DHARMa, selección y comunicación de resultados.
Datasets: progesterone (concentraciones hormonales por ciclo menstrual)
Objetivos de aprendizaje
- Reconocer cuándo una relación tiempo-respuesta no lineal requiere splines.
- Ajustar un LMM con splines (bs()) y efectos aleatorios.
- Aplicar el flujo completo del curso: especificar, ajustar, comparar, diagnosticar.
- Generar predicciones marginales con bandas de incertidumbre.
- Comunicar resultados clínicos de forma clara, integrando hallazgos estadísticos y fisiológicos.
El caso: una curva que no es una línea recta
A lo largo de este curso hemos construido, pieza por pieza, las herramientas para analizar datos longitudinales: efectos aleatorios (Módulo 4), estructuras de covarianza (Módulo 5), diagnóstico (Módulo 6), familias no gaussianas (Módulo 7) y selección de modelos (Módulo 8). Este módulo integra todo en un caso clínico completo.
Los niveles de progesterona durante el ciclo menstrual no siguen una tendencia lineal: suben bruscamente tras la ovulación y caen antes de la menstruación. Un modelo logp ~ time + (time | id) asumiría una relación lineal con el tiempo, claramente inadecuada aquí. Necesitamos una función flexible pero suave.
Splines: curvas suaves dentro de un modelo lineal
Un spline representa una función no lineal de time como una combinación lineal de funciones base :
Lo notable es que, una vez definidas las funciones base (bs(time, degree = 3, knots = ...)), el modelo sigue siendo lineal en los parámetros , por lo tanto cabe perfectamente dentro de lmer(). Los nodos (knots) controlan dónde la curva tiene mayor flexibilidad; para progesterona, ubicarlos cerca de la ovulación (tiempo 0) permite capturar el pico y la caída posterior.
El flujo integrador
- Especificar:
logp ~ bs(time, degree=3, knots=c(-6,0,6)) * group + (time | id), spline cúbico interactuando con grupo, efectos aleatorios por mujer. - Comparar (Módulo 8): ¿el spline mejora el AIC/BIC frente a un término lineal o cuadrático en
time? Reajustar con ML para comparar. - Diagnosticar (Módulo 6):
simulateResiduals()+plot(sim), ¿el spline elimina el patrón curvo que veíamos con el término lineal? - Predecir y comunicar: generar una curva predicha por grupo con bandas de confianza, e interpretarla en términos fisiológicos (momento e intensidad del pico, diferencias entre grupos).
De los coeficientes a la curva: por qué predecimos
Los coeficientes individuales de un spline () no tienen interpretación clínica directa, son artefactos de la base matemática elegida. Lo que sí se comunica es la curva predicha completa: "el pico de progesterona ocurre alrededor del día X, con una concentración Y, y el grupo A alcanza valores significativamente más altos que el grupo B en la fase lútea". Las bandas de confianza (a partir de la varianza de predicción o de bootMer()) comunican la incertidumbre de esa curva.
Cerrando el círculo
Este caso resume la filosofía del curso: el objetivo no es ajustar "el modelo correcto" en abstracto, sino un modelo que (a) represente razonablemente el fenómeno biológico, (b) pase los chequeos de diagnóstico, (c) sea defendible frente a alternativas razonables (selección de modelos), y (d) cuyos resultados puedan comunicarse con claridad a quienes toman decisiones clínicas.
Flujo de análisis
- 1
1. Explorar
Graficar las trayectorias individuales de logp vs. time: confirmar la forma no lineal (pico posovulatorio), Módulo 2.
- 2
2. Especificar con splines
bs(time, degree=3, knots=...) * group + (time | id): flexibilidad en el tiempo, efectos aleatorios por mujer, Módulo 4.
- 3
3. Comparar alternativas
AIC/BIC del modelo con spline vs. lineal/cuadrático, todos con ML, Módulo 8.
- 4
4. Diagnosticar
simulateResiduals() + plot(sim): verificar que el spline corrige el patrón curvo en los residuos, Módulo 6.
- 5
5. Predecir y comunicar
Curvas predichas por grupo con bandas de incertidumbre, interpretadas en términos fisiológicos y clínicos.
| Pregunta | Módulo | Herramienta |
|---|---|---|
| ¿Cómo modelar la heterogeneidad entre sujetos? | Módulo 4 | Efectos aleatorios (intercepto/pendiente) |
| ¿Cómo modelar la correlación intra-sujeto residual? | Módulo 5 | Estructuras CS / AR(1) / UN |
| ¿El modelo cumple los supuestos? | Módulo 6 | Residuos simulados (DHARMa) |
| ¿Qué hacer si la respuesta no es continua? | Módulo 7 | GLMM (binomial, Poisson) |
| ¿Qué tan complejo debe ser el modelo? | Módulo 8 | AIC/BIC/LRT |
| ¿Cómo modelar relaciones no lineales en el tiempo? | Módulo 9 | Splines (bs()) |
Tip: los nodos (knots) son decisiones de diseño
Ubicar los nodos cerca de regiones donde esperas cambios de curvatura (p. ej. el día de la ovulación) suele dar mejores resultados que repartirlos uniformemente. Justifica tu elección con conocimiento del fenómeno, no solo con el ajuste.
Repaso rápido: flashcards
Autoevaluación
1. Las trayectorias de progesterone muestran un pico marcado seguido de una caída. ¿Por qué un término lineal en time sería insuficiente?
2. ¿Qué evidencia, en conjunto, respaldaría preferir el modelo con spline sobre el lineal?
3. Al comunicar los resultados del modelo con spline a un equipo clínico, ¿qué es lo más apropiado?