Ir al contenido principal

Regresión con splines: guía práctica con Python y R

Guía práctica de la regresión con splines: cómo los polinomios a trozos y los nudos modelan relaciones no lineales, los tipos principales de splines y cómo ajustarlos en Python y R.
Actualizado 15 jun 2026  · 15 min leer

Explorar con IA

Abrir en ChatGPTAbrir en ClaudeAbrir en Perplexity

Ajustar una recta a datos que se curvan nunca es buena idea.

La regresión lineal asume que la relación entre tus predictores y el objetivo es una línea recta. Por desgracia, la mayoría de relaciones del mundo real no lo son. Piensa en la relación entre ingresos y gasto o entre tiempo y crecimiento: se curvan, se aplanan, vuelven a curvarse y cambian de dirección de formas que no se pueden representar con una única pendiente.

La regresión con splines resuelve esto permitiendo que la relación se doble donde lo necesite, sin ajustar una curva desbocada y sin restricciones. La idea es ajustar varios tramos polinómicos suaves a lo largo del rango del predictor y combinarlos en puntos concretos.

En este artículo verás los conceptos clave detrás de la regresión con splines, cómo los nudos controlan la flexibilidad, los principales tipos de splines y cómo aplicarlos en la práctica.

Antes de entrar en splines, echa un vistazo a nuestro tutorial que te enseñará todo lo que necesitas saber sobre regresión lineal simple.

¿Qué es la regresión con splines?

La regresión con splines es una técnica de regresión que modela relaciones no lineales usando funciones polinómicas a trozos unidas en puntos específicos llamados nudos.

En lugar de usar una sola ecuación para describir toda la relación, la regresión con splines divide el rango del predictor en piezas más pequeñas y ajusta un polinomio distinto en cada pieza. Estas piezas se encuentran en los nudos y las restricciones garantizan transiciones suaves.

El resultado final se sitúa entre dos extremos. Es más flexible que la regresión lineal, que solo puede trazar una recta a través de tus datos. Y es más estructurada que modelos no lineales completamente libres como redes neuronales profundas o métodos de kernel, que pueden ajustar casi cualquier cosa pero dicen poco sobre qué han ajustado.

Por eso los splines aparecen tan a menudo en estadística aplicada.

Por qué hace falta la regresión con splines

Los datos reales casi nunca siguen una línea recta.

La regresión lineal es el punto de partida por defecto, pero asume algo fuerte: el efecto de un predictor sobre el resultado se mantiene constante en todo el rango. Cuando la relación real se curva o cambia de dirección, una recta se queda corta. Obtienes errores en los extremos y un modelo incapaz de seguir el patrón.

La solución es usar un modelo más flexible. La regresión polinómica de alto grado es una opción: añades términos x^2, x^3, x^4 hasta que la curva se doble lo suficiente para encajar con tus datos. Pero los polinomios se vuelven inestables en los bordes al subir o bajar bruscamente donde hay pocos datos. Ese comportamiento se llama fenómeno de Runge y hace que los polinomios de alto grado sean arriesgados para predecir.

La regresión con splines está entre esos dos extremos.

Obtienes flexibilidad local donde los datos se doblan, sin la inestabilidad global de un único polinomio de alto grado. Cada tramo es un polinomio de bajo grado (normalmente cúbico), así que ninguna parte puede comportarse de forma inesperada. Y como los tramos se unen suavemente en los nudos, la curva global sigue pareciendo una función continua.

En resumen: un spline ofrece suficiente flexibilidad para seguir patrones complejos y suficiente estructura para comportarse bien en los extremos.

Cómo funciona la regresión con splines

La regresión con splines sigue siempre tres pasos sencillos.

  1. Divide el rango del predictor en regiones: eliges un conjunto de nudos a lo largo del eje del predictor. Estos nudos dividen el rango en intervalos. Si colocas tres nudos, obtienes cuatro regiones. Los nudos son las fronteras entre tramos.
  2. Ajusta un polinomio en cada región: dentro de cada intervalo, el modelo ajusta un polinomio de bajo grado. Cada región tiene sus propios coeficientes, de modo que la curva puede doblarse de forma diferente según la zona. Una región casi plana recibe un polinomio casi plano. Una región con curvatura fuerte recibe uno más curvado.
  3. Conecta las regiones: el modelo impone restricciones de continuidad en cada nudo. Los valores de ambos lados deben coincidir en el nudo, así que no hay saltos. En los splines cúbicos, también deben coincidir la primera y segunda derivada, lo que evita esquinas y cambios bruscos de curvatura.

