Regresión Lineal con Java: Teoría, Implementación y Simulación Asintótica
- Introducción
- Teoría del Método de Mínimos Cuadrados
- Regresión Lineal Simple
- Regresión Lineal Múltiple
- Supuestos Clave del Modelo Lineal
- Consistencia de los Estimadores
- Normalidad Asintótica
- Implementación en Java
- Simulación de Consistencia y Normalidad
- Interpretación de Resultados
- Posibles Extensiones
- Conclusión
Introducción
El análisis de regresión es una herramienta fundamental en estadística y econometría. El método de los mínimos cuadrados permite estimar relaciones lineales entre variables. Esta página describe tanto los fundamentos teóricos como la aplicación práctica en Java de la regresión simple y múltiple. Además, se comprueban empíricamente las propiedades asintóticas de consistencia y normalidad asintótica mediante simulaciones de Monte Carlo.
Teoría del Método de Mínimos Cuadrados
El método de mínimos cuadrados ordinarios (MCO) es una técnica fundamental en estadística y econometría para estimar los parámetros de un modelo lineal. Su objetivo principal es encontrar los coeficientes \( \beta \) que minimizan la suma de los cuadrados de los errores, es decir, las discrepancias entre los valores observados y los valores predichos por el modelo.
Matemáticamente, esto se formula como el siguiente problema de optimización:
\[ \min_{\beta} \sum_{i=1}^n (y_i – \beta_0 – \beta_1 x_{i1} – \cdots – \beta_k x_{ik})^2 \]Donde:
- \( y_i \): Variable dependiente (respuesta) para la observación \( i \)
- \( x_{ij} \): Valor de la variable explicativa \( j \) para la observación \( i \)
- \( \beta_j \): Coeficientes del modelo a estimar
- \( n \): Número total de observaciones
- \( k \): Número de variables explicativas (sin incluir el intercepto)
En forma matricial, el modelo de regresión lineal se expresa como:
\[ \mathbf{y} = \mathbf{X} \boldsymbol{\beta} + \boldsymbol{\varepsilon} \]Donde:
- \( \mathbf{y} \) es un vector columna de dimensión \( n \times 1 \) que contiene las observaciones de la variable dependiente.
- \( \mathbf{X} \) es la matriz de diseño de dimensión \( n \times (k+1) \), donde la primera columna está compuesta por unos para representar el intercepto.
- \( \boldsymbol{\beta} \) es el vector de parámetros \( (k+1) \times 1 \).
- \( \boldsymbol{\varepsilon} \) es el vector de errores aleatorios.
El estimador de MCO se deriva resolviendo el problema de minimización anterior. La solución analítica se obtiene igualando el gradiente a cero y resolviendo el sistema normal de ecuaciones:
\[ \mathbf{X}’\mathbf{X} \hat{\boldsymbol{\beta}} = \mathbf{X}’\mathbf{y} \]Siempre que \( \mathbf{X}’\mathbf{X} \) sea invertible (lo cual requiere que no haya multicolinealidad perfecta), el estimador MCO está dado por:
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}’\mathbf{X})^{-1} \mathbf{X}’\mathbf{y} \]Interpretación Geométrica
Desde un punto de vista geométrico, el método de mínimos cuadrados proyecta el vector de observaciones \( \mathbf{y} \) sobre el subespacio generado por las columnas de \( \mathbf{X} \). El vector proyectado \( \hat{\mathbf{y}} = \mathbf{X} \hat{\boldsymbol{\beta}} \) es la mejor aproximación lineal de \( \mathbf{y} \) en términos de distancia euclidiana.
El vector de residuos \( \mathbf{e} = \mathbf{y} – \hat{\mathbf{y}} \) es ortogonal al subespacio columna de \( \mathbf{X} \). Esta propiedad se expresa como:
\[ \mathbf{X}'(\mathbf{y} – \mathbf{X} \hat{\boldsymbol{\beta}}) = \mathbf{0} \]Es decir, los residuos son ortogonales a los regresores, lo cual es una propiedad clave que se utiliza en pruebas de significancia y validación de modelos.
Justificación Intuitiva
¿Por qué minimizar los cuadrados de los errores? La razón principal es que penalizar los errores al cuadrado magnifica los errores grandes, lo cual lleva a una mejor estabilidad matemática y permite una solución cerrada. Además, bajo el supuesto de errores con distribución normal, el estimador MCO coincide con el estimador de máxima verosimilitud.
Propiedades Importantes del Estimador MCO
- Linealidad: El estimador es una combinación lineal de los valores observados de \( y \).
- Insesgadez: Bajo los supuestos clásicos, \( E[\hat{\boldsymbol{\beta}}] = \boldsymbol{\beta} \).
- Eficiencia: Entre los estimadores lineales insesgados, MCO tiene varianza mínima (Teorema de Gauss-Markov).
Estas propiedades hacen del método de mínimos cuadrados una herramienta extremadamente poderosa y ampliamente utilizada en el análisis estadístico de datos.
Regresión Lineal Simple
La regresión lineal simple es el modelo más básico dentro del análisis de regresión. Su propósito principal es explicar la relación entre dos variables: una variable dependiente \( y \), que queremos predecir o explicar, y una variable explicativa \( x \), que se supone influye en \( y \).
El modelo matemático se expresa de la siguiente manera:
\[ y_i = \beta_0 + \beta_1 x_i + \varepsilon_i \]Donde:
- \( y_i \): el valor observado de la variable dependiente para la observación \( i \)
- \( x_i \): el valor observado de la variable explicativa para la observación \( i \)
- \( \beta_0 \): intercepto o término constante
- \( \beta_1 \): coeficiente de regresión (pendiente)
- \( \varepsilon_i \): término de error (representa factores no observados)
El término \( \varepsilon_i \) captura la diferencia entre el valor real \( y_i \) y el valor predicho por la recta \( \beta_0 + \beta_1 x_i \). Se supone que estos errores tienen media cero y varianza constante, es decir, que son “ruido aleatorio”.
Objetivo del método de mínimos cuadrados
El método de mínimos cuadrados busca encontrar los valores de \( \beta_0 \) y \( \beta_1 \) que minimicen la suma de los cuadrados de los errores, es decir:
\[ \min_{\beta_0, \beta_1} \sum_{i=1}^{n} (y_i – \beta_0 – \beta_1 x_i)^2 \]Este enfoque penaliza los errores grandes más severamente, ya que los eleva al cuadrado. El resultado es una línea recta que “mejor se ajusta” a los datos en términos del criterio de mínimos cuadrados.
Cálculo de los coeficientes estimados
Los valores óptimos que minimizan la suma de errores cuadrados son:
Para la pendiente \( \beta_1 \):
\[ \hat{\beta}_1 = \frac{\sum (x_i – \bar{x})(y_i – \bar{y})}{\sum (x_i – \bar{x})^2} \]Para el intercepto \( \beta_0 \):
\[ \hat{\beta}_0 = \bar{y} – \hat{\beta}_1 \bar{x} \]Aquí, \( \bar{x} \) y \( \bar{y} \) representan las medias muestrales de \( x \) e \( y \), respectivamente. Esta forma de estimación es conocida como “fórmulas cerradas”, ya que nos permiten calcular directamente los coeficientes sin recurrir a métodos numéricos.
Interpretación de los coeficientes
- Intercepción \( \hat{\beta}_0 \): valor estimado de \( y \) cuando \( x = 0 \). No siempre tiene una interpretación práctica si \( x = 0 \) no está dentro del rango observado.
- Pendiente \( \hat{\beta}_1 \): cambio esperado en \( y \) por cada unidad adicional de \( x \). Si \( \hat{\beta}_1 = 2 \), se espera que \( y \) aumente en 2 unidades por cada unidad de incremento en \( x \).
Ejemplo numérico simple
Supongamos que tenemos las siguientes observaciones:
x: 1, 2, 3, 4, 5
y: 2, 4, 5, 4, 5
Calculamos las medias:
- \( \bar{x} = 3 \)
- \( \bar{y} = 4 \)
Luego calculamos los productos cruzados y cuadrados:
- \( \sum (x_i – \bar{x})(y_i – \bar{y}) = 6 \)
- \( \sum (x_i – \bar{x})^2 = 10 \)
Entonces:
\[ \hat{\beta}_1 = \frac{6}{10} = 0.6, \quad \hat{\beta}_0 = 4 – 0.6 \cdot 3 = 2.2 \]La ecuación estimada es:
\[ \hat{y}_i = 2.2 + 0.6 x_i \]Podemos usar esta recta para hacer predicciones. Por ejemplo, si \( x = 6 \), entonces:
\[ \hat{y} = 2.2 + 0.6 \cdot 6 = 5.8 \]Regresión Lineal Múltiple
La regresión lineal múltiple es una extensión natural de la regresión lineal simple. Mientras que la regresión simple intenta explicar una variable dependiente \( y \) usando una sola variable explicativa \( x \), en la regresión múltiple se consideran múltiples variables explicativas. Esto permite modelar relaciones más complejas y captar el efecto simultáneo de varios factores sobre una misma variable.
El modelo de regresión múltiple se escribe típicamente en notación matricial como:
\[ \mathbf{y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]donde:
- \(\mathbf{y}\) es un vector columna de dimensión \( n \times 1 \), que contiene los valores observados de la variable dependiente.
- \(\mathbf{X}\) es una matriz de dimensión \( n \times k \) (a menudo llamada matriz de diseño), que contiene las observaciones de las variables explicativas. Su primera columna suele ser una columna de unos para representar el intercepto.
- \(\boldsymbol{\beta}\) es un vector columna de coeficientes de dimensión \( k \times 1 \), que queremos estimar.
- \(\boldsymbol{\varepsilon}\) es un vector columna de errores aleatorios, también de dimensión \( n \times 1 \).
El objetivo es encontrar una estimación del vector de parámetros \( \boldsymbol{\beta} \) que minimice la suma de los errores cuadráticos. Esto se logra utilizando el método de mínimos cuadrados ordinarios (MCO), el cual busca resolver el siguiente problema de minimización:
\[ \min_{\boldsymbol{\beta}} (\mathbf{y} – \mathbf{X}\boldsymbol{\beta})'(\mathbf{y} – \mathbf{X}\boldsymbol{\beta}) \]La solución a este problema es conocida y se obtiene resolviendo el sistema normal de ecuaciones. El estimador de mínimos cuadrados ordinarios es:
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}’\mathbf{X})^{-1} \mathbf{X}’\mathbf{y} \]Esto significa que primero multiplicamos la matriz transpuesta de \( \mathbf{X} \) por \( \mathbf{X} \) misma, obteniendo una matriz cuadrada de dimensión \( k \times k \). Luego se invierte esa matriz (si es invertible), y se multiplica por la transpuesta de \( \mathbf{X} \) y por el vector \( \mathbf{y} \). El resultado es una estimación de los coeficientes \( \boldsymbol{\beta} \).
Ejemplo ilustrativo
Supongamos que queremos predecir el salario de una persona \( y \) en función de sus años de educación \( x_1 \) y su experiencia laboral \( x_2 \). El modelo sería:
\[ y_i = \beta_0 + \beta_1 x_{1i} + \beta_2 x_{2i} + \varepsilon_i \]En forma matricial para tres observaciones, podríamos escribir:
\[ \mathbf{y} = \begin{bmatrix} 50000 \\ 60000 \\ 55000 \end{bmatrix}, \quad \mathbf{X} = \begin{bmatrix} 1 & 16 & 2 \\ 1 & 18 & 5 \\ 1 & 17 & 3 \end{bmatrix} \]Aquí, la primera columna de unos representa el intercepto. El vector \( \hat{\boldsymbol{\beta}} \) se calcularía usando la fórmula mencionada anteriormente.
Interpretación de los coeficientes
- \(\beta_0\): el salario estimado cuando educación y experiencia son cero (poco realista, pero útil como punto de referencia).
- \(\beta_1\): el cambio esperado en el salario por cada año adicional de educación, manteniendo la experiencia constante.
- \(\beta_2\): el cambio esperado en el salario por cada año adicional de experiencia, manteniendo la educación constante.
Condiciones para la validez del estimador
Para que \( \hat{\boldsymbol{\beta}} \) sea una buena estimación de \( \boldsymbol{\beta} \), es fundamental que se cumplan ciertos supuestos, como la independencia de los errores, la ausencia de multicolinealidad perfecta (es decir, que las columnas de \( \mathbf{X} \) no sean linealmente dependientes), y la homocedasticidad. Estos supuestos se tratarán con más detalle en las siguientes secciones.
Supuestos Clave del Modelo Lineal
El modelo lineal clásico se basa en una serie de supuestos que permiten garantizar las buenas propiedades de los estimadores por mínimos cuadrados. Estos supuestos no son meros tecnicismos: su validez es fundamental para que las inferencias estadísticas (como intervalos de confianza o pruebas de hipótesis) sean confiables. A continuación, se describen los principales supuestos, acompañados de explicaciones accesibles para principiantes.
-
Linealidad en los parámetros
El modelo debe ser lineal respecto a los parámetros a estimar. Esto significa que, aunque las variables explicativas puedan transformarse (por ejemplo, \( x^2 \), \( \log(x) \)), los coeficientes \( \beta \) deben entrar de forma lineal en la ecuación: \[ y_i = \beta_0 + \beta_1 x_i + \varepsilon_i \] Esta linealidad permite usar álgebra matricial para encontrar una solución exacta a través de mínimos cuadrados. -
Valor esperado condicional cero
El supuesto de exogeneidad establece que el error tiene esperanza condicional cero dado los regresores: \[ E[\varepsilon_i \mid \mathbf{X}] = 0 \] Esto implica que no hay variables omitidas relevantes, y que los regresores no están correlacionados con los errores. Si se viola este supuesto, los estimadores serán sesgados. -
Varianza constante (homocedasticidad)
La varianza de los errores debe ser constante a lo largo de todas las observaciones: \[ Var(\varepsilon_i) = \sigma^2 \] Cuando este supuesto se viola (es decir, cuando hay heterocedasticidad), los estimadores siguen siendo insesgados, pero la inferencia basada en sus varianzas es incorrecta. -
No autocorrelación entre errores
Los errores deben ser independientes entre sí: \[ Cov(\varepsilon_i, \varepsilon_j) = 0 \quad \text{para } i \neq j \] Esto es especialmente importante en series temporales. Si hay autocorrelación, los estimadores aún pueden ser consistentes, pero las pruebas estadísticas serán inválidas. -
No multicolinealidad perfecta
Las variables explicativas no deben estar perfectamente correlacionadas. Matemáticamente, la matriz \( \mathbf{X}’\mathbf{X} \) debe ser invertible. Si hay colinealidad perfecta, no se puede estimar el modelo. Si la colinealidad es alta (pero no perfecta), los coeficientes pueden volverse inestables y difíciles de interpretar. -
Independencia estadística de las observaciones
Se asume que cada observación representa una unidad independiente. Esta suposición es clave en estudios de corte transversal. En paneles o series temporales, esta independencia puede no cumplirse y requiere tratamientos adicionales. -
Distribución normal de los errores (para inferencia)
Aunque no es necesaria para la consistencia, la normalidad de los errores: \[ \varepsilon_i \sim \mathcal{N}(0, \sigma^2) \] permite usar inferencia exacta con pequeñas muestras. Con tamaños grandes, el teorema central del límite justifica la normalidad asintótica sin requerir este supuesto. -
Identificabilidad del modelo
El modelo debe estar correctamente especificado y ser identificable: debe existir una única combinación de parámetros que genere la relación esperada. Esto requiere que las variables relevantes estén incluidas y que no haya redundancias entre ellas. -
Ausencia de valores atípicos extremos
Aunque no es un supuesto formal, la presencia de outliers puede influir fuertemente en los estimadores MCO. Es recomendable diagnosticar y tratar estos valores con cuidado, especialmente si no se justifica su presencia por razones estructurales. -
Especificación completa del modelo
Se supone que el modelo incluye todas las variables relevantes. Si se omite alguna variable importante correlacionada con los regresores, se genera sesgo por omisión. Incluir variables irrelevantes, en cambio, reduce la eficiencia.
Comprender estos supuestos no solo ayuda a aplicar correctamente la regresión lineal, sino también a interpretar sus resultados con mayor solidez. En las siguientes secciones se mostrará cómo verificar algunos de estos supuestos mediante simulaciones y análisis en Java.
Consistencia de los Estimadores
Bajo los supuestos anteriores y con tamaño muestral creciente \( n \to \infty \), se tiene:
\[ \hat{\boldsymbol{\beta}} \xrightarrow{p} \boldsymbol{\beta} \]Esto significa que el estimador converge en probabilidad al valor verdadero.
Normalidad Asintótica
Además, si los errores tienen varianza finita, se cumple:
\[ \sqrt{n}(\hat{\boldsymbol{\beta}} – \boldsymbol{\beta}) \xrightarrow{d} \mathcal{N}(0, \sigma^2 (\mathbf{X}’\mathbf{X})^{-1}) \]Implementación en Java
En esta sección, explicaremos cómo implementar una regresión lineal simple utilizando el lenguaje de programación Java. Nos centraremos en el método de mínimos cuadrados ordinarios (MCO), que busca ajustar una línea recta a un conjunto de datos de forma que se minimice la suma de los errores al cuadrado.
Objetivo de la implementación
Dado un conjunto de observaciones de dos variables, \( x \) (variable independiente) y \( y \) (variable dependiente), queremos encontrar los coeficientes \( \hat{\beta}_0 \) y \( \hat{\beta}_1 \) que mejor se ajusten al modelo lineal:
\[ y_i = \beta_0 + \beta_1 x_i + \varepsilon_i \]La implementación consistirá en:
- Calcular el promedio de los valores \( x_i \) y \( y_i \).
- Usar las fórmulas de mínimos cuadrados para estimar los coeficientes.
- Devolver los resultados como un arreglo.
Código completo explicado paso a paso
// Clase que implementa la regresión lineal simple
public class RegresionSimple {
// Método que estima los coeficientes beta0 (intercepto) y beta1 (pendiente)
public static double[] estimar(double[] x, double[] y) {
int n = x.length;
// Paso 1: Calcular las medias de x e y
double xMedia = 0;
double yMedia = 0;
for (int i = 0; i < n; i++) {
xMedia += x[i];
yMedia += y[i];
}
xMedia /= n;
yMedia /= n;
// Paso 2: Calcular el numerador y denominador para beta1
double numerador = 0;
double denominador = 0;
for (int i = 0; i < n; i++) {
double dx = x[i] - xMedia;
double dy = y[i] - yMedia;
numerador += dx * dy;
denominador += dx * dx;
}
// Paso 3: Calcular beta1 y luego beta0
double beta1 = numerador / denominador;
double beta0 = yMedia - beta1 * xMedia;
// Paso 4: Devolver los coeficientes como un array
return new double[]{beta0, beta1};
}
}
Ejemplo de uso en un programa principal
public class Main {
public static void main(String[] args) {
double[] x = {1, 2, 3, 4, 5};
double[] y = {2, 4, 5, 4, 5};
double[] coeficientes = RegresionSimple.estimar(x, y);
System.out.println("Intercepto (beta0): " + coeficientes[0]);
System.out.println("Pendiente (beta1): " + coeficientes[1]);
}
}
Este código crea dos arreglos de datos \( x \) e \( y \), llama al método de estimación, y luego imprime los coeficientes estimados \( \hat{\beta}_0 \) y \( \hat{\beta}_1 \).
Explicación adicional para principiantes
La lógica de mínimos cuadrados se basa en encontrar la mejor línea recta que minimice la diferencia entre los valores observados \( y_i \) y los valores predichos por la línea \( \hat{y}_i = \hat{\beta}_0 + \hat{\beta}_1 x_i \). Esta diferencia se llama “residuo” y queremos que la suma de sus cuadrados sea la menor posible.
¿Por qué cuadrados y no valores absolutos? Porque los cuadrados penalizan más fuertemente los errores grandes, y además permiten una solución matemática cerrada (es decir, fórmulas directas para los coeficientes).
Posibles mejoras
- Verificar que los arreglos \( x \) e \( y \) tienen la misma longitud.
- Agregar manejo de excepciones para casos con pocos datos.
- Incluir el cálculo del coeficiente de determinación \( R^2 \).
- Agregar validación del input y formateo de la salida.
Simulación de Consistencia y Normalidad
En esta sección, realizaremos una simulación por computadora para verificar dos propiedades fundamentales de los estimadores de mínimos cuadrados: la consistencia y la normalidad asintótica.
Diseño de la simulación
Vamos a generar datos artificiales que siguen un modelo de regresión lineal simple:
\[ y_i = 1 + 2x_i + \varepsilon_i \]donde \( x_i \sim \mathcal{N}(0,1) \) y \( \varepsilon_i \sim \mathcal{N}(0,1) \). Los parámetros verdaderos son \( \beta_0 = 1 \) y \( \beta_1 = 2 \). Usaremos estos datos para estimar \( \hat{\beta}_1 \), repetiremos el experimento muchas veces, y observaremos si el promedio de las estimaciones se aproxima a 2.
Implementación en Java
A continuación mostramos el código básico en Java para una sola simulación. Usamos `Random` para generar números aleatorios con distribución normal estándar.
import java.util.Random;
public class SimulacionRegresion {
public static void main(String[] args) {
Random rand = new Random();
int n = 10000; // tamaño de muestra
double[] x = new double[n];
double[] y = new double[n];
for (int i = 0; i < n; i++) {
x[i] = rand.nextGaussian(); // x ~ N(0,1)
y[i] = 1.0 + 2.0 * x[i] + rand.nextGaussian(); // y = 1 + 2x + ε
}
double[] beta = RegresionSimple.estimar(x, y);
System.out.println("Beta estimados: " + beta[0] + ", " + beta[1]);
}
}
Simulación repetida para verificar propiedades asintóticas
Para verificar la consistencia y normalidad, no basta una sola ejecución. Debemos repetir el experimento muchas veces (por ejemplo, 1000 simulaciones), registrar el valor estimado de \( \hat{\beta}_1 \) en cada ejecución, y luego analizar su distribución.
Este es un esquema básico de cómo realizar múltiples simulaciones:
int repeticiones = 1000;
double[] estimacionesBeta1 = new double[repeticiones];
for (int r = 0; r < repeticiones; r++) {
for (int i = 0; i < n; i++) {
x[i] = rand.nextGaussian();
y[i] = 1.0 + 2.0 * x[i] + rand.nextGaussian();
}
double[] beta = RegresionSimple.estimar(x, y);
estimacionesBeta1[r] = beta[1];
}
Luego, podrías graficar un histograma de los valores contenidos en `estimacionesBeta1` usando alguna librería gráfica como JFreeChart
en Java, o exportar los datos a un archivo `.csv` para analizarlos con Python, R o Excel.
Qué esperar del resultado
- El promedio de los \( \hat{\beta}_1 \) estimados debería estar muy cerca de 2, confirmando la consistencia.
- El histograma de los \( \hat{\beta}_1 \) estimados debería tener forma de campana (curva normal), confirmando la normalidad asintótica.
- La varianza empírica de las estimaciones debería decrecer al aumentar el tamaño muestral \(n\).
Este tipo de simulación Monte Carlo no solo ayuda a confirmar propiedades teóricas, sino que también es una excelente herramienta pedagógica para visualizar conceptos abstractos como convergencia en probabilidad y convergencia en distribución.
Interpretación de Resultados
- Si la media de los estimadores se acerca al valor verdadero, hay consistencia.
- Si la distribución simulada se aproxima a una normal, hay normalidad asintótica.
- La varianza estimada debería aproximarse a la esperada teórica.
Posibles Extensiones
- Regresión con errores heterocedásticos
- Uso de variables instrumentales
- Modelos no lineales (logit, probit)
- Implementación de inferencia y pruebas de hipótesis
Conclusión
El método de mínimos cuadrados proporciona una base sólida para la estimación de modelos lineales. Su implementación en Java permite realizar simulaciones que confirman propiedades fundamentales como la consistencia y la normalidad asintótica de los estimadores. Estos conceptos son esenciales para una correcta interpretación y aplicación de técnicas econométricas en la práctica.