2025-10-16

Contenido

  • ¿Qué es la regresión lineal?
  • Supuestos del modelo
  • Regresión lineal simple
  • Regresión lineal múltiple
  • Interpretación de resultados
  • Diagnóstico del modelo
  • Ejemplo práctico

Introducción

¿Qué es la Regresión Lineal?

La regresión lineal es una técnica estadística para:

  • Modelar la relación entre variables
  • Predecir valores de una variable dependiente (Y)
  • A partir de una o más variables independientes (X)

Ecuación general:

\[Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + ... + \beta_pX_p + \epsilon\]

Donde:

  • \(\beta_0\): intercepto
  • \(\beta_i\): coeficientes de regresión
  • \(\epsilon\): error aleatorio

Supuestos del Modelo

Para que la regresión lineal sea válida:

  1. Linealidad: Relación lineal entre X e Y
  2. Independencia: Observaciones independientes
  3. Homocedasticidad: Varianza constante de errores
  4. Normalidad: Errores normalmente distribuidos
  5. No multicolinealidad: Variables independientes no correlacionadas (en regresión múltiple)

Regresión Lineal Simple

Modelo Simple

Una variable independiente:

\[Y = \beta_0 + \beta_1X + \epsilon\]

Interpretación:

  • \(\beta_0\): valor esperado de Y cuando X = 0
  • \(\beta_1\): cambio en Y por cada unidad de cambio en X

Ejemplo: Datos de Autos

# Usaremos el dataset mtcars
data(mtcars)
head(mtcars[, c("mpg", "wt", "hp", "disp")], 5)
##                    mpg    wt  hp disp
## Mazda RX4         21.0 2.620 110  160
## Mazda RX4 Wag     21.0 2.875 110  160
## Datsun 710        22.8 2.320  93  108
## Hornet 4 Drive    21.4 3.215 110  258
## Hornet Sportabout 18.7 3.440 175  360

Relación entre peso del auto (wt) y consumo (mpg)

Visualización de la Relación

ggplot(mtcars, aes(x = wt, y = mpg)) +
  geom_point(size = 3, color = "steelblue") +
  geom_smooth(method = "lm", se = TRUE, color = "red") +
  labs(title = "Relación entre Peso y Consumo",
       x = "Peso (1000 lbs)", y = "Millas por Galón") +
  theme_minimal(base_size = 14)

Ajuste del Modelo Simple

# Ajustar modelo
modelo_simple <- lm(mpg ~ wt, data = mtcars)

# Resumen del modelo
summary(modelo_simple)
## 
## Call:
## lm(formula = mpg ~ wt, data = mtcars)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.5432 -2.3647 -0.1252  1.4096  6.8727 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  37.2851     1.8776  19.858  < 2e-16 ***
## wt           -5.3445     0.5591  -9.559 1.29e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 3.046 on 30 degrees of freedom
## Multiple R-squared:  0.7528, Adjusted R-squared:  0.7446 
## F-statistic: 91.38 on 1 and 30 DF,  p-value: 1.294e-10

Interpretación de Resultados

Del modelo anterior:

  • Intercepto (37.29): Un auto de peso 0 tendría 37.29 mpg (teórico)
  • Coeficiente wt (-5.34): Por cada 1000 lbs adicionales, el consumo disminuye 5.34 mpg
  • R² (0.75): El peso explica el 75% de la variabilidad en el consumo
  • p-value < 0.001: El modelo es estadísticamente significativo

Regresión Lineal Múltiple

Modelo Múltiple

Múltiples variables independientes:

\[mpg = \beta_0 + \beta_1 \cdot wt + \beta_2 \cdot hp + \beta_3 \cdot disp + \epsilon\]

Permite controlar por múltiples factores simultáneamente

Ajuste del Modelo Múltiple

# Modelo con múltiples predictores
modelo_multiple <- lm(mpg ~ wt + hp + disp, data = mtcars)
summary(modelo_multiple)
## 
## Call:
## lm(formula = mpg ~ wt + hp + disp, data = mtcars)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.891 -1.640 -0.172  1.061  5.861 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.105505   2.110815  17.579  < 2e-16 ***
## wt          -3.800891   1.066191  -3.565  0.00133 ** 
## hp          -0.031157   0.011436  -2.724  0.01097 *  
## disp        -0.000937   0.010350  -0.091  0.92851    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.639 on 28 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8083 
## F-statistic: 44.57 on 3 and 28 DF,  p-value: 8.65e-11

Comparación de Modelos

# R² ajustado
cat("R² Modelo Simple:", round(summary(modelo_simple)$adj.r.squared, 3), "\n")
## R² Modelo Simple: 0.745
cat("R² Modelo Múltiple:", round(summary(modelo_multiple)$adj.r.squared, 3), "\n")
## R² Modelo Múltiple: 0.808
# AIC (menor es mejor)
cat("\nAIC Modelo Simple:", round(AIC(modelo_simple), 2), "\n")
## 
## AIC Modelo Simple: 166.03
cat("AIC Modelo Múltiple:", round(AIC(modelo_multiple), 2))
## AIC Modelo Múltiple: 158.64

El modelo múltiple mejora el ajuste

Diagnóstico del Modelo

Gráficos de Diagnóstico

par(mfrow = c(2, 2))
plot(modelo_multiple)

Interpretación de Diagnósticos

  1. Residuals vs Fitted: Verificar linealidad y homocedasticidad
    • Patrón aleatorio es ideal
  2. Q-Q Plot: Verificar normalidad de residuos
    • Puntos sobre la línea indican normalidad
  3. Scale-Location: Verificar homocedasticidad
    • Línea horizontal indica varianza constante
  4. Residuals vs Leverage: Detectar valores influyentes
    • Puntos fuera de las líneas de Cook son influyentes

Predicciones

# Crear datos nuevos para predicción
nuevos_datos <- data.frame(
  wt = c(2.5, 3.0, 3.5),
  hp = c(100, 120, 150),
  disp = c(150, 200, 250)
)

# Realizar predicciones
predicciones <- predict(modelo_multiple, 
                        newdata = nuevos_datos, 
                        interval = "confidence")

# Mostrar resultados
cbind(nuevos_datos, predicciones)
##    wt  hp disp      fit      lwr      upr
## 1 2.5 100  150 24.34707 23.11400 25.58014
## 2 3.0 120  200 21.77665 20.74333 22.80996
## 3 3.5 150  250 18.89465 17.87373 19.91557

Visualización de Predicciones

# Predicciones vs valores reales
mtcars$predicho <- predict(modelo_multiple)

ggplot(mtcars, aes(x = mpg, y = predicho)) +
  geom_point(size = 3, color = "steelblue") +
  geom_abline(intercept = 0, slope = 1, color = "red", linetype = "dashed") +
  labs(title = "Valores Reales vs Predichos",
       x = "MPG Real", y = "MPG Predicho") +
  theme_minimal(base_size = 14)

Conclusiones

Puntos Clave

  • La regresión lineal modela relaciones entre variables
  • Verificar supuestos es crucial para validez
  • R² indica bondad de ajuste
  • Los diagnósticos identifican problemas
  • El modelo múltiple puede mejorar predicciones

Recursos Adicionales

  • Documentación R: ?lm
  • Libro: “An Introduction to Statistical Learning”
  • Paquetes útiles: car, lmtest, olsrr

¡Gracias!

# Para más información
?lm
help(package = "stats")