Regresión Lineal con Datos Geográficos y Socioeconómicos

Clase 18 de 28Curso de Introducción al Álgebra Lineal: Vectores

Resumen

¿Qué es una regresión lineal?

En el fascinante mundo de la data y la estadística, la regresión lineal se presenta como una herramienta poderosa que nos permite hacer predicciones basadas en datos. Utilizando funciones afines, podemos aproximar tendencias y modelar relaciones entre variables. En este contexto, discutiremos conceptos básicos, culminando con un ejemplo práctico usando un conjunto de datos del Golden Oak Research Group.

¿Cuáles son los elementos clave en una regresión?

  • Modelo de regresión: Una función matemática que estima una variable dependiente (etiqueta o resultado esperado) 'y', basada en una o más variables independientes (regresores).
  • Vector de pesos (β): Representa los coeficientes que multiplican cada regresor, proporcionando su peso relativo.
  • Offset o bias (b): Un escalar añadido al resultado para ajustar la predicción al modelo real.
  • Notación: Para simplificar, a menudo se utiliza la notación ɣ = X^Tβ, donde X^T representa la transpuesta de una matriz que incluye las variables independientes.

¿Cómo estructuramos un modelo de regresión?

Para ejecutar un modelo de regresión lineal, podemos utilizar bibliotecas de Python que facilitan la manipulación y análisis de datos. Aquí te explicamos cómo:

Cargando y explorando datos

Primero, es crucial cargar las librerías necesarias:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

A continuación, cargamos el dataset en un Data Frame de Pandas:

df = pd.read_csv('incomedb_G0RG.csv')

Puedes explorar las primeras filas de datos para conocer sus estructurar:

print(df.head())

Identificación de regresores

Para nuestro ejemplo, utilizaremos la latitud y la longitud como regresores, mientras que el ingreso promedio será la variable a predecir (MIN):

x = df[['lat', 'long']].values
y = df['MIN'].values

Creación de la función de predicción

Definimos nuestra función de predicción basada en un vector de pesos (β) y un offset:

def predict(x, beta, offset):
    return np.dot(x, beta) + offset

Ajuste y evaluación del modelo

Con nuestros datos listos y función de predicción definida, procedemos a predecir:

beta = np.array([744.83, -83.45])
offset = 30980.48
predictions = predict(x, beta, offset)

Para evaluar la calidad del modelo:

plt.scatter(predictions, y, c='red')
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4)
plt.xlabel('Valor Predicho')
plt.ylabel('Valor Real')
plt.title('Comparación de valores reales vs predicciones')
plt.show()

¿Cómo mejoramos nuestras predicciones?

Para mejorar la precisión del modelo, podrías considerar la inclusión de variables adicionales, como códigos postales en nuestro caso. Ajustar e incluir nuevos parámetros para los regresores podría incrementar la exactitud del modelo. Aquí, el aprendizaje no termina; es vital recalibrar y probar diferentes combinaciones para encontrar la estructura que mejor se adecue al contexto de los datos que se observan.

¡No te detengas aquí! Continúa explorando más sobre regresiones y modelos de datos en Platzi y otros recursos educativos en línea. El camino de los datos es vasto y está lleno de descubrimientos para aquellos que se aventuran con curiosidad y determinación.