
Transformaciones para modelos no lineales
En un post anterior he analizado el uso de una regresión lineal para estimar en precio de una vivienda en base a su tamaño. Uno de los supuestos para el uso de este tipo de modelo es que la relación sea lineal. Dicho de otra forma, el aumento o disminución de una variable vs la otra tiene que mantener una relación similar en los diferentes puntos. En los siguientes gráficos utilizaré los mismos datos para realizar unas cuantas regresiones.
¡No te pierdas ningún nuevo vídeo!
Visita mi canal de Youtube
Mirándolo en el gráfico de dispersión, podemos ver que los puntos están más o menos alineados y podemos inferir que la relación entre precio y tamaño es aproximadamente lineal. Sin embargo, en muchos casos la verdadera relación entre las variables no es lineal, por ejemplo, este sería el caso si por debajo de un cierto tamaño el precio de la vivienda no variara. Una solución a este problema se llama basis expansion que consiste en modificar la variable predictora de manera que se ajuste a la relación no lineal.

La ventaja de este enfoque es que la relación entre la variable resultado y las variables de entrada sigue siendo lineal y esto nos permite utilizar la misma técnica estadística de una simple regresión lineal (múltiple si tenemos más de una variable X).
Podemos identificar cuatro principales maneras de basis expansion:
- expansión polinomial de varios términos
- transformación no lineal de la variable X (logarítmica, cuadrática, raíz…)
- dividir el eje X y usar una función por partes
En este artículo no entraré en el detalle de su aplicación (hablaré más adelante de esto), sino que será una simple introducción a estas técnicas de transformación para que sepas que existan y que se utilizan para adaptar nuestra regresión simple cuando la relación no es lineal. Por ello, vamos a ver unos ejemplos.

y = b0 + b1x + b2x^2
y = b0 + b1x + b2x^2 + b3x^3
y = b0 + b1x + b2x^2 + b3x^3 + b4x^4


Regresiones no lineales (un solo término transformado):
y = b0 + b1 raiz(x)
y = b0 + b1 log(x)


Función por partes:
y = { b1 + b1(x – x1), x1 < x <= x2
b2 + b2(x – x2), x2 < x <= x3
…
bn + bnb(x – xnb-1), xn-1 < x <= xnb


Desde los ejemplos anteriores, podríamos deducir que cuanto más “compliquemos” nuestra regresión, cuanto más se ajusta a los datos. En particular, habrás notado que al aumentar el grado del polinomio la curva se ajusta cada vez más a los puntos. Vamos a ver un ejemplo límite, utilizando una regresión polinomial de quinto grado para nuestro conjunto de datos con 6 observaciones:
Vemos que la línea pasa prácticamente por todos los puntos, generando una curva “perfecta” ya que si calculáramos la suma de errores al cuadrado es casi cero. Esto es un claro ejemplo de sobreajuste (del que hablé en un post anterior), es decir que nuestra regresión se ajusta demasiado a los datos de entrenamiento (train) y su rendimiento será escaso con un nuevo conjunto de datos (test). En la siguiente tabla he utilizado el RMSE (Root Mean Square Error), es decir un indicador del error que se calcula con la raíz cuadrada de la media de los errores al cuadrado (error = predicción vs realidad). Esta metodología, comparada con la vista en otros posts anteriores (donde utilizaba la suma de los errores al cuadrado) permite tener un valor más entendible respecto al tamaño del error.

Notamos que cuanto más aumentemos el grado del polinomio, cuanto más disminuye el error en nuestro conjunto de entrenamiento. Sin embargo, el error aumenta visiblemente si predecimos el precio de la vivienda con el conjunto de prueba (test). En nuestro ejemplo, parece que sólo el polinomio de segundo grado logra una ligera mejora comparado con la regresión lineal.
Quiero acabar este artículo haciendo hincapié en la idea de que un modelo más complejo no es sinónimo de una mejor predicción, sino que a menudo significa una peor predicción cuando aplicado a nuevos datos. Como regla general, debemos elegir el modelo menos complejo que nos dé una buena predicción, pero ¿Cómo gestionamos la complejidad? Una manera clara de identificar la complejidad es por el número de coeficientes en la regresión. Hemos visto que, al aumentar la regresión polinomial de grado, aumentamos el número de coeficientes, un claro signo de aumento de la complejidad. Otra manera de detectar un aumento de complejidad es la suma de los valores de los coeficientes. Afortunadamente, hay algunas técnicas que nos ayudan en esto, pero ¡hablaré de “Regularización” en otro post!
Puedes descargar la plantilla en R con el código utilizado para los cálculos y la creación de los gráficos.