Regresión Lineal Múltiple

Author

Rubén Cool

Valores ajustados

El modelo ajustado de regresión que corresponde a los niveles de las variables regresoras \textbf{x}=[1, x_1, x_2, ..., x_n] es:

{\hat{y}}=\textbf{X} \hat{\beta}= \hat{\beta_0}+ \displaystyle \sum_{j=1}^k \hat{\beta_j}x_j

El vector de valores ajustados \hat{y}_i que corresponden a los valores observados y_i es:

\hat{{y}}=\textbf{X}\hat{\beta}=\textbf{X}(\textbf{X} ^t\textbf{X} )^{-1}\textbf{X} ^t\textbf{y}= H\textbf{y}donde H=\textbf{X}(\textbf{X} ^t\textbf{X} )^{-1}\textbf{X}^t es una matriz de n \times n y se le llama matriz sombrero. Aplica el vector de valores observados en un vector de valores ajustados. La matriz de sombrero y sus propiedades desempeñan un papel central en el análisis de regresión.

de valores observados en un vector de valores ajustados. La matriz de sombrero y sus propiedades desempeñan un papel central en el análisis de regresión.

Ejemplo 1.

El objetivo principal de la investigación original no era únicamente predecir el valor de las viviendas, sino estimar la disposición a pagar de la sociedad por una mejora en la calidad del aire.

Los autores combinaron datos del Censo de Población y Vivienda de EE. UU. de 1970 con mediciones meteorológicas y de contaminación atmosférica en el área metropolitana de Boston, Massachusetts, para construir un modelo de precios hedónicos que aislara el impacto de la contaminación por óxidos de nitrógeno (\text{NO}_x) sobre el mercado inmobiliario.

Muestra: El dataset consta de 506 observaciones.

Unidad de Análisis: Cada fila representa una sección censal (census tract) o vecindario del área urbana de Boston, no una casa individual. Por esta razón, la mayoría de las variables representan promedios, tasas o porcentajes agregados a nivel vecindario:

  • medv: La mediana del valor de las casas habitadas por sus dueños en esa sección censal ( y )

  • rm: El promedio del número de habitaciones por vivienda en la zona ( x_1 )

  • lstat: El porcentaje de la población clasificada dentro del estrato socioeconómico bajo ( x_2 )

  • ptratio: La razón promedio de alumnos por profesor en las escuelas del distrito ( x_3 )

  • tax representa la tasa de impuesto a la propiedad sobre el valor total ( x_4 )

Código R : Preparación de los datos

# 1. Instalar y cargar los paquetes requeridos
if (!require("ISLR2")) install.packages("ISLR2")
if (!require("dplyr")) install.packages("dplyr")

library(ISLR2)
library(dplyr)
library(ISLR)
library(corrplot)
library(car)

# 2. Cargar y filtrar solo las variables cuantitativas continuas de interés
data("Boston")

datos_cuant <- Boston %>%
  select(medv, rm, lstat, ptratio, tax) %>%
  na.omit()

# Confirmar la estructura (todas deben ser numéricas: num o dbl)
str(datos_cuant)
'data.frame':   506 obs. of  5 variables:
 $ medv   : num  24 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 ...
 $ rm     : num  6.58 6.42 7.18 7 7.15 ...
 $ lstat  : num  4.98 9.14 4.03 2.94 5.33 ...
 $ ptratio: num  15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
 $ tax    : num  296 242 242 222 222 222 311 311 311 311 ...
head(datos_cuant)
  medv    rm lstat ptratio tax
1 24.0 6.575  4.98    15.3 296
2 21.6 6.421  9.14    17.8 242
3 34.7 7.185  4.03    17.8 242
4 33.4 6.998  2.94    18.7 222
5 36.2 7.147  5.33    18.7 222
6 28.7 6.430  5.21    18.7 222

Diagnóstico de Multicolinealidad

# 3. Matriz de correlación
correlations <- cor(datos_cuant)
print(round(correlations, 3))
          medv     rm  lstat ptratio    tax
