Presentación interactiva
De regresión lineal a B‑splines
Diapositivas interactivas con sliders en tiempo real. Mueve los controles para ver cómo cambia el ajuste al variar ruido, nodos y penalización λ.
1 de 5 — motivación
¿Por qué una recta no siempre alcanza?
Mueve los controles para ver cómo el modelo lineal falla cuando la relación real no es lineal.
20
2
EMC: calculando…
2 de 5 — fundamentos
El método de mínimos cuadrados
OLS minimiza la suma de errores al cuadrado. La solución viene de una proyección ortogonal sobre el espacio columna de X.
S(β) = (y − Xβ)ᵀ(y − Xβ)
→ dS/dβ = 0 →
β̂ = (XᵀX)⁻¹ Xᵀy
→ dS/dβ = 0 →
β̂ = (XᵀX)⁻¹ Xᵀy
OLSModelo lineal
X = [1, x]. Una sola pendiente para todo el rango. Rápido pero rígido.
B-splineModelo flexible
X = bs(x, df=10). La misma fórmula β̂, pero X es mucho más rica.
# R — mínimos cuadrados manual
X <- cbind(1, x) # matriz de diseño
beta <- solve(t(X) %*% X) %*% t(X) %*% y
y_hat <- X %*% beta
X <- cbind(1, x) # matriz de diseño
beta <- solve(t(X) %*% X) %*% t(X) %*% y
y_hat <- X %*% beta
Clave: lo que cambia entre OLS y splines es la matriz X, no la mecánica algebraica.
3 de 5 — splines lineales
Splines lineales: dividir para vencer
Agrega o quita nodos y observa cómo el modelo adapta su pendiente en cada tramo.
3
# función base del spline lineal
ramp <- function(x, xi) pmax(x - xi, 0)
X <- cbind(1, x, sapply(knots, ramp, x = x))
beta <- solve(t(X) %*% X) %*% t(X) %*% y
ramp <- function(x, xi) pmax(x - xi, 0)
X <- cbind(1, x, sapply(knots, ramp, x = x))
beta <- solve(t(X) %*% X) %*% t(X) %*% y
EMC: calculando…
4 de 5 — B-splines
B-splines: suavidad + soporte local
λ controla cuánto se penaliza la variación de coeficientes. Mayor λ → más suave pero más sesgado.
6
5
# R — B-spline con penalización ridge
library(splines)
X <- bs(x, df = 10, degree = 3)
D <- diag(c(0, 0, rep(1, ncol(X)-2)))
beta <- solve(t(X)%*%X + lambda*D) %*% t(X) %*% y
library(splines)
X <- bs(x, df = 10, degree = 3)
D <- diag(c(0, 0, rep(1, ncol(X)-2)))
beta <- solve(t(X)%*%X + lambda*D) %*% t(X) %*% y
EMC: calculando…
5 de 5 — comparación
OLS vs. B-splines: el mismo motor, otra matriz X
Los tres modelos usan β̂ = (XᵀX)⁻¹Xᵀy. Lo que los diferencia es cómo construyen X.
OLSModelo rígido
X = [1, x]. Sesgo alto cuando la relación cambia de tramo.
B-splineModelo flexible
X = bs(x, df=10). Soporte local, estabilidad numérica, control con λ.
Conclusión: los B-splines generalizan la matriz de diseño X para ganar flexibilidad sin abandonar la proyección ortogonal.