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:
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} \]
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*} \]
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} \).
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} \]
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 \]
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.
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 \]
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.
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) \)
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} \).
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)} \).
| 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)} \]
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}
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)}} \]
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 \]
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} \]
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} \]
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 \).
Si hay una alta multicolinealidad en el conjunto de los \( p \) predictores, este procedimiento no es muy recomendable.
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.
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.
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 ...
require(GGally)
ggpairs(datos, lower = list(continuous = "smooth"),
diag = list(continuous = "bar"), axisLabels = "none")
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.
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
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.
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).
Puede usar en criterio BIC (Bayesian information criterion).
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)
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
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 \]
Para los datos mtcars, de R,
Encuentra las correlaciones entre las variables. Concluya.
Replique lo hecho en la selección de variables (usar cualquiera de los métodos).
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 \).
Construya intervalos de confianza para los coeficientes \( \beta \). Interprete.
Interprete los coeficientes del mejor modelo ajustado y escribalo.
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}} \]
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:
En R se pueden generar modelos de regresión polinómica de diferentes formas:
I()): mod <- lm(formula = y ~ x + I(x^2) + I(x^3), data = datos)
El uso de I() es necesario ya que el símbolo \( \hat{} \) tiene otra función dentro de las fórmula de R.
poly():mod <- lm(formula = y ~ poly(x, 3), data = datos)
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>
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))
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))
A continuación presentamos los gráficos de residuales.
library("ggfortify")
autoplot(mod.lineal, which = 1:6, ncol = 2, label.size = 3)
\( \vdots \)
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
mpg y horsepower es no lineal, al incorporar el cuadrado de horsepower el modelo mejora.library("ggfortify")
autoplot(mod.cuadratico, which = 1:6, ncol = 2, label.size = 2)
\( \vdots \)
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
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()
I(x^2) e I(x), aunque no sean significativos.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()
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.
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
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))
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
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.
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))
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
confint(mod.libros)
2.5 % 97.5 %
(Intercept) -115.62 143.45
volumen 0.58 0.85
tipo_tapasduras 95.82 272.28
Cada una de las pendientes de un modelo de regresión lineal múltiple se define del siguiente modo:
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.