Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Modelos de regresión, Unidad 5 — Supuestos del modelo lineal, 5.2 — Diagnóstico del modelo ·

Cuándo el modelo no es adecuado

Cuándo el modelo no es adecuado

Introducción

En la regresión lineal, aunque los modelos lineales son útiles para una variedad de problemas, existen situaciones en las que tales modelos pueden fallar. Es crucial comprender cuándo y por qué un modelo lineal no resulta adecuado para predecir con precisión. Este artículo explorará estos casos y proporcionará una guía práctica para diagnosticar y superar estas limitaciones.

Explicación principal

Importancia de la diagonalización del modelo

La regresión lineal asume que los datos se pueden modelar con una relación lineal entre las variables independientes e independientes. Sin embargo, en muchos casos reales, este supuesto no se cumple, lo que puede llevar a un mal ajuste y predicciones erróneas.

Caso de estudio: Diagnóstico de residuos

Imaginemos una situación donde estamos intentando predecir el precio de las casas basándonos en su tamaño. Podríamos esperar una relación lineal, pero si la varianza del error aumenta con el tamaño de la casa (un ejemplo típico de heterocedasticidad), nuestro modelo lineal no será adecuado.

import numpy as np
import matplotlib.pyplot as plt

# Datos ficticios: tamaño de las casas y sus precios
sizes = np.array([1000, 1200, 1400, 1600, 1800, 2000])
prices = np.array([350000, 370000, 400000, 430000, 480000, 550000])

# Ajuste de regresión lineal
slope, intercept = np.polyfit(sizes, prices, 1)

# Generar una línea de regresión predicha
predicted_prices = sizes * slope + intercept

# Plotear los datos y la línea de ajuste
plt.scatter(sizes, prices, label='Datos reales')
plt.plot(sizes, predicted_prices, color='red', label='Regresión lineal')
plt.xlabel('Tamaño (pies cuadrados)')
plt.ylabel('Precio ($)')
plt.legend()
plt.show()

# Diagnóstico de residuos
residuals = prices - predicted_prices
plt.scatter(sizes, residuals)
plt.axhline(y=0, color='r', linestyle='--')
plt.xlabel('Tamaño (pies cuadrados)')
plt.ylabel('Residuales')
plt.title('Histograma de Residuales')
plt.show()

En el gráfico superior, se observa que la relación no es lineal y los residuales mostrados en el histograma sugieren heterocedasticidad. Este tipo de comportamiento indica que el modelo lineal puede no ser adecuado.

Errores típicos / trampas

  1. Overfitting: Un modelo lineal puede ajustarse demasiado a los datos de entrenamiento, capturando ruido y detalles menores en lugar de las relaciones generales.
  2. Homocedasticidad no satisfecha: La varianza del error debe ser constante en regresión lineal; si es heterocedástica, el modelo lineal no es adecuado.
  3. Variables irrelevantes incluidas: Incorporar variables que no aportan valor al modelo puede distorsionar las relaciones entre las variables significativas.

Checklist accionable

  1. Realizar un análisis de residuos para verificar la homocedasticidad.
  2. Comprobar la linealidad entre las variables utilizando gráficos de dispersión y regresiones locales (loess).
  3. Examinar la correlación entre las variables explicativas y el resultado esperado.
  4. Usar técnicas de reducción de dimensionalidad como PCA si es necesario simplificar el espacio de características.
  5. Probar modelos no lineales, como regresión polinómica o árboles de regresión, para capturar relaciones más complejas.

Cierre

Siguientes pasos

  • Evaluación del modelo: Utiliza métricas adecuadas para evaluar el rendimiento del modelo.
  • Diagnóstico adicional: Realiza análisis adicionales como la prueba de Breusch-Pagan para verificar la homocedasticidad.
  • Implementación en producción: Asegúrate de monitorear continuamente el rendimiento del modelo y ajustarlo según sea necesario.

Entender cuándo un modelo lineal no es adecuado es fundamental para obtener predicciones precisas. Siguiendo estas recomendaciones, podrás mejorar la calidad de tus modelos y aplicaciones en regresión.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).