medv     1.000  0.695 -0.738  -0.508 -0.469
rm       0.695  1.000 -0.614  -0.356 -0.292
lstat   -0.738 -0.614  1.000   0.374  0.544
ptratio -0.508 -0.356  0.374   1.000  0.461
tax     -0.469 -0.292  0.544   0.461  1.000
corrplot(correlations, 
         method = "number", 
         order = "hclust", 
         type = "lower", 
         tl.col = "black", 
         tl.srt = 45,
         title = "Matriz de Correlación - Datos Boston",
         mar = c(0, 0, 2, 0))

Con base en la matriz de correlación y el corrplot podemos sospechar, de manera exploratoria, una presencia de Multicolinealidad moderada. Sin embargo, realizamos el análisis del VIF para determinar las variables predictoras que propician un multicolinealidad moderada en el modelo de regresión.

modelo_cuant <- lm(
  medv ~ rm + lstat + ptratio + tax,
  data = datos_cuant
)

vif(modelo_cuant)
      rm    lstat  ptratio      tax 
1.681468 2.093985 1.362615 1.621813 

Con base en el VIF, podemos concluir que existe presencia de Multicolinealidad moderada, por lo que no es de alarmarse. No es necesario eliminar alguna variable.

Por lo tanto, se inicia con un modelado con la siguiente estructura algebraica:

y=\beta_0 + \beta_1 x_1 + \beta_2x_2 + \beta_3x_3 +\epsilon

Los valores ajustados \hat y_i se calculan con el software de la siguiente manera:

head(modelo_cuant$fit)
       1        2        3        4        5        6 
31.05996 26.01911 32.30824 31.30190 30.68248 27.45968 

Matriz sombrero

X <- model.matrix(modelo_cuant)

#Calcular la matriz sombrero completa
H <- X %*% solve(t(X) %*% X) %*% t(X)

Residuales

La diferencia entre el valor observado \hat{{y}_i} y el valor ajustado {y}_i correspondiente es el residual e_i = {y}_i-\hat{{y}_i}. Los n residuales se pueden escribir cómodamente con notación matricial como sigue:

\textbf{e}= \textbf{y}-\hat{\textbf{y}}

Hay otras maneras de expresar el vector de residuales \textbf{e}, que pueden ser útiles, como:

\textbf{e}=\textbf{y}-\textbf{X}\hat{\beta}=\textbf{y}-H\textbf{y}= (I-H)\textbf{y}

Los valores de los residuales e_i se calculan con el software de la siguiente manera:

head(modelo_cuant$residuals)
        1         2         3         4         5         6 
-7.059964 -4.419111  2.391760  2.098100  5.517524  1.240324 

Estimación de \sigma^2

SS_{Res}=\displaystyle \sum_{i=1}^n (y_i- \hat{y_i})^2 = \textbf{e}^t\textbf{e}=(\textbf{y}-X\hat{\beta})^t(\textbf{y}-X\hat{\beta})

=(\textbf{y}^t-\hat{\beta}^tX^t)(\textbf{y}-X\hat{\beta})=\textbf{y}^t\textbf{y}-\hat{\beta}^tX^t\textbf{y}-\textbf{y}^tX\hat{\beta}+\hat{\beta}^tX^tX\hat{\beta}

=\textbf{y}^t\textbf{y}-2\hat{\beta}^tX^t\textbf{y}+\hat{\beta}^tX^tX\hat{\beta}

Como X^tX\hat{\beta}=X^ty entonces:

SS_{Res}=\textbf{y}^t\textbf{y}-2\hat{\beta}^tX^t\textbf{y}+\hat{\beta}^tX^tX\hat{\beta}=\textbf{y}^t\textbf{y}-2\hat{\beta}^tX^t\textbf{y}+\hat{\beta}^tX^ty

=\textbf{y}^t\textbf{y}-\hat{\beta}^tX^t\textbf{y}

Por lo tanto, \hat{\sigma}^2=\frac{SS_{Res}}{n-p}, donde p=k+1.

ANOVA

Fuente de Variación Suma de Cuadrados Grados de libertad Cuadrado Medio F_0
Regresión SS_{Reg} p-1 MS_{Reg}=SS_{Reg}/p-1 MS_{Reg}/MS_{Res}
Residuales SS_{Res} n-p MS_{Res}=SS_{Res}/n-p
Total SS_T n-1

