Modelos Mixtos

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 B1(t),…,Bk(t)B_1(t), \dots, B_k(t):

f(time)=∑j=1kγjBj(time)f(\text{time}) = \sum_{j=1}^{k} \gamma_j B_j(\text{time})

Lo notable es que, una vez definidas las funciones base (bs(time, degree = 3, knots = ...)), el modelo sigue siendo lineal en los parámetros γj\gamma_j, 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

  1. Especificar: logp ~ bs(time, degree=3, knots=c(-6,0,6)) * group + (time | id), spline cúbico interactuando con grupo, efectos aleatorios por mujer.
  2. 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.
  3. Diagnosticar (Módulo 6): simulateResiduals() + plot(sim), ¿el spline elimina el patrón curvo que veíamos con el término lineal?
  4. 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 (γ1,γ2,…\gamma_1, \gamma_2, \dots) 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

    1. Explorar

    Graficar las trayectorias individuales de logp vs. time: confirmar la forma no lineal (pico posovulatorio), Módulo 2.

  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

    3. Comparar alternativas

    AIC/BIC del modelo con spline vs. lineal/cuadrático, todos con ML, Módulo 8.

  4. 4

    4. Diagnosticar

    simulateResiduals() + plot(sim): verificar que el spline corrige el patrón curvo en los residuos, Módulo 6.

  5. 5

    5. Predecir y comunicar

    Curvas predichas por grupo con bandas de incertidumbre, interpretadas en términos fisiológicos y clínicos.

Mapa del curso: qué módulo resuelve qué pregunta
PreguntaMóduloHerramienta
¿Cómo modelar la heterogeneidad entre sujetos?Módulo 4Efectos aleatorios (intercepto/pendiente)
¿Cómo modelar la correlación intra-sujeto residual?Módulo 5Estructuras CS / AR(1) / UN
¿El modelo cumple los supuestos?Módulo 6Residuos simulados (DHARMa)
¿Qué hacer si la respuesta no es continua?Módulo 7GLMM (binomial, Poisson)
¿Qué tan complejo debe ser el modelo?Módulo 8AIC/BIC/LRT
¿Cómo modelar relaciones no lineales en el tiempo?Módulo 9Splines (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.

Ajustar un LMM con spline cúbico en el tiempo
Comparar contra un término lineal y diagnosticar con DHARMa
Curva predicha por grupo con banda de incertidumbre

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?