Estas restricciones hacen que los splines parezcan una única curva suave que se dobla localmente pero fluye de forma continua por todo el rango del predictor. Visualmente, no puedes distinguir dónde acaba un polinomio y empieza el siguiente.

Los nudos, el grado del polinomio y las restricciones de continuidad definen el spline. Si cambias cualquiera de ellos, obtienes un tipo de spline distinto con propiedades diferentes, que es justo lo que cubren las siguientes secciones.

¿Qué son los nudos en una regresión con splines?

Los nudos son los puntos del eje del predictor donde termina un tramo polinómico y empieza el siguiente.

Piensa en ellos como las articulaciones del spline. Si colocas un nudo en x = 5, el modelo ajusta un polinomio para valores por debajo de 5 y otro distinto para valores por encima de 5. Ambos se encuentran en el nudo y las restricciones de continuidad garantizan una conexión suave. Si añades más nudos, obtienes más tramos y la curva puede doblarse en más lugares.

Por eso los nudos son la palanca principal para controlar la flexibilidad del modelo.

El número de nudos determina cuántas piezas polinómicas componen el spline. La ubicación de los nudos determina dónde se permite que la curva cambie de forma. Un spline con dos nudos solo puede doblarse en unos pocos sitios. Un spline con veinte nudos puede seguir casi cada punto de los datos.

Así que elegir el número y la colocación adecuados de los nudos es la decisión clave en regresión con splines.

Demasiado pocos nudos

Si colocas muy pocos nudos, el spline no tiene suficientes tramos para seguir el patrón real de los datos. La curva se queda rígida. Se comporta casi como un polinomio de bajo grado: flexible a grandes rasgos, pero incapaz de captar cambios locales.

Imagina ajustar un spline con un nudo a datos con tres fases claras: una subida, una meseta y una caída. Con un solo nudo, el spline solo tiene dos tramos. Puede captar la subida y una de las otras fases, pero no las tres. Acabas con el mismo problema que en la regresión lineal: errores donde el spline no puede replicar la forma de los datos.

Ejemplo con pocos nudos

Ejemplo con pocos nudos

Demasiados pocos nudos llevan a un infracajado. El modelo es demasiado suave para ser útil.

Demasiados nudos

El problema opuesto es igual de malo. Si colocas demasiados nudos, el spline tiene tantos tramos que empieza a ajustar el ruido en lugar del patrón real. La curva serpentea entre cada observación y persigue la variación aleatoria en lugar de la tendencia subyacente.

Un spline con veinte nudos sobre un conjunto de datos de cincuenta puntos parecerá un dibujo de "une los puntos" más que un modelo. Ajustará casi perfectamente los datos de entrenamiento, pero las predicciones en datos nuevos serán poco fiables. Cambios pequeños en la entrada provocarán cambios grandes e impredecibles en la salida.

Ejemplo con demasiados nudos

Ejemplo con demasiados nudos

Demasiados nudos llevan a sobreajuste. El modelo es demasiado flexible para generalizar.

Quieres suficientes nudos para captar las curvas reales de los datos, pero no tantos como para que el modelo empiece a memorizar el ruido. En las siguientes secciones verás cómo decidirlo en la práctica.

Tipos de splines

Hay varios tipos de splines, y la elección depende sobre todo del polinomio que uses en cada tramo y de las restricciones que impongas a la curva.

Splines lineales

Los splines lineales son la versión más simple. Cada tramo es una recta y los tramos se conectan en los nudos.

Ejemplo de splines lineales

Ejemplo de splines lineales

La restricción de continuidad aquí es laxa: los valores de ambos lados deben coincidir en el nudo, pero las pendientes pueden cambiar. El resultado parece una serie de segmentos conectados con esquinas en cada nudo. Es suficiente para gestionar curvas sencillas, pero a veces la curva no es suave.

Los splines lineales funcionan bien cuando solo te importa captar las tendencias generales y no te molesta la nitidez visual. Además, son los más fáciles de interpretar, ya que cada tramo es una línea con su propia pendiente.

Splines cúbicos

