Modelo lineal clásico

Regresión lineal múltiple




logo

Especialización en Estadística Aplicada

Roberto Trespalacios

Modelo lineal clásico y regresión lineal múltiple

Recordemos que definimos el modelo de regresión clásico, en el cual un conjunto de datos \( \{y_i,x_{i1},\ldots ,x_{ip}\}_{i=1}^{n} \) de \( n \) unidades estadísticas, un modelo de regresión lineal supone que la relación entre la variable dependiente \( y_i \) y el vector \( \boldsymbol{x}_i \) de \( p \) regresores es lineal.

\[ {\displaystyle y_{i}=\beta_{0}1+\beta_{1}x_{i1}+\cdots +\beta_{p}x_{ip}+\varepsilon_{i}\\= \boldsymbol{x}_i'\boldsymbol{\beta}+\varepsilon_{i},\qquad i=1,\ldots ,n,} \]

Estas \( n \) ecuaciones, pueden ser escritas de forma matricial, de la siguiente manera:

\[ \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}, \]

La ecuación toma la forma expandida: \[ \underbrace{\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}}_{\boldsymbol{y}} = \underbrace{\begin{bmatrix}1&x_{11}&\cdots &x_{1p}\\1&x_{21}&\cdots &x_{2p}\\\vdots &\vdots &\ddots &\vdots \\1&x_{n1}&\cdots &x_{np}\end{bmatrix}}_{\boldsymbol{X}} \underbrace{ \begin{bmatrix}\beta_{0}\\\beta_{1}\\\beta_{2}\\\vdots \\\beta_{p}\end{bmatrix}}_{\boldsymbol{\beta}} + \underbrace{\begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_n \end{bmatrix}}_{\boldsymbol{\varepsilon}} \]

