La regresión lineal es una técnica estadística utilizada para estudiar la relación entre una variable respuesta y una o más variables explicativas.
Su objetivo principal es:
En esta práctica se estudiarán:
En esta guía se estudiarán los modelos de regresión lineal simple y
múltiple utilizando el conjunto de datos airquality.
Se abordarán los siguientes temas:
El modelo de regresión lineal múltiple se expresa como:
\[ Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_pX_p + \varepsilon \]
donde:
El término de error representa la variabilidad no explicada por el modelo.
El objetivo del modelo es explicar y predecir el comportamiento de la variable respuesta a partir de las variables explicativas.
Una vez estimados los parámetros mediante mínimos cuadrados ordinarios, el modelo ajustado se expresa como:
\[ \hat{Y}_i = \hat{\beta}_0 + \hat{\beta}_1X_{i1} + \hat{\beta}_2X_{i2} + \cdots + \hat{\beta}_pX_{ip} \]
donde:
Para que las estimaciones y pruebas de hipótesis sean válidas, el modelo debe cumplir ciertos supuestos estadísticos.
Existe una relación lineal entre la variable respuesta y las variables predictoras.
Matemáticamente:
\[ E(Y|X) =\beta_0 + \beta_1X_1 + \cdots + \beta_pX_p \]
Los cambios en las variables explicativas producen cambios lineales en el valor esperado de la respuesta.
Se evalúa mediante:
Los errores aleatorios deben ser independientes entre sí.
\[ Cov(\varepsilon_i,\varepsilon_j)=0 \quad \text{para } i\neq j \]
El error asociado a una observación no debe depender del error de otra observación.
Se evalúa mediante:
La varianza de los errores debe ser constante.
\[ Var(\varepsilon_i)=\sigma^2 \] La dispersión de los residuos debe mantenerse aproximadamente igual para todos los niveles de las variables predictoras.
Si la varianza cambia, aparece heterocedasticidad.
Se evalúa mediante:
Los errores aleatorios deben seguir una distribución normal:
\[ \varepsilon_i \sim N(0,\sigma^2) \]
Este supuesto es importante para:
Se evalúa mediante:
Las variables predictoras no deben presentar relaciones lineales fuertes entre sí.
La multicolinealidad puede:
Se evalúa mediante:
No deben existir observaciones que afecten excesivamente el ajuste del modelo.
Se analiza mediante:
Los parámetros del modelo se estiman mediante el método de mínimos cuadrados ordinarios (MCO), el cual minimiza:
\[ \sum_{i=1}^{n} e_i^2 \]
donde:
\[ e_i = Y_i - \hat{Y}_i \]
corresponde al residual asociado a la observación \(i\).
El modelo de regresión lineal múltiple puede expresarse en forma matricial como:
\[ \mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \]
donde:
\[ \mathbf{Y} = \begin{pmatrix} Y_1 \\ Y_2 \\ \vdots \\ Y_n \end{pmatrix} \]
es el vector de observaciones de la variable respuesta,
\[ \mathbf{X} = \begin{pmatrix} 1 & X_{11} & X_{12} & \cdots & X_{1p} \\ 1 & X_{21} & X_{22} & \cdots & X_{2p} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & X_{n1} & X_{n2} & \cdots & X_{np} \end{pmatrix} \]
es la matriz de diseño,
\[ \boldsymbol{\beta} = \begin{pmatrix} \beta_0 \\ \beta_1 \\ \vdots \\ \beta_p \end{pmatrix} \]
es el vector de parámetros desconocidos y
\[ \boldsymbol{\varepsilon} = \begin{pmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_n \end{pmatrix} \]
corresponde al vector de errores aleatorios.
El método de mínimos cuadrados ordinarios busca minimizar:
\[ S(\boldsymbol{\beta}) = (\mathbf{Y}-\mathbf{X}\boldsymbol{\beta})' (\mathbf{Y}-\mathbf{X}\boldsymbol{\beta}) \]
La solución del problema de optimización conduce al estimador:
\[ \hat{\boldsymbol{\beta}} = (\mathbf{X}'\mathbf{X})^{-1}\mathbf{X}'\mathbf{Y} \]
donde:
Los valores predichos del modelo se obtienen mediante:
\[ \hat{\mathbf{Y}} = \mathbf{X}\hat{\boldsymbol{\beta}} \]
El vector de residuos está dado por:
\[ \mathbf{e} = \mathbf{Y} - \hat{\mathbf{Y}} \]
Bajo los supuestos de Gauss-Markov:
\[ E(\boldsymbol{\varepsilon})=\mathbf{0} \]
\[ Var(\boldsymbol{\varepsilon})= \sigma^2\mathbf{I} \]
el estimador de mínimos cuadrados ordinarios es el Mejor Estimador Lineal Insesgado (MELI o BLUE).
Cada coeficiente \(\beta_j\) representa el cambio esperado en la variable respuesta ante un incremento de una unidad en la variable predictora \(X_j\), manteniendo constantes las demás variables del modelo.
## [1] 153 6
## Ozone Solar.R Wind Temp
## Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00
## 1st Qu.: 18.00 1st Qu.:115.8 1st Qu.: 7.400 1st Qu.:72.00
## Median : 31.50 Median :205.0 Median : 9.700 Median :79.00
## Mean : 42.13 Mean :185.9 Mean : 9.958 Mean :77.88
## 3rd Qu.: 63.25 3rd Qu.:258.8 3rd Qu.:11.500 3rd Qu.:85.00
## Max. :168.00 Max. :334.0 Max. :20.700 Max. :97.00
## NA's :37 NA's :7
## Month Day
## Min. :5.000 Min. : 1.0
## 1st Qu.:6.000 1st Qu.: 8.0
## Median :7.000 Median :16.0
## Mean :6.993 Mean :15.8
## 3rd Qu.:8.000 3rd Qu.:23.0
## Max. :9.000 Max. :31.0
##
Ozone: concentración de ozono.Solar.R: radiación solar.Wind: velocidad del viento.Temp: temperatura máxima diaria.Month: mes.Day: día.## Ozone Solar.R Wind Temp Month Day
## 37 7 0 0 0 0
## Ozone Solar.R Wind Temp Month Day
## 24.18 4.58 0.00 0.00 0.00 0.00
## [1] 111 6
## Ozone Solar.R Wind Temp
## Min. : 1.0 Min. : 7.0 Min. : 2.30 Min. :57.00
## 1st Qu.: 18.0 1st Qu.:113.5 1st Qu.: 7.40 1st Qu.:71.00
## Median : 31.0 Median :207.0 Median : 9.70 Median :79.00
## Mean : 42.1 Mean :184.8 Mean : 9.94 Mean :77.79
## 3rd Qu.: 62.0 3rd Qu.:255.5 3rd Qu.:11.50 3rd Qu.:84.50
## Max. :168.0 Max. :334.0 Max. :20.70 Max. :97.00
## Month Day
## Min. :5.000 Min. : 1.00
## 1st Qu.:6.000 1st Qu.: 9.00
## Median :7.000 Median :16.00
## Mean :7.216 Mean :15.95
## 3rd Qu.:9.000 3rd Qu.:22.50
## Max. :9.000 Max. :31.00
matriz_cor <- cor(airquality1)
corrplot(matriz_cor,
method = "color",
addCoef.col = "black",
main = "Matriz de correlaciones")ggpairs(
data = airquality1,
columns = c("Ozone", "Temp", "Solar.R", "Wind"),
upper = list(continuous = "cor"),
lower = list(continuous = "smooth"),
diag = list(continuous = "barDiag")
)## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value `binwidth`.
La normalidad se evalúa sobre la variable respuesta
(Ozone).
Se utiliza generalmente para muestras pequeñas.
Tiene el mismo sentido de la Prueba de Shapiro y se puede interpretarse con el valor p asociado.
## Warning in ks.test.default(airquality1$Ozone, "pnorm", mean(airquality1$Ozone),
## : ties should not be present for the one-sample Kolmogorov-Smirnov test
##
## Asymptotic one-sample Kolmogorov-Smirnov test
##
## data: airquality1$Ozone
## D = 0.15078, p-value = 0.01286
## alternative hypothesis: two-sided
set.seed(123)
muestra <- sample(
1:nrow(airquality1),
size = 0.7*nrow(airquality1)
)
datos_entrena <- airquality1[muestra, ]
datos_test <- airquality1[-muestra, ]
dim(datos_entrena)## [1] 77 6
## [1] 34 6
##
## Call:
## lm(formula = Ozone ~ Temp + Solar.R + Wind, data = datos_entrena)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.912 -16.086 -4.016 7.824 92.987
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -74.18853 28.90334 -2.567 0.0123 *
## Temp 1.84998 0.32151 5.754 1.91e-07 ***
## Solar.R 0.04507 0.02867 1.572 0.1202
## Wind -3.34508 0.80999 -4.130 9.55e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 22.4 on 73 degrees of freedom
## Multiple R-squared: 0.6131, Adjusted R-squared: 0.5972
## F-statistic: 38.56 on 3 and 73 DF, p-value: 4.82e-15
modelo2 <- lm(Ozone ~ Temp + Wind,data = datos_entrena)
modelo3 <- lm(Ozone ~ Temp,data = datos_entrena)
modelo4 <- lm(Ozone ~ Wind,data = datos_entrena)
summary(modelo2)##
## Call:
## lm(formula = Ozone ~ Temp + Wind, data = datos_entrena)
##
## Residuals:
## Min 1Q Median 3Q Max
## -31.286 -13.426 -3.265 9.515 95.391
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -78.7028 29.0450 -2.710 0.008364 **
## Temp 2.0035 0.3093 6.477 9.14e-09 ***
## Wind -3.2281 0.8145 -3.963 0.000169 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 22.62 on 74 degrees of freedom
## Multiple R-squared: 0.6, Adjusted R-squared: 0.5892
## F-statistic: 55.5 on 2 and 74 DF, p-value: 1.89e-15
##
## Call:
## lm(formula = Ozone ~ Temp, data = datos_entrena)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.864 -18.400 -2.936 7.919 114.832
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -158.7256 22.8333 -6.951 1.14e-09 ***
## Temp 2.6160 0.2931 8.926 2.06e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 24.74 on 75 degrees of freedom
## Multiple R-squared: 0.5151, Adjusted R-squared: 0.5086
## F-statistic: 79.67 on 1 and 75 DF, p-value: 2.061e-13
##
## Call:
## lm(formula = Ozone ~ Wind, data = datos_entrena)
##
## Residuals:
## Min 1Q Median 3Q Max
## -46.41 -20.48 -5.44 19.07 85.07
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 102.8704 9.4414 10.896 < 2e-16 ***
## Wind -5.8635 0.8774 -6.683 3.62e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 28.12 on 75 degrees of freedom
## Multiple R-squared: 0.3732, Adjusted R-squared: 0.3649
## F-statistic: 44.66 on 1 and 75 DF, p-value: 3.624e-09
La ecuación estimada del modelo es:
## (Intercept) Temp Solar.R Wind
## -74.18853389 1.84997635 0.04507057 -3.34507576
La forma general del modelo ajustado corresponde a:
\[ \hat{Y} = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_3 X_3 \]
En este caso:
\[ \widehat{Ozone} = \beta_0 + \beta_1(Temp) + \beta_2(Solar.R) + \beta_3(Wind) \]
Representa el valor esperado de Ozone cuando todas las
variables predictoras son cero.
TempSi Temp aumenta una unidad, el valor esperado de
Ozone cambia en \(\beta_1\) unidades, manteniendo constantes
las demás variables.
Solar.RIndica el cambio esperado en Ozone por cada unidad
adicional de radiación solar.
WindIndica el cambio esperado en Ozone por cada unidad
adicional en velocidad del viento.
El \(R^2\) representa el porcentaje de variabilidad explicado por el modelo.
## [1] 0.6130935
Evalúa si el modelo es significativo.
##
## Call:
## lm(formula = Ozone ~ Temp + Solar.R + Wind, data = datos_entrena)
##
## Residuals:
## Min 1Q Median 3Q Max
## -29.912 -16.086 -4.016 7.824 92.987
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -74.18853 28.90334 -2.567 0.0123 *
## Temp 1.84998 0.32151 5.754 1.91e-07 ***
## Solar.R 0.04507 0.02867 1.572 0.1202
## Wind -3.34508 0.80999 -4.130 9.55e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 22.4 on 73 degrees of freedom
## Multiple R-squared: 0.6131, Adjusted R-squared: 0.5972
## F-statistic: 38.56 on 3 and 73 DF, p-value: 4.82e-15
Cada predictor tiene una prueba t.
## 1 2 3 14 15 16
## 33.569730 37.567485 27.277277 27.497869 -8.115318 20.795153
Evalúa:
Los residuos deben distribuirse aleatoriamente alrededor de cero.
Evalúa normalidad de residuos. Los puntos deben seguir aproximadamente una línea recta.
Evalúa homocedasticidad.
Debe observarse dispersión constante.
Permite detectar:
\[ H_0:\text{Los residuos siguen una distribución normal} \]
\[ H_1:\text{Los residuos no siguen una distribución normal} \]
##
## Shapiro-Wilk normality test
##
## data: residuals(modelo1)
## W = 0.88364, p-value = 3.831e-06
Criterio de decisión
Prueba de no constancia de varianza (Non-Constant Variance Test), utilizada para evaluar el supuesto de homocedasticidad en modelos de regresión lineal.
La función ncvTest() implementa una versión de la:
## Non-constant Variance Score Test
## Variance formula: ~ fitted.values
## Chisquare = 4.823797, Df = 1, p = 0.028069
Interpretación
Se avalua con el test de Durvin Watson.
## lag Autocorrelation D-W Statistic p-value
## 1 -0.07866366 2.150219 0.478
## Alternative hypothesis: rho != 0
Criterio de decisión
La multicolinealidad se evalúa mediante el Factor de Inflación de la Varianza (VIF).
## Temp Solar.R Wind
## 1.468017 1.107675 1.343858
Interpretación
Estas observaciones pueden influir considerablemente en el ajuste del modelo.
Umbral de leverage alto
Una regla práctica común es considerar como observaciones de alto leverage aquellas que cumplen:
\[ h_{ii} > \frac{2(p+1)}{n} \]
donde:
leverage <- hatvalues(modelo1)
umbral <- 2*(length(coef(modelo1))/nrow(airquality1))
puntos_alto_leverage <- which(leverage > umbral)
puntos_alto_leverage## 120 82 18 13 40 9 129 22 20 48 88 21 148 4 7 121
## 2 3 4 18 21 22 34 48 60 61 66 69 70 71 73 77
La distancia de Cook es una medida utilizada para evaluar la influencia de cada observación sobre el ajuste global del modelo de regresión.
Esta medida combina:
El objetivo es identificar observaciones que puedan modificar considerablemente:
cooks_dist <- cooks.distance(modelo1)
puntos_influyentes <- which(
cooks_dist > 4/nrow(airquality1)
)
puntos_influyentes## 18 9 30 62 117 48 148
## 4 22 37 45 56 61 70
Interpretación
La línea roja representa un umbral de referencia:
\[ \frac{4}{n} \]
donde:
Las observaciones que superan este umbral deben analizarse cuidadosamente.
Interpretación:
## Start: AIC=681.71
## Ozone ~ Temp + Solar.R + Wind
##
## Df Sum of Sq RSS AIC
## <none> 48003 681.71
## - Solar.R 1 2986.2 50989 686.41
## - Wind 1 11641.6 59644 703.82
## - Temp 1 19049.9 67053 716.81
##
## Call:
## lm(formula = Ozone ~ Temp + Solar.R + Wind, data = airquality1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -40.485 -14.219 -3.551 10.097 95.619
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -64.34208 23.05472 -2.791 0.00623 **
## Temp 1.65209 0.25353 6.516 2.42e-09 ***
## Solar.R 0.05982 0.02319 2.580 0.01124 *
## Wind -3.33359 0.65441 -5.094 1.52e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 21.18 on 107 degrees of freedom
## Multiple R-squared: 0.6059, Adjusted R-squared: 0.5948
## F-statistic: 54.83 on 3 and 107 DF, p-value: < 2.2e-16
El mejor modelo será el que tenga el menor valor de AIC.
En regresión lineal es común ajustar varios modelos con diferentes combinaciones de variables predictoras.
La comparación de modelos permite seleccionar aquel que presente el mejor equilibrio entre:
Uno de los criterios más utilizados para esta comparación es el Criterio de Información de Akaike (AIC).
El AIC es una medida basada en teoría de información que evalúa simultáneamente:
El criterio se define como:
\[ AIC = -2\log(L) + 2k \]
donde:
El AIC penaliza los modelos excesivamente complejos.
El AIC busca un equilibrio entre:
El mejor modelo será aquel que presente el menor valor de AIC. Esto indica que el modelo logra:
modelo_temp <- lm(Ozone ~ Temp,
data = airquality1)
modelo_temp_solar <- lm(Ozone ~ Temp + Solar.R,
data = airquality1)
modelo_completo <- lm(Ozone ~ Temp + Solar.R + Wind,
data = airquality1)
AIC(modelo_temp,
modelo_temp_solar,
modelo_completo)nuevos_datos <- data.frame(
Temp = c(80,85,50,35),
Solar.R = c(200,250,100,105),
Wind = c(1,10,17.5,20)
)
pronostico <- predict(modelo1,
newdata = nuevos_datos)
nuevos_datos$Pronostico <- pronostico
nuevos_datosEn esta práctica se desarrollaron modelos de regresión lineal simple y múltiple, realizando:
La regresión lineal es una herramienta fundamental para explicar y predecir fenómenos a partir de variables cuantitativas.
Akaike, H. (1974). A new look at the statistical model identification. IEEE Transactions on Automatic Control, 19(6), 716–723.
Draper, N. R., & Smith, H. (1998). Applied Regression Analysis (3rd ed.). Wiley.
Faraway, J. J. (2016). Linear Models with R (2nd ed.). Chapman & Hall/CRC.
Fox, J., & Weisberg, S. (2019). An R Companion to Applied Regression (3rd ed.). Sage.
Kutner, M. H., Nachtsheim, C. J., Neter, J., & Li, W. (2005). Applied Linear Statistical Models (5th ed.). McGraw-Hill.
Montgomery, D. C., Peck, E. A., & Vining, G. G. (2021). Introduction to Linear Regression Analysis (6th ed.). Wiley.
Peña, D. (2002). Regresión y diseño de experimentos. Alianza Editorial.
Rawlings, J. O., Pantula, S. G., & Dickey, D. A. (1998). Applied Regression Analysis: A Research Tool (2nd ed.). Springer.
Rencher, A. C., & Schaalje, G. B. (2008). Linear Models in Statistics (2nd ed.). Wiley.
Seber, G. A. F., & Lee, A. J. (2012). Linear Regression Analysis (2nd ed.). Wiley.
Weisberg, S. (2014). Applied Linear Regression (4th ed.). Wiley.
James, G., Witten, D., Hastie, T., & Tibshirani, R. (2021). An Introduction to Statistical Learning with Applications in R (2nd ed.). Springer.
R Core Team. (2025). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing. https://www.r-project.org/
Fox, J. (2024). car: Companion to Applied Regression. R package version. https://cran.r-project.org/package=car
Kuhn, M. (2024). caret: Classification and Regression Training. R package version. https://cran.r-project.org/package=caret