Los splines cúbicos son la opción por defecto en la mayoría de aplicaciones. Cada tramo es un polinomio cúbico (grado 3) y las restricciones de continuidad son más estrictas que en los lineales.

Ejemplo de splines cúbicos

Ejemplo de splines cúbicos

En cada nudo deben cumplirse tres condiciones: coinciden los valores, coinciden las primeras derivadas y coinciden las segundas derivadas. Esto implica que no hay saltos, ni esquinas, ni cambios súbitos de curvatura. La curva fluye por los nudos sin señales visuales de transición.

El grado cúbico es el más bajo que permite cambios suaves de curvatura. Por eso es tan popular. Grados superiores rara vez aportan flexibilidad útil y solo complican el control del modelo.

Splines cúbicos naturales

Los splines cúbicos naturales son una variante que añade restricciones extra en los bordes de los datos.

Ejemplo de splines cúbicos naturales

Ejemplo de splines cúbicos naturales

El problema de los splines cúbicos normales es que pueden comportarse de forma extraña en los extremos, sobre todo donde hay pocos datos. Los tramos más a la izquierda y a la derecha siguen siendo polinomios cúbicos, y al extrapolar pueden subir o bajar con rapidez.

Los splines cúbicos naturales evitan esto forzando la segunda derivada a cero en ambos nudos de frontera. En la práctica, la curva se vuelve lineal más allá de los nudos exteriores. La extrapolación es mucho más estable, lo que los hace mejores cuando te importan las predicciones cerca de los bordes de los datos.

B-splines

Los B-splines (basis splines) son otra forma de construir splines. En lugar de definir directamente cada tramo polinómico, un B-spline construye el spline como una suma ponderada de funciones base.

Ejemplo de B-splines

Ejemplo de B-splines

Cada función base es en sí misma un pequeño spline que solo es distinto de cero en una región limitada. El spline completo es la suma de estas funciones base, cada una multiplicada por un coeficiente que estima la regresión.

Los B-splines son numéricamente estables y fáciles de extender. La mayoría de implementaciones modernas en Python y R usan representaciones B-spline, incluso cuando la interfaz de usuario parece un spline normal. Si alguna vez has llamado a bs() en R o has usado SplineTransformer en scikit-learn, has usado B-splines.

Regresión con splines vs. regresión polinómica

Tanto la regresión polinómica como la regresión con splines manejan relaciones no lineales, pero lo hacen de forma muy distinta. La diferencia está en cómo se construye la curva.

Regresión polinómica

La regresión polinómica ajusta un único polinomio global en todo el rango del predictor. Eliges un grado (2, 3, 5, 10) y el modelo encuentra un conjunto de coeficientes que minimiza el error en todos los datos. La curva tiene una sola ecuación que describe la relación en todas partes.

Suena limpio, pero tiene un problema. Un único polinomio tiene que equilibrar el ajuste en todo el rango, así que lo que ocurre en una región afecta a todas las demás. Si aumentas el grado para manejar una curva pronunciada en el centro de los datos, verás que la curva empieza a oscilar en los bordes. Este es el fenómeno de Runge del que hablábamos: los polinomios de alto grado se vuelven inestables cerca de los límites de los datos.

El otro problema es que la regresión polinómica no tiene noción de localidad. Un pico en x = 5 puede cambiar la forma del ajuste en x = 50, porque todas las observaciones contribuyen a la misma ecuación global.

Regresión con splines

La regresión con splines divide el rango del predictor en tramos y ajusta un polinomio de bajo grado en cada uno. Los polinomios se conectan suavemente en los nudos, pero cada uno es independiente en el sentido de que su forma la determina sobre todo la información de su propia región.

Esto te da flexibilidad local. Una zona con una curva pronunciada recibe un polinomio más curvo. Una zona con tendencia plana recibe uno casi plano. Y como cada tramo es de bajo grado (normalmente cúbico), ninguna parte puede comportarse de forma extraña en los extremos. Obtienes un ajuste más suave y estable, especialmente cerca de los bordes de los datos.

Comparación lado a lado

Regresión polinómica vs. con splines

Regresión polinómica frente a regresión con splines

Si tu relación es ligeramente no lineal y te vale un ajuste global, la regresión polinómica puede funcionar. Si el patrón es más complejo o te importan las predicciones cerca de los límites, los splines son la opción más segura.

