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

Clase 19 de 29Curso de Introducción al Álgebra Lineal: Vectores

Contenido del curso

Vectores

Resumen

Construir predicciones a partir de datos reales es una de las aplicaciones más poderosas del álgebra lineal. Usando funciones afines, es posible crear modelos que estimen variables como el salario promedio de un hogar según su ubicación geográfica. A continuación se explica cómo funciona un modelo de regresión lineal, cómo se estructura en código con Python y qué significa que una predicción sea buena o mala.

¿Cómo se define un modelo de regresión lineal con funciones afines?

Una función afín del tipo ŷ = xᵀβ + b se convierte en la base de lo que llamamos un modelo de regresión [0:25]. En esta notación, cada elemento del vector x recibe el nombre de regresor, mientras que ŷ (y gorrito) es la predicción que el modelo genera.

La variable que queremos estimar se conoce como variable dependiente (también llamada label, etiqueta o resultado esperado). El vector β es el vector de pesos y el escalar b es el offset o bias [1:18]. Juntos, b y β forman los parámetros de la regresión.

¿Qué es la notación simplificada con concatenación de vectores?

Para simplificar la escritura, se utiliza la concatenación de vectores [1:48]. Se define un nuevo vector β̃ donde la primera componente es el escalar b seguido del vector β original. De forma similar, se construye un vector x̃ con un 1 en la primera posición concatenado con x. Así, la ecuación afín se reduce a:

  • ŷ = x̃ᵀβ̃

Esta forma compacta sobreentiende que el bias ya está incluido dentro de la multiplicación, lo cual facilita tanto la lectura como la implementación en código.

¿Cómo se aplica la regresión lineal a datos reales con Pandas y NumPy?

El ejemplo utiliza la base de datos del Golden Oak Research Group [3:01], que correlaciona ingresos promedio por hogar con latitud, longitud y códigos postales de Estados Unidos. El dataset contiene 32,526 renglones y 19 columnas.

Para trabajar con estos datos en Python se cargan tres bibliotecas principales:

  • Matplotlib: para visualización de gráficas.
  • Pandas: para manipular data frames y acceder a columnas como vectores.
  • NumPy: para operaciones numéricas con arreglos.

La carga del archivo CSV se realiza con pd.read_csv() y se almacena en un data frame llamado df [5:28]. Funciones como df.head() y df.tail() permiten inspeccionar los primeros y últimos registros respectivamente.

¿Cómo se extraen los regresores y se construyen las predicciones?

Los regresores seleccionados son lat (latitud) y lon (longitud), mientras que la variable dependiente es mean (salario promedio reportado) [7:22]. Para convertir columnas de Pandas a NumPy arrays, se utiliza la instrucción .values [8:40].

Acceder a múltiples columnas simultáneamente requiere pasar una lista dentro de los corchetes del data frame:

python X = df[['lat', 'lon']].values

Esto genera un arreglo donde cada fila es un vector con latitud y longitud. Los parámetros del modelo se asumen dados [9:55]:

  • β = [744.83, -83.45]
  • Offset = 30,980.48

La función de predicción se define como:

python def prediccion(x): return x @ beta + offset

Evaluar prediccion(X) produce un vector y_hat de 32,526 predicciones, una por cada registro del dataset [10:35].

¿Cómo se evalúa visualmente si la predicción es correcta?

Para verificar la calidad de la predicción, se grafica ŷ contra y usando un scatter plot [12:10]. En el mejor escenario, los puntos deberían alinearse sobre una línea recta diagonal, lo que indicaría que cada predicción coincide con el valor real.

  • Si los puntos se agrupan cerca de la recta: los parámetros son adecuados.
  • Si los puntos se dispersan lejos: es necesario reentrenar el modelo, es decir, recalcular los parámetros [13:15].

En el ejemplo, la gráfica revela que la mayoría de los puntos no se alinean con la recta ideal, lo que indica que los parámetros necesitan ajuste. Solo pequeñas zonas muestran cercanía a la diagonal.

¿Mejora el modelo al agregar el código postal como regresor?

Como ejercicio, se propone incluir el zip code como un tercer regresor junto con latitud y longitud [14:05]. Agregar más variables relevantes puede mejorar la capacidad predictiva del modelo, siempre que los nuevos parámetros se calibren correctamente.

Si te interesa profundizar en el manejo de datos con Pandas o en la programación con Python, esos conocimientos serán fundamentales para dominar estos modelos. ¿Lograste mejorar la predicción al incluir el código postal? Comparte tu resultado en los comentarios.

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