Mediante el software se puede calcular la tabla del ANOVA de la siguiente manera:

ANOVA1<-anova(modelo_cuant)
ANOVA1
Analysis of Variance Table

Response: medv
           Df  Sum Sq Mean Sq  F value    Pr(>F)    
rm          1 20654.4 20654.4 756.2223 < 2.2e-16 ***
lstat       1  6622.6  6622.6 242.4728 < 2.2e-16 ***
ptratio     1  1711.3  1711.3  62.6569 1.593e-14 ***
tax         1    44.4    44.4   1.6242    0.2031    
Residuals 501 13683.6    27.3                       
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Para calcular el valor de SS_{Reg} se necesita sumar cada SS que aporta cada variable predictora x_j

SSREG<-sum(ANOVA1$`Sum Sq`[1:4]) #Suma los tres primeros valores 
SSRES<-ANOVA1$`Sum Sq`[5]
SST<-SSREG+SSRES

Por lo tanto SS_{Reg}=2.903267\times 10^{4} , SS_{Reg}=1.3683625\times 10^{4} y SS_T = 4.2716295\times 10^{4}.

Propiedades

  • Matriz Sombrero: H = X(X^T X)^{-1}X^T, con propiedades de simetría (H^T = H) e idempotencia (H^2 = H).

  • Valores ajustados: \hat{y} = Hy = X\hat{\beta}.

  • Residuos: e = y - \hat{y} = (I - H)y.

  • Ortogonalidad de los residuos: Por las ecuaciones normales, X^T e = \vec{\mathbf{0}}. Esto implica que:

    \hat{y}^T e = (X\hat{\beta})^T e =\vec{\mathbf{0}}

  • Suma de residuos nula: \mathbf{1}^T e = \vec0

Prueba de la significancia de la regresión

La prueba de la significancia de la regresión es para determinar si hay una relación lineal entre la respuesta y y cualquiera de las variables regresoras.

  • Contraste de hipótesis H_0: \beta_1=\beta_2=\cdots \beta_k=0 \hspace{1cm} vs. \hspace{1cm} H_1: \beta_j\neq 0 para alguna j=1,2,\dots, k.

  • Estadístico de Prueba F_0=\frac{MS_{Reg}}{MS_{Res}}

  • Región de Rechazo

    F_0>F_{\alpha, p-1, n-p}

Retomando el Ejemplo 1.

summary(modelo_cuant)

Call:
lm(formula = medv ~ rm + lstat + ptratio + tax, data = datos_cuant)

Residuals:
     Min       1Q   Median       3Q      Max 
-13.9862  -3.0327  -0.9504   1.7846  30.4802 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 17.674476   3.972999   4.449 1.07e-05 ***
rm           4.586067   0.429202  10.685  < 2e-16 ***
lstat       -0.545083   0.047126 -11.567  < 2e-16 ***
ptratio     -0.875195   0.125394  -6.980 9.43e-12 ***
tax         -0.002240   0.001757  -1.274    0.203    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.226 on 501 degrees of freedom
Multiple R-squared:  0.6797,    Adjusted R-squared:  0.6771 
F-statistic: 265.7 on 4 and 501 DF,  p-value: < 2.2e-16
  • Contraste de hipótesis H_0: \beta_1=\beta_2=\cdots \beta_4=0 \hspace{1cm} vs. \hspace{1cm} H_1: \beta_j\neq 0 para alguna j=1,2,\dots, 4.

  • Estadístico de Prueba F_0=\frac{MS_{Reg}}{MS_{Res}}=265.7

  • Región de Rechazo

    Con un \alpha=0.05 se obtiene que F_{\alpha,4,501}=0.1774. Como F_0=265.7>0.1774=F_{\alpha,4,501} entonces se rechaza H_0 con una significancia de \alpha=0.05. Esto quiere decir que, existe al menos una variable predictora entre rm, lstat, ptratio y tax que se relaciona de manera lineal con medv .

Important

En esta prueba de hipótesis, en caso de rechazar H_0, no nos dice realmente cuál o cuáles son las variables que se relacionan linealmente con y.