Elegir el número y la ubicación de los nudos

La selección de nudos es lo que más importa en una regresión con splines. Muy pocos nudos llevan a infracajado y demasiados a sobreajuste. Y dónde los pongas cambia qué patrones puede captar el modelo.

Hay varios enfoques y, la mayoría de las veces, combinarás un par de ellos.

  1. Conocimiento del dominio: si conoces el problema, aprovéchalo. Un estudio clínico puede situar nudos en umbrales conocidos. Un modelo de precios puede colocarlos en puntos donde se espera que cambie el comportamiento del consumidor. Esta colocación guiada por el dominio es la más interpretable porque los tramos corresponden a límites reales.
  2. Nudos espaciados de forma uniforme: elige un número de nudos y espácialos de forma uniforme a lo largo del predictor. Funciona bien cuando los datos están distribuidos de forma más o menos uniforme. No funciona cuando hay zonas densas y zonas escasas: los nudos uniformes pueden caer donde casi no hay datos, lo que hace inestable el ajuste.
  3. Nudos basados en cuantiles: en lugar de colocarlos en posiciones iguales del eje x, colócalos en cuantiles del predictor. Con 4 nudos y colocación por cuantiles, los pondrías en los percentiles 20, 40, 60 y 80. Así garantizas que cada tramo contenga un número similar de observaciones, lo que hace el ajuste más fiable en zonas escasas.
  4. Validación cruzada: prueba distintos números de nudos, ajusta el spline para cada caso y compara el rendimiento en datos de validación. Gana la configuración con menor error de validación. Elimina conjeturas, pero añade coste computacional y el resultado depende de la estrategia de colocación (uniforme, cuantiles) que explores.

El equilibrio es el de siempre en regresión: flexibilidad frente a complejidad. Más nudos implican más flexibilidad, lo que permite seguir patrones finos, pero también perseguir el ruido. Menos nudos implican un modelo más estable e interpretable que puede perder patrones reales.

Empieza con 3-5 nudos colocados por cuantiles y revisa los residuos. Si ves patrones sistemáticos que el spline no capta, añade un nudo en esa región. Si el ajuste se ve demasiado ondulado, quita uno. La validación cruzada merece la pena cuando necesitas justificar la elección o cuando el modelo va a producción.

Splines en aprendizaje automático y estadística

Los splines aparecen siempre que hay que modelar un efecto no lineal suave sin comprometerse con una forma funcional concreta. Algunos ámbitos comunes:

  • Tendencias en series temporales: separar la tendencia suave de una serie de las fluctuaciones a corto plazo es un uso típico. Un spline sobre el tiempo como predictor te da una línea de tendencia flexible que se adapta a cambios de dirección sin sobrerreaccionar al ruido. Economistas y analistas lo usan continuamente para describir la trayectoria de variables (PIB, precios de acciones) sin asumir linealidad o exponencialidad.
  • Economía y econometría: se usan para modelar relaciones donde el efecto de una variable cambia a lo largo de su rango. El efecto de la renta en el consumo no es constante: los hogares con menos ingresos gastan de forma distinta a los de ingresos altos. Un spline capta esto sin asumir una forma funcional concreta.
  • Sanidad y bioestadística: muchas variables de salud tienen relaciones no lineales con predictores como edad, IMC, presión arterial o biomarcadores. El riesgo de enfermedad suele seguir una U o una J: los extremos son peligrosos, el centro es seguro. Un modelo lineal lo pasaría por alto. Los splines cúbicos y cúbicos naturales son la herramienta estándar y están integrados en el software estadístico usado en investigación clínica.
  • Modelización ambiental y ecológica: también se usan al modelar cómo responden especies o variables climáticas a gradientes ambientales. Temperatura, altitud o precipitación suelen tener efectos no lineales sobre la abundancia de especies o el rendimiento de cultivos. Los splines permiten ajustar la curva de respuesta sin fijar su forma de antemano.

En todos estos casos, los splines te dan flexibilidad donde la necesitas, sin obligarte a adivinar la forma funcional de la relación. Son ideales para modelado exploratorio y una opción sólida para producción cuando la interpretabilidad importa.

Regresión con splines en Python

En Python hay tres formas habituales de ajustar splines: scikit-learn para un flujo de ML, patsy para especificación basada en fórmulas y statsmodels para inferencia estadística. Vamos con cada una.

