Bloque I · Fundamentos · Módulo 5 de 20
Suavizados: P-splines y no linealidad
Comprender los P-splines de Eilers & Marx (1996) como herramienta de suavizado en GAMLSS, usar pb() y cy() para relaciones no lineales, y elegir el parámetro de suavizado vía GAIC o validación cruzada.
Datos: cementos, dbbmi
1. La vida no es lineal
En Cementos del Cauca, el equipo de control de calidad estudia la relación
entre la temperatura de curado y la dureza del cemento. Un analista junior
propone una regresión lineal: dureza ~ temperatura. La línea recta muestra
una pendiente negativa marginal, pero el scatter plot revela algo que la
recta oculta: la dureza es máxima alrededor de 25°C y decae en ambos
extremos. La relación es cuadrática invertida, no lineal.
Peor aún, la variabilidad de la dureza aumenta en los extremos temperatura: a 5°C y a 60°C, las mediciones son mucho más dispersas que a 25°C. Un modelo lineal con varianza constante no puede capturar ni la media no lineal ni la heterocedasticidad.
Objetivo
Aprender a usar P-splines (Eilers & Marx, 1996) dentro de GAMLSS para modelar relaciones no lineales en cualquier parámetro de la distribución, controlar el grado de suavizado, y diagnosticar si el suavizado es adecuado.
2. P-splines: la idea fundamental
Los P-splines (penalized B-splines) combinan dos ideas:
-
B-splines: funciones base polinómicas a trozos definidas por un conjunto de nodos (knots) equiespaciados. Cada B-spline es no nula solo en un intervalo local, lo que los hace computacionalmente eficientes.
-
Penalización de diferencias: se imponen una penalización sobre las diferencias entre coeficientes adyacentes para controlar la rugosidad.
El predictor suavizado para un parámetro se escribe:
donde son las funciones base B-spline y la penalización es:
con el operador de diferencias de orden (típicamente ) y el parámetro de suavizado que controla el balance entre fidelidad a los datos y suavidad.
Definir los nodos
Por defecto, pb() coloca 20 nodos equiespaciados en el rango de x. Para datos con pocos puntos, se reduce automáticamente.
Construir las bases B-spline
Se generan M funciones base polinómicas de grado 3 (cúbicas) centradas en los nodos. Cada base es local: no nula solo en un vecindario.
Penalizar las diferencias
La penalización de 2ª diferencia obliga a los coeficientes a cambiar suavemente. λ grande → línea recta; λ pequeño → curva muy flexible.
Estimar λ por GAIC o CV
gamlss() busca el λ óptimo minimizando el GAIC o por validación cruzada generalizada (GCV). El usuario puede fijar λ con el argumento spar.
3. Sintaxis en gamlss: pb() y cy()
La función pb() (penalized B-spline) es la interfaz principal:
gamlss(y ~ pb(x), family = NO, data = df)
Esto suaviza la relación entre x e y en el predictor de . Para
suavizar otros parámetros:
gamlss(y ~ pb(x),
sigma.formula = ~ pb(x), # suavizado para sigma
nu.formula = ~ pb(x), # suavizado para nu
family = BCT, data = df)
pb() vs lo() vs s()
pb() es la función recomendada en gamlss para suavizado univariado.
lo() usa loess (local regression) y s() llama a smooth.construct de mgcv.
En la práctica, pb() es la más estable y eficiente dentro de gamlss().
4. Caso de estudio: Cementos del Cauca
Dataset: cementos.csv
Resistencia (dureza) de cementos a diferentes temperaturas de curado. 400 observaciones. Simulado con semilla 2026.
| Variable | Tipo | Descripción |
|---|---|---|
| temperatura | numérica (°C) | Temperatura de curado del cemento |
| dureza | numérica positiva | Dureza medida en MPa |
Ajustemos tres modelos crecientes en complejidad:
El modelo 3 (P-splines para y ) es claramente superior:
respecto al lineal. El gráfico de term.plot()
muestra:
- Para : una curva invertida con máximo en ~25°C, confirmando la intuición física de que existe una temperatura óptima de curado.
- Para : una forma de V con mínimo en ~25°C: la dispersión es mínima en la temperatura óptima y máxima en los extremos.
La potencia del suavizado distribucional
El modelo 3 revela algo que ni el modelo 1 ni el modelo 2 podían mostrar: la precisión de las mediciones depende de la temperatura. A 25°C, las mediciones son consistentes (baja ); a 5°C o 60°C, son erráticas (alta ). Esta información es crucial para el control de calidad: saber dónde el proceso es más predecible permite optimizar la temperatura de operación.
5. Control del suavizado
El parámetro controla cuánto se suaviza la curva. En gamlss(),
se estima automáticamente minimizando el GAIC. Pero el usuario puede
intervenir:
Tip de los autores: P-splines y el principio de parsimonia
Eilers & Marx (1996), creadores de los P-splines (penalized B-splines), recomiendan empezar con un número grande de nodos (20-40) y dejar que la penalización controle el suavizado automáticamente. "No busques el número óptimo de nodos: busca el óptimo. La penalización es lo que evita el sobreajuste, no la escasez de nodos." — P. Eilers, curso en Leiden (2018). En GAMLSS, pb() implementa exactamente esta filosofía: estima por GAIC o GCV de forma automática.
6. Splines cíclicos para datos estacionales
Para datos con periodicidad (ej. demanda mensual con estacionalidad anual),
cy() crea un spline cíclico que fuerza continuidad en los extremos:
gamlss(demanda ~ cy(mes, cyclic = TRUE), family = GA, data = df)
Esto es esencial para modelar la estacionalidad en la demanda de inventarios (Módulo 13) o la frecuencia de siniestros por mes (Módulo 17).
7. Cierre
¿Qué hace la penalización de diferencias en un P-spline?
En el caso de Cementos del Cauca, ¿por qué el modelo 3 (P-splines para μ y σ) es mejor que el modelo 2 (P-spline solo para μ)?
¿Qué modelarías tú?
Toma una relación no lineal de tu dominio (temperatura vs rendimiento,
experiencia vs salario, dosis vs respuesta). Ajusta un modelo con pb()
para y otro con pb() también para . ¿La dispersión cambia con
la covariable? Si sí, ¿qué implicancias tiene para tus decisiones?
Referencias: Eilers & Marx (1996), Stat. Science 11(2); Stasinopoulos et al. (2017), Cap. 5; Rigby et al. (2019), Cap. 3.