Se deben satisfacer los siguientes supuestos:

  • \( E(y_i|\boldsymbol{x}_i)=\boldsymbol{x}_i'\boldsymbol{\beta} \)
  • \( Var(y_i|\boldsymbol{x}_i)=\sigma^2 \)
  • \( y_i|\boldsymbol{x}_i \stackrel{ind}{\sim} N(\boldsymbol{x}'_i\boldsymbol{\beta}, \sigma^2) \).

Modelo de regresión múltiple

Estimación de los coeficientes

De forma análoga al modelo de regresió lineal simple. Al despejar la ecuación en función del vector \( \boldsymbol{\beta} \), tenemos que

\[ \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \Rightarrow \boldsymbol{\varepsilon} = \boldsymbol{y} + \boldsymbol{X}\boldsymbol{\beta} \]

múltiplicando \( \boldsymbol{\varepsilon} \) por su transpuesta, obtenemos una función \( Q \):

\[ Q(\boldsymbol{\beta})= \boldsymbol{\varepsilon}' \boldsymbol{\varepsilon} = (\boldsymbol{y} + \boldsymbol{X}\boldsymbol{\beta})'(\boldsymbol{y} + \boldsymbol{X\beta}) \]

Derivando parcialmente \( Q \) respecto a \( \boldsymbol{\beta} \)

\[ \frac{\partial{Q(\boldsymbol{\beta})}}{\partial \boldsymbol{\beta}}= -2\boldsymbol{y}'\boldsymbol{X}+2\boldsymbol{\beta}' \boldsymbol{X}'\boldsymbol{X} \]

igualando a cero y solucionando el sistema lineal, encontramos que

\[ \boldsymbol{\beta}' \boldsymbol{X}'\boldsymbol{X}= \boldsymbol{y}'\boldsymbol{X} \]

\[ \boldsymbol{X}'\boldsymbol{X} \boldsymbol{\beta} = \boldsymbol{X}'\boldsymbol{y} \]

\[ \hat{\boldsymbol{\beta}}= (\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}'\boldsymbol{y} \]

Observación

  • \( \boldsymbol{X} \) es una matriz de dimensión \( n \times p \) (o \( p + 1 \) dependiendo de como se defina \( p \)) que es la llamada matriz de diseño.
  • \( \boldsymbol{X} \) debe tener un rango de columna completo para que exista el inverso, es decir, \( ran(\boldsymbol{X}) = p \Rightarrow (\boldsymbol{X}'\boldsymbol{X})^{-1} \) existe.

Regresión lineal múltiple (la matriz sombrero "Hat")

El vector de valores ajustados \( \boldsymbol{\hat{y}} \) en un modelo de regresión lineal se puede expresar como

\[ \begin{align*} \boldsymbol{\hat{y}} &= \boldsymbol{X \hat\beta} \\ &= \boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}'\boldsymbol{y}\\ &=\boldsymbol{H} \boldsymbol{y} \end{align*} \]

La matriz \( \boldsymbol{H}_{n \times n} = \boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}' \) es llamada regularmente, la matriz sombrero (matriz “hat” en inglés). Ella, “coloca” el sombrero sobre los valores de la variable \( \boldsymbol{y} \) y los “convierte” en valores predichos.

\[ \begin{align*} \hat{\boldsymbol{\varepsilon}} & =\boldsymbol{y} - \hat{\boldsymbol{y}} \\ & = \boldsymbol{y} -\boldsymbol{X}\hat{\boldsymbol{\beta}} \\ & = \boldsymbol{y} -\boldsymbol{Hy} \\ & =(\boldsymbol{I} - \boldsymbol{H})\boldsymbol{y} \end{align*} \]

Propiedades del estimador de mínimos cuadrados

El estimador MC (LS “least squares”) para \( \boldsymbol{\beta} \), tiene las siguientes propiedades:

  • \( \hat{\boldsymbol{\beta}} \) es insesgado, o sea \( E(\hat{\boldsymbol{\beta}}) = \boldsymbol{\beta} \).

  • \( Var(\hat{\boldsymbol{\beta}})=\sigma^2(\boldsymbol{X}'\boldsymbol{X})^{-1} \).

  • Si no se asume normalidad de los errores, entonces el estimador de mínimos cuadrados MC, \( \hat{\boldsymbol{\beta}} \) es el mejor estimador dentro de los estimadores lineales insesgados de \( \boldsymbol{\beta} \).

  • Si se asume normalidad de los errores, entonces \( \hat{\boldsymbol{\beta}} \) es el mejor estimador entre todos los estimadores insesgados de \( \boldsymbol{\beta} \).

Estimación de la varianza de los errores

Recordemos que:

\[ s^2 = \displaystyle \frac{SSE}{n-p-1} = \frac{\sum_{i=1}^n e^2_i}{n-p-1}= \frac{\boldsymbol{e}'\boldsymbol{e}}{n-p-1}= \frac{(\boldsymbol{y} - \boldsymbol{X} \boldsymbol{\beta})' (\boldsymbol{y} - \boldsymbol{X}\beta) }{n-p-1} \]

Pero \[ \begin{align*} SSE & = (\boldsymbol{y} - \boldsymbol{X} \boldsymbol{\beta})' (\boldsymbol{y} - \boldsymbol{X}\beta) \\ & = (\boldsymbol{y} - \boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}' \boldsymbol{y})' (\boldsymbol{y} - \boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}' \boldsymbol{y})\\ & = \boldsymbol{y}' (\boldsymbol{I} - \boldsymbol{H})' (\boldsymbol{I} -\boldsymbol{H})\boldsymbol{y}\\ & = \boldsymbol{y}' (\boldsymbol{I} -\boldsymbol{H})\boldsymbol{y} \end{align*} \]

donde \( \boldsymbol{H}=\boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}' \) es la matriz “Hat” (\( \boldsymbol{H}^2=\boldsymbol{H} \) y \( \boldsymbol{H}'=\boldsymbol{H} \)).

Por lo tanto, la varianza estimada de los errores puede ser escrita como:

\[ s^2 = \displaystyle \frac{SSE}{n-p-1} = \frac{\boldsymbol{y}'(\boldsymbol{I} - \boldsymbol{X}(\boldsymbol{X}'\boldsymbol{X})^{-1} \boldsymbol{X}')\boldsymbol{y}}{n-p-1}= \frac{\boldsymbol{y}'(\boldsymbol{I} -\boldsymbol{H}) \boldsymbol{y}}{n-p-1} \]

Interpretación del coeficiente de regresión estimado \(\beta_j\)

Regordemos que el modelo matricial de regresión múltiple \( \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon} \), podemos escribirlo para cada \( y_i \), así,

\[ y_i=\beta_{0}+\beta_{1}x_{i1}+\cdots +\beta_{ip}x_{ip}+\varepsilon_i \]

Observaciones

  • El estimado del coeficiente de regresión lineal \( \beta_j \), para \( j=1,2,\dots, p \), se representará por \( \hat{\beta}_j \).

  • \( \hat{\beta}_j \) indica el cambio promedio en la variable de respuesta \( Y \) cuando la variable predictora \( X_j \) cambia en una unidad adicional asumiendo que las otras variables predictoras permanecen constantes.

Ejemplo 3

Sean las variables predictoras altura(cm) y edad(años) vs. la variable respuesta peso (kg). Interprete el siguiente modelo. \[ \widehat{peso}=-0.7 + 1.3 \times altura + 0.4 \times edad \]

Inferencia en regresión lineal múltiple

Dentro de los métodos de inferencia, se encuentran:

  • Pruebas de hipótesis eintervalos de confianza acerca de los coeficientes del modelo de regresión poblacional.

  • Intervalos de confianza de las predicciones que se hacen con el modelo.

Observación

Suponemos que \( \varepsilon_i \stackrel{i.i.d}{\sim} N(0,\sigma^2 \boldsymbol{I}_n) \) equivalentemente, que \( \boldsymbol{y} \stackrel{i.i.d}{\sim} N(\boldsymbol{X}\boldsymbol{\beta}, \sigma^2 \boldsymbol{I}_n) \)

Intervalos de confianza para los coeficientes \(\boldsymbol{\beta}\)

El error estandar estimado para los \( \boldsymbol{\beta} \)

El error estandar estimado para los \( \beta \) viene dado por:

\[ se(\hat{\beta}_j)=\sqrt{\hat{V}(\hat{\boldsymbol{\beta}})_{jj}} = s \sqrt{C_{jj}} \]

Donde \( \hat{V}(\hat{\boldsymbol{\beta}})_{jj} \) es el j-ésimo elemento de la diagonal de la matriz de covarianzas de \( \beta \), \( \hat{V}(\hat{\boldsymbol{\beta}}) \); \( s \) es la desviación estandar de los errores y \( C_{jj} \) es el j-ésimo elemento de la diagonal de \( (\boldsymbol{X}'\boldsymbol{X})^{-1} \).

Intervalos de confianza para los \( \boldsymbol{\beta} \)

Definimos el intervalo de confianza para \( \boldsymbol{\beta} \) como:

\[ \hat{\beta}_i \pm t_{(\alpha/2,n - p - 1)}\sqrt{\hat{V}(\hat{\boldsymbol{\beta}})_{ii}} \]

o más exactamente,

\[ \hat{\beta}_i \pm t_{(\alpha/2,n - p - 1)}s \sqrt{C_{ii}} \]

donde \( t_{(\alpha/2,n-p-1)} \) es el cuantil superior \( \alpha/2 \) de una distribución \( t_{(n-p-1)} \).

Análisis de varianza (anova)

Fuentes de Variación Grados de Libertad Suma de Cuadrados Cuadrados Medios F
Debido a la regresión \( p \) \( SSR \) \( MSR=\frac{SSR}{p} \) \( \frac{MSR}{MSE} \)
Debido al Error \( n-p-1 \) \( SSE \) \( MSE=\frac{SSE}{n-p-1} \)
Total \( n-1 \) \( SST \)

La decisión de aceptar o rechazar \( H_0 \) se va a tomar en base al estadístico \( F \), que se obtiene a partir de este análisis de la varianza:

\[ \frac{MSR}{MSE}=\frac{\frac{SSR}{p}}{\frac{SSE}{n-p-1}} \]

Este estadístico tiene una distribución \( F_{(p,n-p-1)} \) (bajo \( H_0 \)) y por lo tanto, la regla de decisión es de la siguiente forma: Rechazamos \( H_0 \), al nivel de significación \( \alpha \), cuando

\[ F=\frac{\frac{SSR}{p}}{\frac{SSE}{n-p-1}}>F_{(\alpha, gl_{num}=p, gl_{den}=n-p-1)} \]

Inferencia en regresión lineal múltiple

Prueba \( t-student \)

Prueba de hipótesis donde cada coeficiente individual es cero.

\[ H_0:\beta_j =0 \\ H_1:\beta_j \neq 0 \]

La prueba estadística es la \( t-student \), se obtiene con summary del modelo.

\begin{equation} t_0= \frac{\hat{\beta}_j}{se(\hat{\beta}_j)} \sim t(gl = n - p -1) \end{equation}

  • Si \( |t_0| > t(\frac{\alpha}{2}, n - p -1) \); la variable es importante para el modelo.
  • El predictor \( X_j \) es importante para el modelo.

Prueba \( F \) de Fisher

Prueba de hipótesis de que todos los coeficientes son ceros

\[ H_0: \beta_0 = \beta_1= \dots= \beta_p =0 \\ H_1: \beta_j \neq 0, \hspace{.5cm} \text{para alguna } \beta_j \]

La prueba estadística es la \( F \), que se obtiene de la tabla anova del modelo.

\[ {\displaystyle F_0=\frac{\frac{SSR}{p}}{\frac{SSE}{n-p-1}}= \frac{MSR}{MSE} \sim F_{(gl_{num}=p,\ gl_{den} = n-p-1)}} \]

  • Si \( F_0 > F_{(\alpha,p,\ n-p-1)} \) entonces la regresión “funciona bien”.
  • Al menos un predictor es relevante para el modelo.

Valor predicho y varianza del valor predicho de \(Y\)

De forma similar a la regresión lineal simple, se desea predecir el valor medio de la variable de respuesta \( Y \) para una combinación predeterminada de las variables predictoras \( \boldsymbol{X}_1, \boldsymbol{X}_2, \dots, \boldsymbol{X}_p \).

Consideremos el vector de valores observados \( \boldsymbol{x}'_0 = (1, x_{01}, x_{02}, \cdots, x_{0p}) \)

El valor predicho para el valor medio de la variable de respuesta \( Y \), será

\[ \hat{y}_0 = \boldsymbol{x}'_0\hat{\boldsymbol{\beta}} =\hat{\beta}_0 + \hat{\beta}_1 x_{01}+ \hat{\beta}_1 x_{02} + \cdots + \hat{\beta}_p x_{0p} \]

y la varianza de \( \hat{y}_0 \)

\[ Var(\hat{y}_0)= \boldsymbol{x}'_0 Var(\hat{\boldsymbol{\beta}})\boldsymbol{x}_0 =\sigma^2\boldsymbol{x}'_0(\boldsymbol{X}'\boldsymbol{X})^{-1}\boldsymbol{x}_0 \]

por lo tanto, la varianza estimada de \( \hat{y}_0 \), será

\[ \widehat{Var}(\hat{y}_0)= \boldsymbol{x}'_0 \widehat{Var}(\hat{\boldsymbol{\beta}})\boldsymbol{x}_0 =s^2\boldsymbol{x}'_0(\boldsymbol{X}'\boldsymbol{X})^{-1}\boldsymbol{x}_0 \]

Intervalos de Confianza y de Predicción

Intervalo de confianza para el valor medio de las \( Y \)

Un intervalo de confianza del \( 100(1-\alpha)\% \) para el valor medio de las \( Y \), dado \( \boldsymbol{x}=\boldsymbol{x}'_0 \).

Es decir, para

\[ E[y|\boldsymbol{x}'_0=(x_{01}, x_{02}, \cdots, x_{0p})] \]

es de la forma

\[ \hat{y}_0 \pm t_{(\frac{\alpha}{2},n-p-1)} s\sqrt{\boldsymbol{x}'_0(\boldsymbol{X}'\boldsymbol{X})^{-1}\boldsymbol{x}_0} \]

Intervalo de predicción para el valor individual de las \( Y \)

Un intervalo de confianza (intervalo de predicción) del \( 100(1-\alpha)\% \) para el valor individual de las \( Y \), dado \( \boldsymbol{x}=\boldsymbol{x}'_0 \).

Es decir, para

\[ y_i|\boldsymbol{x}'_0=(x_{01}, x_{02}, \cdots, x_{0p}) \]

es de la forma

\[ \hat{y}_0 \pm t_{(\frac{\alpha}{2},n-p-1)} s\sqrt{1 + \boldsymbol{x}'_0(\boldsymbol{X}'\boldsymbol{X})^{-1}\boldsymbol{x}_0} \]

Selección del mejor modelo (eliminación Backward)

Eliminación backward (hacia atrás)

El procedimiento comienza construyendo el modelo con todas las predictoras y en cada paso se elimina una variable. La secuencia del procedimiento es la siguiente. Se define un nivel de significación fijo \( \alpha \).

  • El modelo inicial contiene todos los potenciales predictores (que denominado \( p \)).
  • Si todas las variables producen una contribución parcial significativa (es decir, un estadístico \( t \) con \( p-valor < \alpha \)) entonces el modelo completo es el modelo final.
  • De otro modo, se elimina la variable que tenga la menor contribución parcial (es decir, mayor \( p-valor \) del estadístico \( t \)) cuando las demás están en el modelo.
  • Se ajusta el nuevo modelo con (\( p-1 \)) predictores y se repiten los pasos 2 y hasta que todas las variables en el modelo tengan un coeficiente estimado cuyo \( p-valor \) asociado al estadístico t sea menor a \( \alpha \)

Observación

Si hay una alta multicolinealidad en el conjunto de los \( p \) predictores, este procedimiento no es muy recomendable.

Selección del mejor modelo (eliminación Forward)

Selección forward (incorporando variables)

  • Aquí en el modelo inicial se considera una regresión lineal simple que incluye a la variable predictora que da la correlación más alta con la variable de respuesta.
  • Se incluye una segunda variable en el modelo, que es aquella variable dentro de las no incluidas aún, que da el \( p-value \) más bajo para la prueba \( t \) o el valor de la prueba de \( t \) más grande en valor absoluto.
  • Se siguen incluyendo variables, notando que una vez que ésta es incluida ya no puede ser sacada del modelo.
  • El proceso termina cuando los \( p-values \) para la prueba \( t \) de todas las variables que aún no han sido incluidas son mayores que 0.05 ó la prueba de \( t \) es menor que 2 para dichas variables. Si se usa la prueba de \( F \), entonces el proceso termina cuando todas las \( F \) son menores que 4.

Observación

Si se usa un punto de corte pequeño (digamos \( \alpha < 0.01 \)) se pueden perder covariables importantes. Si se usa un punto de corte grande (\( \alpha < 0.20 \)) probablemente, el modelo contendrá más variables. Una vez que el procedimiento finaliza, no todas las variables en el modelo necesariamente tendrán coeficientes parciales significativos.

Selección del mejor modelo (eliminación Stepwise)

Selección stepwise (paso a paso)

Es una modificación del procedimiento forward que elimina una variable en el modelo si ésta pierde significación cuando se agregan otras variables.

  • La aproximación es la misma que la selección forward excepto que a cada paso, después de incorporar una variable, el procedimiento elimina del modelo las variables que ya no tienen contribución parcial significativa.

  • Una variable que entró en el modelo en una etapa, puede eventualmente, ser eliminada en un paso posterior.

  • En este caso será necesario definir un punto de corte para que ingrese una variable \( \alpha_I \) y otro para eliminarla del modelo \( \alpha_E \).

  • Uno puede desear ser menos exigente (mayor \( p-valor \)) en el punto de corte para que una variable salga del modelo una vez que ingresó, o usar el mismo valor para ambos. Este procedimiento, en general produce modelos con menos variables que la selección forward.

Ejemplo 1: Selección del mejor modelo (datos: Esperanza de vida media)

Un estudio quiere generar un modelo que permita predecir la esperanza de vida media de los habitantes de una ciudad en función de diferentes variables. Se dispone de información sobre: habitantes, analfabetismo, ingresos, esperanza de vida, asesinatos, universitarios, heladas, área y densidad poblacional.

# El data set empleado es el state.x77
# Para facilitar su interpretación se renombra y se modifica
require(dplyr)
datos <- as.data.frame(state.x77)
datos <- rename(habitantes = Population, analfabetismo = Illiteracy,
                ingresos = Income, esp_vida = `Life Exp`, 
                asesinatos = Murder, universitarios = `HS Grad`,
                heladas = Frost, area = Area, .data = datos)
datos <- mutate(.data = datos, densidad_pobl = habitantes * 1000 / area)
str(datos)
'data.frame':   50 obs. of  9 variables:
 $ habitantes    : num  3615 365 2212 2110 21198 ...
 $ ingresos      : num  3624 6315 4530 3378 5114 ...
 $ analfabetismo : num  2.1 1.5 1.8 1.9 1.1 0.7 1.1 0.9 1.3 2 ...
 $ esp_vida      : num  69 69.3 70.5 70.7 71.7 ...
 $ asesinatos    : num  15.1 11.3 7.8 10.1 10.3 6.8 3.1 6.2 10.7 13.9 ...
 $ universitarios: num  41.3 66.7 58.1 39.9 62.6 63.9 56 54.6 52.6 40.6 ...
 $ heladas       : num  20 152 15 65 20 166 139 103 11 60 ...
 $ area          : num  50708 566432 113417 51945 156361 ...
 $ densidad_pobl : num  71.291 0.644 19.503 40.62 135.571 ...

Gráfico de correlación los datos: Esp. de vida media

require(GGally)
ggpairs(datos, lower = list(continuous = "smooth"),
        diag = list(continuous = "bar"), axisLabels = "none")

plot of chunk unnamed-chunk-3

Análisis del gráfico de correlación los datos: Esperanza de vida media

Del análisis preliminar se pueden extraer las siguientes conclusiones:

  • Las variables que tienen una mayor relación lineal con la esperanza de vida son: asesinatos (\( r= -0.78 \)), analfabetismo (\( r= -0.59 \)) y universitarios (\( r= 0.58 \)).

  • Asesinatos y analfabetismo están medianamente correlacionados (\( r = 0.7 \)) por lo que posiblemente no sea útil introducir ambos predictores en el modelo.

  • Las variables habitantes, área y densidad poblacional muestran una distribución exponencial, una transformación logarítmica posiblemente haría más normal su distribución.

Generar el modelo completo mod1

Hay diferentes formas de llegar al modelo final más adecuado. El método mixto iniciando el modelo con todas las variables como predictores.

mod1 <- lm(esp_vida ~ habitantes + ingresos + analfabetismo + asesinatos +
               universitarios + heladas + area + densidad_pobl, data = datos )
summary(mod1)

Call:
lm(formula = esp_vida ~ habitantes + ingresos + analfabetismo + 
    asesinatos + universitarios + heladas + area + densidad_pobl, 
    data = datos)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.4751 -0.4589 -0.0635  0.5936  1.2182 

Coefficients:
                  Estimate  Std. Error t value    Pr(>|t|)    
(Intercept)    69.95061350  1.84294095   37.96     < 2e-16 ***
habitantes      0.00006480  0.00003001    2.16       0.037 *  
ingresos        0.00027007  0.00030869    0.87       0.387    
analfabetismo   0.30286067  0.40235557    0.75       0.456    
asesinatos     -0.32864802  0.04940573   -6.65 0.000000051 ***
universitarios  0.04290767  0.02331813    1.84       0.073 .  
heladas        -0.00458020  0.00318923   -1.44       0.159    
area           -0.00000156  0.00000191   -0.81       0.421    
densidad_pobl  -0.00110478  0.00073119   -1.51       0.138    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.73 on 41 degrees of freedom
Multiple R-squared:  0.75,  Adjusted R-squared:  0.701 
F-statistic: 15.4 on 8 and 41 DF,  p-value: 0.000000000379

Observaciones sobre el modelo completo mod1

  • El modelo con todas las variables introducidas como predictores tiene un \( R^2 = 0.7501 \), es capaz de explicar el \( 75.01\% \) de la variabilidad observada en la esperanza de vida. Además, \( R^2_a = 0.7013 \).

  • El \( p-valor = 3.787e-10 < 0.05 \) es significativo; por lo que se rechaza la hipotesis \( H_0: \beta_0=\beta_1= \cdots = \beta_j=0 \); es decir, al menos uno de los coeficientes parciales es distinto de 0.

  • No obstante, Muchos de ellos individualmente, no son significativos, es decir, no se rechaza \( H_0: \beta_j=0 \) para algún \( j=0,1,\dots,8 \), lo que es un indicativo que algunas variables podrían no contribuir al modelo.

Selección de los mejores predictores usando AIC.

En este caso se van a emplear la estrategia de stepwise mixto. El valor matemático empleado para determinar la calidad del modelo va a ser AIC (Akaike information criterion).

Observación 1

Puede usar en criterio BIC (Bayesian information criterion).

Observación 2

La función step se usa para los diferentes métodos de selección del mejor modelo (both, backward, forward). En el caso de “both”, será el metodo stepwise (paso a paso).

step(object = mod1, direction = "both", trace = 1)

Mejor modelo para los datos: Esperanza de vida media

Finalmente, el mejor modelo resultante del proceso de selección ha sido:

mod2 <- lm(formula = esp_vida ~ habitantes + asesinatos + universitarios + heladas, data = datos)
summary(mod2)

Call:
lm(formula = esp_vida ~ habitantes + asesinatos + universitarios + 
    heladas, data = datos)

Residuals:
   Min     1Q Median     3Q    Max 
-1.471 -0.535 -0.037  0.576  1.507 

Coefficients:
                 Estimate Std. Error t value      Pr(>|t|)    
(Intercept)    71.0271285  0.9528530   74.54       < 2e-16 ***
habitantes      0.0000501  0.0000251    2.00         0.052 .  
asesinatos     -0.3001488  0.0366095   -8.20 0.00000000018 ***
universitarios  0.0465822  0.0148271    3.14         0.003 ** 
heladas        -0.0059433  0.0024209   -2.46         0.018 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.72 on 45 degrees of freedom
Multiple R-squared:  0.736, Adjusted R-squared:  0.713 
F-statistic: 31.4 on 4 and 45 DF,  p-value: 0.0000000000017

Recomendaciones finales

Se recomienda mostrar el intervalo de confianza para cada uno de los coeficientes parciales de correlación:

confint(mod2)
                     2.5 %  97.5 %
(Intercept)    69.10798415 72.9463
habitantes     -0.00000045  0.0001
asesinatos     -0.37388403 -0.2264
universitarios  0.01671901  0.0764
heladas        -0.01081918 -0.0011

Interpretación

  • Si las variables se mantienen constantes, por cada unidad que aumenta el predictor en cuestión, la variable (\( Y \)) varía en promedio tantas unidades como indica la pendiente.

  • Por cada unidad que aumenta el predictor universitarios, la esperanza de vida aumenta en promedio 0.04658 unidades, manteniéndose constantes el resto de predictores.

\[ \widehat{esp\_vida} = 71.02712 + 0.00005 hab - 0.30014 ases + 0.04658 univ -0.00594 hel \]

Ejercicio de selección de variables

Para los datos mtcars, de R,

  1. Encuentra las correlaciones entre las variables. Concluya.

  2. Replique lo hecho en la selección de variables (usar cualquiera de los métodos).

  3. Ajuste el mejor modelo encontrado en la selección de variables. Concluya usando el \( R^2 \) y el \( R^2_a \); así como los \( p-values \) para las diferentes hipótesis sobre los \( \beta \).

  4. Construya intervalos de confianza para los coeficientes \( \beta \). Interprete.

  5. Interprete los coeficientes del mejor modelo ajustado y escribalo.

Regresión lineal múltiple (regresión polinómica)

Recordemos que definimos el modelo de regresión clásico, como la relación entre la variable dependiente \( y_i \) y el vector \( \boldsymbol{x}_i \) de \( p \) variables predictoras. Tomando la j-esima potencia de cada una (\( j = 1,2,\dots,p \)),

\[ {\displaystyle y_{i}=\beta_{0}1+\beta_{1}x_{i1}+\beta_{1}x^2_{i2}\cdots +\beta_{p}x^p_{ip}+\varepsilon_{i},\qquad i=1,\ldots ,n,} \]

Estas \( n \) ecuaciones, pueden ser escritas de forma matricial, de la siguiente manera:

\[ \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}, \]

La ecuación toma la forma expandida: \[ \underbrace{\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}}_{\boldsymbol{y}} = \underbrace{\begin{bmatrix} 1&x_{11}&x^2_{12} &\cdots &x^p_{1p}\\ 1&x_{21}&x^2_{22} & \cdots &x^p_{2p}\\ \vdots &\vdots &\ddots &\vdots \\ 1&x_{n1}&x^2_{n2}&\cdots &x^p_{np} \end{bmatrix}}_{\boldsymbol{X}} \underbrace{\begin{bmatrix} \beta_{0}\\ \beta_{1}\\ \beta_{2}\\ \vdots \\ \beta_{p} \end{bmatrix}}_{\boldsymbol{\beta}} + \underbrace{\begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_n \end{bmatrix}}_{\boldsymbol{\varepsilon}} \]

Regresión polinómica (supuestos del modelo)

Para el modelo

\[ {\displaystyle y_{i}=\beta_{0}1+\beta_{1}x_{i1}+\beta_{1}x^2_{i1}\cdots +\beta_{p}x^2_{ip}+\varepsilon_{i},\qquad i=1,\ldots ,n,} \]

Se deben satisfacer los siguientes supuestos:

  • \( E(y_i|\boldsymbol{x}_i)=\boldsymbol{x}_i'\boldsymbol{\beta} \)
  • \( Var(y_i|\boldsymbol{x}_i)=\sigma^2 \)
  • \( y_i|\boldsymbol{x}_i \stackrel{ind}{\sim} N(\boldsymbol{x}'_i\boldsymbol{\beta}, \sigma^2) \).

Regresión polinómica con R

En R se pueden generar modelos de regresión polinómica de diferentes formas:

  • Identificando cada elemento del polinomio (usando I()):
mod <- lm(formula = y ~ x + I(x^2) + I(x^3), data = datos)

Observación

El uso de I() es necesario ya que el símbolo \( \hat{} \) tiene otra función dentro de las fórmula de R.

  • Con la función poly():
mod <- lm(formula = y ~ poly(x, 3), data = datos)

Ejemplo 2: Regresión polinómica

Una marca de coches quiere generar un modelo de regresión que permita predecir el consumo de combustible (mpg) en función de la potencia del motor (horsepower).

library("readr")
# auto <- read_csv("c:/Escritorio/Datos/auto.csv")
auto <- read_csv("~/Desktop/libro_glm/datos/auto.csv")
head(auto)
# A tibble: 6 x 9
    mpg cylinders displacement horsepower weight acceleration  year origin
  <dbl>     <int>        <dbl>      <int>  <int>        <dbl> <int>  <int>
1  18.0         8          307        130   3504         12.0    70      1
2  15.0         8          350        165   3693         11.5    70      1
3  18.0         8          318        150   3436         11.0    70      1
4  16.0         8          304        150   3433         12.0    70      1
5  17.0         8          302        140   3449         10.5    70      1
6  15.0         8          429        198   4341         10.0    70      1
# ... with 1 more variable: name <chr>

Regresión polinómica (grado 1 - modelo lineal)

mod.lineal <- 
  lm(formula = mpg ~ horsepower, data = auto)
summary(mod.lineal)

Call:
lm(formula = mpg ~ horsepower, data = auto)

Residuals:
    Min      1Q  Median      3Q     Max 
-13.571  -3.259  -0.344   2.763  16.924 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 39.93586    0.71750    55.7   <2e-16 ***
horsepower  -0.15784    0.00645   -24.5   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.9 on 390 degrees of freedom
Multiple R-squared:  0.606, Adjusted R-squared:  0.605 
F-statistic:  600 on 1 and 390 DF,  p-value: <2e-16

La gráfica muestra una fuerte asociación entre el consumo y la potencia del motor.

library(ggplot2)
ggplot(auto, aes(x = horsepower, y =mpg))+
  geom_point(colour = "grey") +
  labs(title="Consumo vs potencia motor") +
  theme_bw()+
  theme(text=element_text(size = 24))

\label{fig.mod.hor} Gráfico de la recta de regresión lineal entre consumo vs potencia.

Gráfica de la regresión polinómica (grado 1)

  • La distribución de las observaciones apunta a que la relación entre ambas variables tiene cierta curvatura.

  • Un modelo lineal no puede captarla por completo, como se puede ver en la gráfica.

  • Se puede intentar ajustar un modelo polinómico o realizar alguna transformación lineal.

library(ggplot2)
ggplot(auto, aes(x = horsepower, y = mpg)) +
  geom_point(colour = "grey") +
  stat_smooth(method = "lm", formula = y ~ x, 
     aes(colour = 'lineal'), se = FALSE)+
  scale_colour_discrete(name = "Modelo")+
  labs(title="Consumo vs potencia motor") +
  theme_bw()+
  theme(text=element_text(size = 24))

 Gráfico de la recta de regresión lineal entre consumo vs potencia.

Gráfica de residuales del modelo polinómico (grado = 1)

A continuación presentamos los gráficos de residuales.

library("ggfortify")
autoplot(mod.lineal, which = 1:6, ncol = 2, label.size = 3)

Gráfico de la recta de regresión lineal entre consumo vs potencia.

Int. de res. del modelo lineal

\( \vdots \)

Regresión polinómica (grado 2 - modelo cuadrático)

mod.cuadratico <- 
  lm(formula = mpg~poly(horsepower,2), data = auto)
summary(mod.cuadratico)

Call:
lm(formula = mpg ~ poly(horsepower, 2), data = auto)

Residuals:
    Min      1Q  Median      3Q     Max 
-14.714  -2.594  -0.086   2.287  15.896 

Coefficients:
                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)            23.446      0.221   106.1   <2e-16 ***
poly(horsepower, 2)1 -120.138      4.374   -27.5   <2e-16 ***
poly(horsepower, 2)2   44.090      4.374    10.1   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.4 on 389 degrees of freedom
Multiple R-squared:  0.688, Adjusted R-squared:  0.686 
F-statistic:  428 on 2 and 389 DF,  p-value: <2e-16

Observación

  • Puesto que la asociación de mpg y horsepower es no lineal, al incorporar el cuadrado de horsepower el modelo mejora.
  • El valor \( R^2 \) del modelo cuadrático (0.69) es mayor que el obtenido con el modelo lineal simple (0.61) y el \( p-value \) del término cuadrático es altamente significativo.
  • Se puede concluir que el modelo cuadrático recoge mejor la verdadera relación entre el consumo de los vehículos y la potencia de su motor.

Gráfica de residuales del modelo polinómico(grado = 2)

library("ggfortify")
autoplot(mod.cuadratico, which = 1:6, ncol = 2, label.size = 2)

Gráficos de residuales del modelo cuadrático entre consumo vs potencia.

Interprete los residuales del modelo cuadrático

\( \vdots \)

Observación

Al tratarse de modelos anidados, se usa un anova para contrastar la hipótesis nula de que ambos modelos se ajustan a los datos igual de bien. (en nuestro caso el mejor es: grado = 2)

anova(mod.lineal, mod.cuadratico)
Analysis of Variance Table

Model 1: mpg ~ horsepower
Model 2: mpg ~ poly(horsepower, 2)
  Res.Df  RSS Df Sum of Sq   F Pr(>F)    
1    390 9386                            
2    389 7442  1      1944 102 <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Gráficos de los modelos polinómicos (grados = 1 y 2)

Modelo polinómico (grado = 2)

library(ggplot2)
ggplot(auto, aes(x = horsepower, y = mpg))+
  geom_point(colour="grey")+
  stat_smooth(method="lm",formula=y~poly(x,2),
    aes(colour = 'polinomial'), se=F)+
  scale_colour_discrete(name="Modelo")+
  labs(title="Consumo vs. potencia motor")+
  theme_bw()

Gráfico de la recta de regresión del modelo cuadrático entre consumo vs potencia.

Por norma, se deben incluir en el modelo los términos I(x^2) e I(x), aunque no sean significativos.

Comparación de modelo lineal y cuadrático

library(ggplot2)
ggplot(auto,aes(x=horsepower,y=mpg))+
  stat_smooth(method='lm',
    aes(colour='lineal'),se=F)+
  geom_point(colour = "grey")+
  stat_smooth(method="lm",formula=y~poly(x,2),
    aes(colour = 'polinomial'),se=F) +
  labs(title="Consumo vs. potencia motor")+
  scale_colour_discrete(name="Modelo")+
  theme_bw()

Gráfico de los modelos lineal y polinómico cuadrático para consumo vs potencia.

Regresión múltiple con variables continuas y categoricas

En algunas ocaciones el análisis de los datos requiere de varias categorías para uno o varios predictores. En este caso, se debe entender cada categoría como una recta de regresión diferente, y cada una de estas rectas se analiza en un contexto separado (a menos, que existan interacciones entre las variables categoricas). A continuación ilustremos con un ejemplo esta situación.

Ejemplo 4

Se dispone de un dataset que contiene información de 30 libros. Se conoce del peso total de cada libro, el volumen que tiene y el tipo de tapas (duras o blandas). Se quiere generar un modelo lineal múltiple que permita predecir el peso de un libro en función de su volumen y del tipo de tapas.

library("readr")
libros <- read_csv("~/Desktop/curso_glm_utb/datos/libros.csv")
head(libros)
# A tibble: 6 x 3
   peso volumen tipo_tapas
  <int>   <int> <chr>     
1   800     885 duras     
2   950    1016 duras     
3  1050    1125 duras     
4   350     239 duras     
5   750     701 duras     
6   600     641 duras     

Correlación entre cada par de variables cuantitativas

Analizar la correlación entre cada par de variables cuantitativas.

require(GGally)
ggpairs(libros, 
        lower = list(na = "na"),
        diag = list(na = "naDiag"), 
        upper = list(na = "na"),
        axisLabels = "none")+
  theme(text=element_text(size = 26))

plot of chunk unnamed-chunk-20

Se enfrentan cada par de variables cuantitativas mediante un diagrama de dispersión múltiple, para intuir si existe relación lineal o monotónica con la variable respuesta. Si no la hay, no es adecuado emplear un modelo de regresión lineal. Además, se estudia la relación entre variables para detectar posible colinialidad.

Test de correlación

cor.test(libros$peso, libros$volumen, method = "pearson")

    Pearson's product-moment correlation

data:  libros$peso and libros$volumen
t = 7, df = 10, p-value = 0.000006
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.71 0.97
sample estimates:
cor 
0.9 

Box-plot para las diferentes categorías

Para analizar las diferencias del valor promedio entre las categóricas se genera un boxplot con sus niveles para intuir su influencia en la variable dependiente.

Observación

El análisis gráfico y de correlación muestran una relación lineal significativa entre la variable peso y volumen. La variable tipo_tapas parece influir de forma significativa en el peso. Ambas variables pueden ser buenos predictores en un modelo lineal múltiple para la variable dependiente peso.

library("ggplot2")
ggplot(data = libros, 
       mapping=aes(x = tipo_tapas, y = peso, color=tipo_tapas)) +
  geom_boxplot() +
  geom_jitter(width = 0.1) +
  theme(legend.position = "none")+
  theme(text=element_text(size = 26))

plot of chunk unnamed-chunk-22

Ajuste del modelo lineal múltiple para los datos libros

A continuación se ajusta el modelo lineal

mod.libros <- lm(peso ~ volumen + tipo_tapas, data = libros)
summary(mod.libros)

Call:
lm(formula = peso ~ volumen + tipo_tapas, data = libros)

Residuals:
   Min     1Q Median     3Q    Max 
-110.1  -32.3  -16.1   28.9  210.9 

Coefficients:
                Estimate Std. Error t value    Pr(>|t|)    
(Intercept)      13.9156    59.4541    0.23     0.81889    
volumen           0.7180     0.0615   11.67 0.000000066 ***
tipo_tapasduras 184.0473    40.4942    4.55     0.00067 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 78 on 12 degrees of freedom
Multiple R-squared:  0.927, Adjusted R-squared:  0.915 
F-statistic: 76.7 on 2 and 12 DF,  p-value: 0.000000145

Intervalos de confianza para \( \beta \)

confint(mod.libros)
                  2.5 % 97.5 %
(Intercept)     -115.62 143.45
volumen            0.58   0.85
tipo_tapasduras   95.82 272.28

Observaciones respecto al ajuste del modelo mod.libros

Cada una de las pendientes de un modelo de regresión lineal múltiple se define del siguiente modo:

  • Si el resto de variables se mantienen constantes, por cada unidad que aumenta el predictor en cuestión, la variable \( Y \) varía en promedio tantas unidades como indica la pendiente.
  • En el caso del predictor volume, si el resto de variables no varían, por cada unidad de volumen que aumenta el libro el peso se incrementa en promedio 0.71795 unidades.

Observaciones sobre el modelo

  • Cuando un predictor es cualitativo, uno de sus niveles se considera de referencia (el que no aparece en la tabla de resultados) y se le asigna el valor de 0.
  • El valor de la pendiente de cada nivel de un predictor cualitativo se define como el promedio de unidades que dicho nivel está por encima o debajo del nivel de referencia.
  • Para el predictor tipo_tapas, el nivel de referencia es tapas blandas por lo que si el libro tiene este tipo de tapas se le da a la variable el valor 0 y si es de tapas duras el valor 1.
  • Acorde al modelo generado, los libros de tapa dura son en promedio 184.04727 unidades de peso superiores a los de tapa blanda.

Modelo: mod.libros y comentarios finales

El modelo final tendrá la forma siguiente:

\[ \widehat{Peso \ libro} = 13.91557 + 0.71795 \ volumen + 184.04727 \ tipo\_tapas \]

  • El modelo es capaz de explicar el \( 92.75\% \) de la variabilidad observada en el peso de los libros (\( R^2= 0.9275 \)).

  • El valor de \( R^2_a \) es muy alto y cercano al \( R^2 \) lo que indica que el modelo contiene predictores útiles.

  • El test F muestra un p-value de \( 1.455\times 10^{-07} \) por lo que el modelo en conjunto es significativo. Esto se corrobora con el p-value de cada predictor, en ambos casos significativo.