Con scikit-learn

scikit-learn ofrece SplineTransformer, que convierte una característica numérica en un conjunto de funciones base B-spline. Luego pasas esas características a cualquier modelo de regresión lineal.

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import SplineTransformer
from sklearn.pipeline import make_pipeline

# Data
np.random.seed(42)
x = np.linspace(0, 10, 100).reshape(-1, 1)
y = np.sin(x).ravel() + 0.3 * x.ravel() + np.random.normal(0, 0.3, 100)

# Spline features + linear regression pipeline
model = make_pipeline(
    SplineTransformer(n_knots=5, degree=3),
    LinearRegression()
)
model.fit(x, y)
y_pred = model.predict(x)

print("R^2 score:", model.score(x, y))

Puntuación R2 en scikit-learn

Puntuación R2 en scikit-learn

El SplineTransformer crea la base del spline con 5 nudos y polinomios cúbicos. Después, LinearRegression encuentra los coeficientes para cada función base. Aquí puedes sustituir cualquier regresor de sklearn: ridge, lasso, cualquiera que ajuste un modelo lineal sobre las características transformadas.

Este enfoque encaja con los flujos de sklearn, pero no obtienes salida estadística como errores estándar o p-valores. Para eso, te conviene patsy o statsmodels.

Con patsy

patsy es una interfaz basada en fórmulas para construir matrices de diseño. Es lo más parecido en Python a las fórmulas de modelos de R y es la forma estándar de crear características de splines para usarlas con statsmodels.

import numpy as np
import pandas as pd
from patsy import dmatrix
import statsmodels.api as sm

np.random.seed(42)
x = np.linspace(0, 10, 100)
y = np.sin(x) + 0.3 * x + np.random.normal(0, 0.3, 100)
df = pd.DataFrame({"x": x, "y": y})

# B-spline basis using patsy
spline_basis = dmatrix("bs(x, df=6, degree=3)", data=df, return_type="dataframe")

# Fit with statsmodels OLS
model = sm.OLS(df["y"], spline_basis).fit()
print(model.summary())

Resumen del modelo con patsy

Resumen del modelo con patsy

La función bs() dentro de la fórmula le indica a patsy que construya una base B-spline con 6 grados de libertad y grado 3 (cúbico). patsy devuelve la matriz de diseño, que va directamente a sm.OLS(). El parámetro df controla el número de funciones base del spline: valores más altos dan más flexibilidad, similar a añadir más nudos.

Si quieres splines naturales, cambia bs() por ns():

spline_basis = dmatrix("ns(x, df=6)", data=df, return_type="dataframe")

Con statsmodels y fórmulas

statsmodels también tiene una API de fórmulas que se integra con patsy. Es la opción más limpia cuando quieres una regresión con splines en una línea y salida estadística completa.

import statsmodels.formula.api as smf

model = smf.ols("y ~ bs(x, df=7, degree=3)", data=df).fit()
print(model.summary())

Resumen del modelo en statsmodels

Resumen del modelo en statsmodels

La salida de summary() te da coeficientes para cada función base del spline, errores estándar, p-valores y las métricas habituales de ajuste. Los coeficientes no son directamente interpretables, porque corresponden a funciones base, no a cantidades del mundo real. Interpretas el ajuste trazando predicciones a lo largo del rango del predictor.

Para la mayoría de flujos estadísticos, la API de fórmulas de statsmodels es la opción más cómoda. Usa scikit-learn cuando los splines formen parte de una canalización de ML más amplia.

Regresión con splines en R

R tiene el mejor soporte integrado para splines entre los lenguajes principales. El paquete splines viene con R base y sus dos funciones principales, bs() y ns(), funcionan directamente en cualquier fórmula de regresión.

La función bs() crea una base B-spline. La función ns() crea una base de spline cúbico natural. Ambas producen una matriz de características spline que el sistema de fórmulas de R inserta automáticamente en el modelo.

Usar bs() para B-splines

# Data
set.seed(42)
x <- seq(0, 10, length.out = 100)
y <- sin(x) + 0.3 * x + rnorm(100, sd = 0.3)
df <- data.frame(x = x, y = y)

# Cubic B-spline with 6 degrees of freedom
library(splines)
model <- lm(y ~ bs(x, df = 6, degree = 3), data = df)
summary(model)

Salida de bs() en R

Salida de bs() en R

La fórmula y ~ bs(x, df = 6, degree = 3) le dice a R que reemplace x por una base B-spline de grado 3 y 6 grados de libertad. R se encarga del resto: construye la matriz base, ajusta el modelo lineal y produce un objeto lm con todos los diagnósticos habituales.

Puedes pasar posiciones de nudos directamente si quieres control total:

model <- lm(y ~ bs(x, knots = c(2, 5, 8), degree = 3), data = df)

Esto coloca nudos en x = 2, x = 5 y x = 8 en lugar de dejar que R los elija por ti.

Usar ns() para splines naturales

Para splines cúbicos naturales (los que se vuelven lineales más allá de los límites), usa ns():

model_natural <- lm(y ~ ns(x, df = 6), data = df)
summary(model_natural)

Salida de ns() en R

Salida de ns() en R

La sintaxis es la misma, pero el comportamiento en los bordes es distinto. Los splines naturales suelen ser la opción más segura cuando te importan las predicciones o la interpretación cerca de los límites.

Interpretar la salida

Los coeficientes en la salida de summary() corresponden a funciones base del spline, no a cantidades interpretables. Para ver qué ha aprendido el modelo, predice en una rejilla de valores de x y dibuja el resultado:

x_grid <- data.frame(x = seq(0, 10, length.out = 200))
preds <- predict(model, newdata = x_grid)
plot(df$x, df$y)
lines(x_grid$x, preds, col = "green", lwd = 2)

Interpretación de la salida en R con splines

Interpretación de la salida en R

Este es el patrón estándar en R: ajustas el spline, predices sobre una rejilla suave y superpones la curva a los datos. R también te permite usar términos spline junto a otros predictores en la misma fórmula:

model_multi <- lm(y ~ ns(x, df = 6) + other_var, data = df)

Esto ajusta un efecto no lineal para x y uno lineal para other_var en el mismo modelo. Esa flexibilidad explica por qué los splines están tan extendidos en flujos estadísticos basados en R.

Ventajas de la regresión con splines

Algunas ventajas de los splines frente a modelos de machine learning más populares:

  • Modelan relaciones no lineales sin conocer la forma: no tienes que fijar una forma funcional. Los splines dejan que los datos den forma a la curva, así puedes modelar curvas, mesetas y cambios de dirección sin saber de antemano dónde ocurren.
  • Ajustes suaves e interpretables: el resultado es una curva continua, no una predicción de caja negra. Puedes trazar el spline, ver cómo cambia la respuesta a lo largo del predictor y explicarlo a una audiencia no técnica.
  • Más estables que los polinomios de alto grado: cada tramo es un polinomio de bajo grado, por lo que ninguna pieza puede desmadrarse en los extremos. El comportamiento en los bordes está mucho más controlado, especialmente con splines cúbicos naturales.
  • Encajan en flujos de regresión existentes: los splines funcionan dentro de la regresión lineal estándar. Puedes combinarlos con otros predictores, regularización, efectos mixtos y cualquier herramienta compatible con MCO.

Limitaciones de la regresión con splines

Como casi todo modelo, los splines tienen algunos compromisos que debes conocer:

  • Elegir los nudos es lo difícil: decidir el número y la ubicación de los nudos requiere trabajo. A veces los valores por defecto funcionan, pero en muchos casos necesitarás validación cruzada o conocimiento del dominio para un buen ajuste. No hay una regla universal.
  • Cuantos más nudos, más difícil de interpretar: un spline con tres nudos es sencillo de interpretar; con veinte, no. Puedes seguir trazando la curva, pero explicar rigurosamente qué hace el modelo se complica mucho.
  • Aún pueden sobreajustar: son más estables que los polinomios de alto grado, pero no inmunes. Demasiados nudos, mala colocación, demasiados valores atípicos o un tamaño muestral pequeño pueden producir un modelo que ajusta bien el entrenamiento y falla en datos nuevos.
  • Los coeficientes no son directamente significativos: los coeficientes ajustados corresponden a funciones base, no a cantidades del mundo real. No puedes leer "un incremento de una unidad en x cambia y en beta" como en la regresión lineal. Tienes que interpretar visualmente el ajuste.

Errores comunes con la regresión con splines

Repasemos algunos errores típicos de quienes empiezan con splines:

  • Usar demasiados nudos: es habitual añadir nudos hasta que el ajuste se vea bien en entrenamiento. Clásica trampa de sobreajuste. Si el spline serpentea entre cada observación, tienes demasiados nudos. Valida de forma cruzada o empieza con menos y añade solo cuando los residuos muestren un patrón claro.
  • Usar pocos nudos y asumir linealidad: el error opuesto. Si ajustas un spline con uno o dos nudos y los residuos siguen mostrando curvatura, el modelo está infracajando. No tiene suficientes tramos para seguir el patrón real. Añade más nudos donde los residuos fallen.
  • No entender el comportamiento en los bordes: los splines cúbicos normales pueden comportarse de forma errática cerca de los extremos. Si vas a predecir cerca de los límites (o extrapolar), usa splines cúbicos naturales. Fuerzan un comportamiento lineal más allá de los nudos de frontera y evitan oscilaciones.
  • Compararlos directamente con modelos no lineales sin restricciones: los splines no pretenden ser redes neuronales ni random forests. Si los comparas solo por precisión predictiva bruta, el modelo de caja negra suele ganar. No es el objetivo. Los splines ganan en interpretabilidad y en su encaje con la inferencia estadística tradicional.

Regresión con splines frente a otras técnicas no lineales

Los splines no son la única forma de modelar relaciones no lineales, pero sí son útiles cuando te importa la interpretabilidad. Así se comparan con alternativas comunes.

Regresión polinómica

La regresión polinómica usa una sola ecuación global. Es más simple de especificar, pero menos estable, especialmente en los bordes. Los splines superan a los polinomios en flexibilidad y estabilidad cuando la relación tiene más de una curva. Los polinomios solo son más fáciles de interpretar en grados muy bajos (2 o 3). A partir de ahí, los splines son más fiables e interpretables.

Modelos aditivos generalizados (GAM)

Los GAM son, en esencia, splines a escala. Permiten ajustar un spline para cada predictor de forma independiente y combinarlos aditivamente. Puedes ver la regresión con splines como un GAM de una sola variable, y un GAM como una suma de splines en múltiples variables.

Los GAM gestionan múltiples predictores no lineales mejor que ajustar splines manualmente a cada uno. Además, incluyen penalizaciones de suavizado que eligen la flexibilidad adecuada, lo que reduce parte del trabajo de seleccionar nudos. Si trabajas con varios predictores y algunos requieren tratamiento no lineal, normalmente los GAM son la mejor opción.

Árboles de decisión

Los árboles toman un enfoque completamente distinto. En lugar de ajustar una curva suave, dividen el espacio del predictor en regiones rectangulares y predicen un valor constante en cada una. El resultado es una función escalonada.

Los árboles son más flexibles que los splines en ciertos aspectos, ya que pueden modelar interacciones y cambios abruptos. Pero la función ajustada no es suave ni continua y generaliza peor en regiones con pocos datos. Los splines son mejores si te importan la suavidad y la extrapolación estable. Los árboles son mejores cuando te importan fronteras nítidas o interacciones entre muchas variables.

Por qué importa la regresión con splines

Los splines están por todas partes en estadística aplicada. Aparecen en investigación clínica, análisis económico, ciencias ambientales, modelado de series temporales y en cualquier campo donde haya que modelar un efecto no lineal suave sin recurrir a un modelo de caja negra.

La razón es el equilibrio que ofrecen: suficiente flexibilidad para manejar datos desordenados y suficiente estructura para seguir siendo interpretables y estables.

Además, son la base de métodos más avanzados. Los modelos aditivos generalizados se construyen directamente sobre splines, los splines de suavizado amplían la idea con regularización incorporada y muchas técnicas modernas de regresión no lineal usan bases spline. Si quieres entender estos métodos, primero tienes que entender los splines.

En resumen, los splines importan porque son prácticos y porque son el bloque de construcción de mucho de lo que viene después. No son el modelo más potente, pero sí de los más fiables, y eso a menudo es lo que cuenta.

Conclusión

La regresión con splines modela relaciones no lineales combinando polinomios a trozos en puntos llamados nudos. Esa es la idea; el resto son variaciones.

Los nudos y la suavidad son los dos conceptos que tienes que asimilar. Todo lo demás (tipos de splines, representaciones base, implementación en R y Python) son formas distintas de trabajar con esas dos ideas.

Prueba varios tipos de splines con tus propios datos. Compara cúbico, cúbico natural y B-splines. Mueve los nudos y mira qué pasa. Experimenta: la naturaleza visual del ajuste facilita ver qué hace cada elección.

Si quieres profundizar en las matemáticas detrás de los splines y muchos otros algoritmos, apúntate a nuestro itinerario Machine Learning Scientist in Python. Tiene todo lo que necesitas para estar listo para trabajar en 2026.

Conviértete en un Científico ML

Mejora tus conocimientos de Python para convertirte en un científico del aprendizaje automático.
Empieza a Aprender Gratis

Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.

Preguntas frecuentes sobre regresión con splines

¿Qué es la regresión con splines en palabras sencillas?

La regresión con splines es una forma de modelar relaciones curvadas en los datos dividiendo el rango del predictor en tramos y ajustando un pequeño polinomio en cada uno. Los tramos se conectan suavemente en puntos llamados nudos, de modo que el resultado es una única curva continua. Es más flexible que la regresión lineal y más estable que la regresión polinómica de alto grado.

¿Cuándo debería usar splines en vez de regresión lineal?

Usa regresión con splines cuando la relación entre tu predictor y el resultado no sea una recta. Si un modelo lineal deja patrones en los residuos —por ejemplo, errores positivos en el centro y negativos en los extremos—, es señal de que la relación es no lineal.

¿Qué son los nudos en una regresión con splines?

Los nudos son los puntos del eje del predictor donde termina un tramo polinómico y empieza el siguiente. Controlan cuán flexible puede ser el spline. Más nudos implican que la curva puede doblarse en más lugares. Elegir bien el número y la ubicación de los nudos es la decisión central en una regresión con splines: pocos nudos infracajan y demasiados sobreajustan.

¿Cuál es la diferencia entre splines cúbicos y cúbicos naturales?

Ambos ajustan polinomios cúbicos entre nudos, pero difieren en el comportamiento en los bordes. Los splines cúbicos normales pueden comportarse de forma inesperada en los extremos porque cada extremo sigue siendo un polinomio cúbico completo. Los splines cúbicos naturales fuerzan que la curva sea lineal más allá de los nudos exteriores, lo que hace mucho más estables las predicciones cerca o fuera de los límites.

¿Cómo elijo cuántos nudos usar en un modelo con splines?

Empieza con 3-5 nudos colocados en cuantiles del predictor para que cada tramo tenga un número similar de observaciones. Si los residuos muestran patrones que el spline no capta, añade un nudo en esa región. Para un enfoque más riguroso, usa validación cruzada para comparar distintos recuentos de nudos y elige la configuración con menor error de validación.

Temas

Aprende con DataCamp

Curso

Modelos Lineales Generalizados en R

4 h
21.8K
El curso sobre el modelo lineal generalizado amplía tu conjunto de herramientas de regresión para incluir la regresión logística y la regresión de Poisson.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

Tutorial

Tutorial de Lasso y regresión Ridge en Python

Conozca las técnicas de regresión del lazo y la cresta. Compare y analice los métodos en detalle.
DataCamp Team's photo

DataCamp Team

multiple linear regression

Tutorial

Regresión lineal múltiple en R: tutorial con ejemplos

Una visión completa para entender las regresiones lineales múltiples en R a través de ejemplos.
Zoumana Keita 's photo

Zoumana Keita

Tutorial

Tutorial de ecuación normal para regresión lineal

Aprende qué es la ecuación normal y cómo puedes utilizarla para construir modelos de machine learning.
Kurtis Pykes 's photo

Kurtis Pykes

line plot python

Tutorial

Gráficos lineales en MatplotLib con Python

Este tutorial práctico profundiza en la creación y personalización de gráficos lineales con Matplotlib, una potente biblioteca de visualización de datos en Python.
Arunn Thevapalan's photo

Arunn Thevapalan

Tutorial

Tutorial sobre cómo ejecutar consultas SQL en Python y R

Aprenda formas fáciles y eficaces de ejecutar consultas SQL en Python y R para el análisis de datos y la gestión de bases de datos.
Abid Ali Awan's photo

Abid Ali Awan

Ver MásVer Más