Esta relación se debe modelar la variable de error:
(i.i.d. significa independiente e identicamente distribuidos),
\[ {\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,} \]
de forma compacta
\[ \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}, \]
Se deben satisfacer los siguientes supuestos:
\[ \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}} \]
Que son los elementos del modelo
\[ \boldsymbol{y} = \boldsymbol{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}, \]
\[ \underbrace{\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} }_{\boldsymbol{y}} = \underbrace{\begin{bmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_n \end{bmatrix}}_{\boldsymbol{X}} \underbrace{ \begin{bmatrix} \beta_0 \\ \beta_1 \\ \end{bmatrix}}_{\boldsymbol{\beta}} + \underbrace{\begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_n \end{bmatrix}}_{\boldsymbol{\varepsilon}} \]
\[ y_i=\beta_0+\beta_1x_i+\varepsilon_i \]
O de forma más simple como:
\[ y=\beta_0+\beta_1x+\varepsilon \]
El modelo de regresión lineal es estimado por la ecuación
\[ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1x. \]
Los estimados \( \hat{\beta}_0 \) y \( \hat{\beta}_1 \) de \( \beta_0 \) y \( \beta_1 \) respectivamente, son hallados mediante el método de mínimos cuadrados
Recordemos, que la ecuación viene dada por:
\[ y_i=\beta_0+\beta_1x_i+\varepsilon_i \]
\[ Q(\beta_0,\beta_1) = \sum\limits_i^n \varepsilon_i^2\\ = \sum_i \left(y_i - \hat{y_i} \right)^2 \\ = \sum_i \left(y_i - \beta_0 - \beta_1x_i\right)^2 \]
Derivando parcialmente \( Q \) respecto a \( \beta_0 \) y \( \beta_1 \) e igualando a cero para minimizar
\[ \frac{\partial{Q}}{\partial{\beta}_0} = \sum_i 2\left(y_i - \beta_0 - \beta_1x_i\right) (-1) = 0 \\ \frac{\partial{Q}}{\partial{\beta}_1} = \sum_i 2\left(y_i - \beta_0 - \beta_1x_i\right) (-x_i)=0 \]
Reescribiendo las ecuaciones
\[ n \beta_0 + \beta_1 \sum_i- x_i = \sum_i- y_i \label{eq:d6} \\ \beta_0 \sum_i- x_i + \beta_1 \sum_i- x_i^2 = \sum_i- x_i y_i \]
Escribiendo las ecuaciones en forma matricial,
\[ \begin{bmatrix} n & \sum x_i \\ \sum x_i & \sum x_{i}^{2} \end{bmatrix} \begin{bmatrix} \beta_0 \\ \beta_1 \end{bmatrix}= \begin{bmatrix} \sum y_i\\ \sum x_iy_i \end{bmatrix} \]
Por lo tanto,
\[ \begin{bmatrix} \hat{\beta}_0 \\ \hat{\beta}_1 \end{bmatrix}= \begin{bmatrix} n & \sum x_i \\ \sum x_i & \sum x_i^{2} \end{bmatrix}^{-1} \begin{bmatrix} \sum y_i\\ \sum x_iy_i \end{bmatrix} \]
luego, encontrando la inversa y multiplicando, tenemos
\[ \begin{bmatrix} \hat{\beta}_0 \\ \hat{\beta}_1 \end{bmatrix}= \frac{1}{\sum x_{i}^2- \left(\sum x_i\right)^2} \begin{bmatrix} \sum y_i \sum x_i^2 -\sum x_i \sum x_iy_i \\ n\sum x_iy_i - x_i\sum y_i \end{bmatrix} \]
la ecuación se puede escribir de forma compacta como:
\[ \hat{\boldsymbol{\beta}} = (\boldsymbol{X}'\boldsymbol{X})^{-1}\boldsymbol{X}'\boldsymbol{y} \]
Finalmente, tenemos los coeficientes estimados de \( \beta_0 \) y \( \beta_1 \) se pueden ver en las ecuaciones
\[ \hat{\beta}_0 = \frac{\sum y_i \sum x_i^2 -\sum x_i \sum x_iy_i}{\sum x_i^2- \left(\sum x_i\right)^2} \\ =\frac{\bar{y}\left(\sum x_i\right)^2-\bar{x}\sum x_iy_i}{\sum x_i^2- n\bar{x}^2} \]
\[ \hat{\beta}_1 = \frac{n\sum x_iy_i - \sum x_{i}\sum y_i}{\sum x_i^2- \left(\sum x_i\right)^2} \\ = \frac{ \sum x_iy_i- n \bar{x}\bar{y}}{\sum x_i^2-n\bar{x}^2} \]
Recordemos que el proceso de mínimos cuadrados se está usando para estimar la linea de regresión, por lo tanto, los parámetros \( \beta_0 \) y \( \beta_1 \) son estimados por \( \hat{\beta}_0 \) y \( \hat{\beta}_1 \).
Estos pueden ser reescritos en una forma más simple al definir las sumas de cuadrados.
\( \displaystyle ss_{xx}= \sum_i (x_i - \bar{x})^2 \\ \qquad = \sum_i x_i^2 - n \bar{x}^2 \)
\( ss_{yy}=\displaystyle \sum_i (y_i - \bar{y})^2 \\ \qquad = \sum_i y_i^2 - n \bar{y}^2 \)
\( ss_{xy}=\displaystyle \sum_i (x_i - \bar{x})(y_i - \bar{y}) \\ \qquad = \sum_i x_iy_i - n \bar{x}\bar{y} \)
Si dividimos por \( n \) cada ecuación, podemos reescribir cada una de ellas, así
\( \displaystyle \sigma_x^2 =\frac{ss_{xx}}{n} \)
\( \displaystyle \sigma_y^2 =\frac{ss_{yy}}{n} \)
\( \displaystyle Cov(x,y) =\frac{ss_{xy}}{n} \)
Aquí, \( Cov(x,y) \) es la covarianza; y \( \sigma_x^2 \) y \( \sigma_y^2 \), son las varianzas. Note que las cantidades \( \sum_i x_iy_i \) and \( \sum_i x_i^2 \) pueden interpretarse como un producto interior.
Ahora, reescribiendo \( \hat{\beta}_0 \) y \( \hat{\beta}_1 \) en términos de varianzas y covarianzas, tenemos lo siguiente:
\[ \hat{\beta}_1 = \frac{Cov(x,y)}{\sigma_x^2} =\frac{ss_{xy}}{ss_{xx}} \]
substituyendo las sumas de cuadrados, podemos escribir \( \hat{\beta}_0 \) en términos de \( \hat{\beta}_1 \); esto es,
\[ \hat{\beta}_0 = \bar{y} - \hat{\beta}_1\bar{x} \]
Se denomina sesgo de un estimador a la diferencia entre la esperanza (o valor esperado) del estimador y el verdadero valor del parámetro a estimar.
El valor esperado de \( \bar{X} \) es igual a la media de la población \( \mu \).
En efecto, si una muestra \( X=(x_1,x_2,...,x_n) \) procede de una población de media \( \mu \), quiere decir que:
\[ E[X=x_i]= \mu , \quad \text{para cualquier}\quad i=1,\dots,n. \]
La media aritmética o media presupuestal, \( \bar{X}=\frac{1}{n}\sum_{i=1}^nX_{i} \), con lo que, al aplicar las propiedades de linealidad de la esperanza matemática se tiene que:
\[ E[\bar{X}]=E\left[{\frac{1}{n}}\sum_{i=1}^{n}X_{i}\right] ={\frac{1}{n}}E\left[\sum_{i=1}^{n}X_{i}\right]\\ \qquad ={\frac{1}{n}}\sum_{i=1}^{n}E\left[X_{i}\right]={\frac{1}{n}}\sum_{i=1}^{n}\mu ={\frac{1}{n}}n\mu =\mu \]
Un estimador insesgado para la varianza \( \sigma^2_{e} \) de los residuales en el modelo de regresión lineal, está dado por
\[ s^2 = \displaystyle \frac{\sum_{i=1}^n \hat{\varepsilon}_i}{n-1-p}= \frac{\sum_{i=1}^n(y_i-\hat{y}_i)^2}{n-1-p} \]
donde
\[ \hat{y}_i=\boldsymbol{x}_i'\hat{\boldsymbol{\beta}} = \begin{bmatrix} 1 & x_i \\ \end{bmatrix} \begin{bmatrix} \hat\beta_0 \\ \hat\beta_1 \end{bmatrix} \]
Note que en la ecuación de la varianza, el número de variables en la regresión lineal simple es \( p=1 \); por lo tanto \( n-1-p=n-2 \). Además, \( s^2 \) se distribuye como una \( t-student \) con \( n-2 \) grados de libertad.
En el caso de regresión, la descomposición de la variación de la variable de respuesta \( Y \) es como sigue:
\[ \text{V.T DE Y = V. DEB. A LA REGRESIÓN + V. DEB. AL ERROR} \]
Realizando algunos cálculos algebraicos sencillos, tenemos la descomposición de estas variabilidades; que representan las sumas:
\[ \stackrel{\text{SST}}{\sum_{i=1}^n(y_i-\bar{y})^2} = \sum_{i=1}^n(y_i-\hat{y}_i+\hat{y}_i-\bar{y})^2= \stackrel{\text{SSR}}{\sum_{i=1}^n(\hat{y}_i-\bar{y})^2} + \stackrel{\text{SSE}}{\sum_{i=1}^n(y_i-\hat{y}_i)^2} \]
Cada una de estas sumas de cuadrados tiene una distribución \( \chi^2 \).
Veamos los constraste de la regresión para la pendiente (\( \beta_1 \)) del modelo de regresión lineal simple.
O dicho de otra manera,
Teniendo en cuenta que la posible influencia de \( X \) desaparecería si su coeficiente \( \beta_1 \) se anulase, esto nos lleva a elegir entre las posibilidades \( \beta_1=0 \) y \( \beta_1 \neq 0 \) y, por tanto, al siguiente contraste de hipótesis:
\[ \begin{align*} &H_0: \beta_1 =0 \quad (X \text{ no influye})\\ &H_1: \beta_1 \neq 0 \quad (X \text{ influye}) \end{align*} \]
| Fuentes de Variación | Grados de Libertad | Suma de Cuadrados | Cuadrados Medios | F |
|---|---|---|---|---|
| Debido a la regresión | 1 | \( SSR \) | \( MSR=\frac{SSR}{1} \) | \( \frac{MSR}{MSE} \) |
| Debido al Error | \( n-2 \) | \( SSE \) | \( MSE=\frac{SSE}{n-2} \) | |
| Total | \( n-1 \) | \( SST \) |
La decisión de aceptar o rechazar \( H_0 \) se va a tomar en base al estadístico que se obtiene a partir de este análisis de la varianza:
\[ \frac{MSR}{MSE}=\frac{\frac{SSR}{1}}{\frac{SSE}{n-2}} \]
Este estadístico tiene una distribución \( F_{1;n-2} \) (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}{1}}{\frac{SSE}{n-2}}>F_{(\alpha, gl_{num}=1, gl_{den}=n-2)} \]
También podemos alcanzar una decisión razonando con el \( p-valor \) de los datos. La manera más sencilla de “interpretar” y utilizar el \( p-valor \), es entendiendo el \( p-valor \) como el “apoyo que los datos dan a \( H_0 \)”. De este modo:
Por supuesto, obtendremos la misma decisión, tanto si trabajamos con el estadístico F como si trabajamos con el \( p-valor \).
En R, puede encontrar el valor del cuantil inferior de la distribución \( F_{(\alpha, df_{num};df_{den})} \) usando el comando qf(alpha, dfnum, dfden, lower.tail=F).
Los datos a continuación, pertencen a los precios y áreas de una muestra de 15 casas en la ciudad se San juan, PR.
library(readr)
#casas <- read_csv("c:/Desktop/libro_glm/datos/casas.csv")
casas <- read_csv("~/Desktop/libro_glm/datos/casas.csv")
casas$area <- as.numeric(casas$area)
casas$precio <- as.numeric(casas$precio)
head(casas)
# A tibble: 6 x 3
Casa area precio
<int> <dbl> <dbl>
1 1 3060 179000
2 2 1600 126500
3 3 2000 134500
4 4 1300 125000
5 5 2000 142000
6 6 1956 164000
library("ggplot2")
# grafico de datos casas (precio por area)
ggplot(data = casas, aes(x=area,y=precio))+
theme(text=element_text(size = 24))+
geom_point()
R los estimados de los coeficientes (\( \hat{\beta} \)'s) del modelo lineal estimado\[ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1x. \]
R.#prueba de hipotesis para beta_1 (anova)
mod.precio <- lm(precio ~ area, data = casas)
anova(mod.precio)
Analysis of Variance Table
Response: precio
Df Sum Sq Mean Sq F value Pr(>F)
area 1 7241245891 7241245891 36.3 0.000043 ***
Residuals 13 2591087442 199314419
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
A continuación, presentamos las pruebas de hipótesis más frecuentes para los parámetros \( \beta_0 \) y \( \beta_1 \). En esta prueba, se quiere verificar, si \( \beta_i \), \( i=0,1 \).
La prueba estadística para viene dada por:
\[ t_0= \frac{\hat{\beta}_i}{se(\hat{\beta}_i)} \]
Rechazamos \( H_0:\beta_i=0 \), si en la distribución \( t-student \), se cumple
\[ |t_0| > t_{(\frac{\alpha}{2},n-2)} \]
Para el caso en que queremos probar la hipótesis \( H_0: \beta_1 =0 \).
Es decir, queremos ver si la pendiente de la recta es cero.
\[ H_0: \beta_1 =0 \\ H_1: \beta_1 \neq 0 \]
donde
\[ se(\hat{\beta}_1)=\frac{s}{\sqrt{ss_{xx}}} \]
Si \( H_0: \beta_1=0 \) se rechaza, significa que la pendiente de la recta es significativo; luego, existe una relación lineal entre la variable predictora \( X \) y la variable respuesta \( Y \).
Para el caso en que queremos probar la hipótesis \( H_0: \beta_0 =0 \).
Es decir, queremos ver si el intercepto de la recta es cero.
\[ H_0: \beta_0 =0 \\ H_1: \beta_0 \neq 0 \]
donde
\[ se(\hat{\beta}_0)=s\sqrt{\frac{1}{n}+\frac{\bar{x}^2}{ss_{xx}}} \]
Si \( H_0: \beta_0=0 \) se rechaza, entonces significa que el intercepto de la recta es significativo; por lo tanto, tiene sentido en el modelo.
Enseguida ilustramos cómo se interpretan los coficientes \( \beta_0 \) y \( \beta_1 \) del modelo de regresión lineal para los datos de precios de casas.
mod1 = lm(precio ~ area, data = casas)
summary(mod1)
Call:
lm(formula = precio ~ area, data = casas)
Residuals:
Min 1Q Median 3Q Max
-19623 -8759 -2745 9157 31263
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 73167.75 12674.14 5.77 0.000065 ***
area 38.52 6.39 6.03 0.000043 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 14100 on 13 degrees of freedom
Multiple R-squared: 0.736, Adjusted R-squared: 0.716
F-statistic: 36.3 on 1 and 13 DF, p-value: 0.0000425
Indica el valor promedio de la variable de respuesta \( Y \) cuando \( X \) es cero. Si se tiene certeza de que la variable predictora \( X \) no puede asumir el valor 0, entonces la interpretación no tiene sentido.
Indica el cambio promedio en la variable de respuesta \( Y \) cuando \( X \) se incrementa en una unidad.
En nuestro ejemplo (casas) podemos ver que el intercepto estimado es \( \hat{\beta}_0 =73167.75 \) y la pendiente estimada \( \hat{\beta}_1 = \) 38.52. Por lo tanto la ecuación lineal es:
\[ \hat{precio} = 73167.75 + 38.52 \hspace{.1cm} \times \acute{a}rea \]
Vemos que por una unidad de área (\( pie^2 \)), el precio promedio de una casa se incrementa en 38.52 dólares. Notemos que para una casa de área 0, el precio estimado sería 73167.75; con lo cual la interpretación, en este caso, de la estimación del parámetro \( \beta_0 \) no tiene sentido.
Además, tenemos que la hipótesis nula \( H_0: \beta_1= 0 \) se rechaza si el “\( p-valor \)” de la prueba de F es menor que 0.05. Para el ejemplo de las casas, tememos que el \( p-valor= 0 <0.05 \). Por lo tanto, se rechaza la hipótesis de que \( \beta_1=0 \).
Intervalo de confianza del \( 100(1-\beta_0)\% \) para la pendiente \( \beta_1 \).
\[ \hat{\beta_1} \pm t_{(\frac{\alpha}{2}, n-2)} \frac{s}{\sqrt{ss_{xx}}} \]
Podemos calcular el intervalo de confianza del \( 100(1-\beta_0)\% \) para \( \beta_1 \), con la función confint().
confint(mod1, level = 0.95)
2.5 % 97.5 %
(Intercept) 45787 100549
area 25 52
donde
\[ \displaystyle r_{xy} = \frac{Cov(x,y)} {ss_x ss_y} \]
Otras equivalencias de \( R^2 \) son:
\[ R^2 = \frac{SSR}{SST} = 1 - \frac{SSE}{SST} = r^2_{xy}, \]
donde, SSR representa la suma de cuadrados debido a la regresión y SST representa la suma de cuadrados del total. Se puede demostrar que \( R^2=r^2_{xy} \).
El hecho de agregar variables explicativas \( X \) al modelo de regresión sólo puede aumentar el \( R^2 \) y nunca reducirlo.
Se sugiere que cuando se quieran comparar modelos de regresión con distinto número de covariables en vez de usarse el \( R^2 \).
Ajusta a \( R^2 \) dividiendo cada suma de cuadrados por sus correspondientes grados de libertad y no depende del número de variables que se incluyen en el modelo.
Tiene la de la siguiente forma
\[ \begin{align*} R^2_a & = 1 - \displaystyle \frac{\frac{SSR}{n-p-1}}{\frac{SST}{n-1}} \\ & = 1 - \left(\frac{n-1}{n-p-1}\right)\left( 1- R^2 \right) \end{align*} \]
Este coeficiente de determinación múltiple puede, de hecho, disminuir cuando se agrega una covariable al modelo
Si al comparar un modelo con las covariables \( X_1, . . . , X_k \) para explicar a \( Y \) con un modelo que tiene las mismas \( X_1,\dots,X_k \) y además a \( X_{k+1} \) como covariables vemos un aumento de los \( R^2_a \), esto es una indicación de que:
Si en cambio, el \( R^2_a \) no aumenta o incluso disminuye al incorporar a \( X_{k+1} \) al modelo, esto es señal de que:
Se busca es establecer un intervalo de confianza para la media \( \mu_y \) asumiendo que la relación entre \( X \) e \( Y \) es lineal,
\[ \hat{y} = \hat{\beta}_0 + \hat{\beta}_1 x_0 \]
Un intervalo de confianza del \( (1-\alpha)100\% \) para el valor medio \( \mu_y \) de todos los valores \( y \) dado que \( x = x_0 \) o escrito de una manera formal \( E[y|x=x_0] \) esta dado por:
\[ \hat{y} \pm t_{(1-\frac{\alpha}{2},n-2)} s\sqrt{h_{ii}} \]
\[ \hat{y} \pm t_{(1-\frac{\alpha}{2},n-2)} s \sqrt{\frac{1}{n}+\frac{(x_0-\bar{x})^2}{ss_{xx}}} \]
donde \( s \) es la varianza de los residuales estimada del modelo y \( h_{ii} \) es la llamada matriz sombrero (“hat”) o de proyección ortogonal.
Por ejemplo, si en particular \( x_0=1500 \), entonces podemos estimar el intervalo de confianza del \( 95\% \), para el precio medio de las casas. es decir, para los \( y's \) tales que \( x=x_0 \).
new.dat <- data.frame(area=1500)
predict(mod1,newdata =new.dat,interval='confidence')
fit lwr upr
1 130952 121339 140565
Se busca es establecer un intervalo de confianza para un el valor individual de las \( y \), asumiendo que la relación entre \( X \) e \( Y \) es lineal,
\[ \hat{y}_0 = \hat{\beta}_0 + \hat{\beta}_1 x_0 \]
Un intervalo de confianza del \( (1-\alpha)100\% \) para un valor individual de \( y \) dado que \( x = x_0 \) (\( E[y|x=x_0] \)), es de la forma:
\[ \hat{y}_0 \pm t_{(1-\frac{\alpha}{2},n-2)} s \sqrt{1+\frac{1}{n}+\frac{(x_0-\bar{x})^2}{ss_{xx}}} \]
Ahora, un intervalo de confianza del \( 98\% \) para el valor predicho (individual \hat{y}_0) del precio cuando el área de la casas es \( x_0=1500 \) sería:
new.dat <- data.frame(area=1500)
predict(mod1, newdata = new.dat,interval='prediction',level = 0.98)
fit lwr upr
1 130952 91721 170184
A continuación graficamos el modelo lineal para los datos casas, y sus respectivas bandas de intervalos; para la media de las \( y \) y los valores individuales de \( y \). Es decir, intervalos de confianza para \( \mu_{y|{x=x_0}} \) y \( y_{x=x_0} \).
# Figura 1.10
library("ggplot2")
precio_pred <- predict(mod1, interval="prediction")
new_data <- cbind(casas, precio_pred)
p<-ggplot(new_data, aes(area, precio))+
geom_point()+
geom_line(aes(y=lwr),color="red",linetype="dashed")+
geom_line(aes(y=upr),color="red",linetype="dashed")+
geom_smooth(method=lm, se=TRUE)+
theme(text=element_text(size = 26))
p
d <- casas
d$predicted <- predict(mod1)
d$residuals <- residuals(mod1)
library(dplyr)
d %>% select(precio, predicted, residuals) %>% head()
# A tibble: 6 x 3
precio predicted residuals
<dbl> <dbl> <dbl>
1 179000 191048 -12048
2 126500 134805 - 8305
3 134500 150214 -15714
4 125000 123248 1752
5 142000 150214 - 8214
6 164000 148519 15481
library("ggplot2")
ggplot(d, aes(x = area, y = precio))+
geom_smooth(method="lm",se=FALSE,color="lightgrey")+
geom_segment(aes(xend=area,yend=predicted),alpha=.4)+
geom_point(aes(alpha=abs(residuals)))+
guides(alpha = FALSE)+
geom_point(aes(y = predicted), shape = 1)+
theme_bw()+
theme(text=element_text(size = 26))
Permite cotejar normalidad. Si los puntos están “cerca” de una línea recta se concluye, que hay normalidad.
library("readr")
casas <- read_csv("~/Desktop/libro_glm/datos/casas.csv")
mod1 = lm(precio ~ area, data = casas)
ind = 1:dim(casas)[1]
v.ajus = residuals(mod1)
resd.est = rstandard(mod1)
resd.stu = rstudent(mod1)
pred = predict(mod1)
area=casas$area
data.res = data.frame(ind, v.ajus, resd.est, resd.stu, pred, area)
library("gridExtra")
library("ggplot2")
ggplot(data = data.res) + stat_qq(aes(sample = resd.est))+
geom_abline(color="blue")+
labs(title ="Plot de Normalidad",
x="Teóricos",y ="Observados")+
theme(text=element_text(size = 26))
También permite cotejar normalidad. Cuando el histograma es simétrico, con un único pico en el centro, se concluye que hay normalidad. Definimos los residuales como:
\[ \hat{\varepsilon}_i=y_i-\hat{y_i} \]
y los residuales estandarizados como:
\[ r_i=\frac{\hat{\varepsilon}_i}{s^2{\sqrt{1-h_{ii}}}} \]
donde \( s^2=\hat{\sigma}_{\varepsilon} \) es la varianza estimada de los residuales.
ggplot(data = data.res, aes(resd.est)) +
geom_histogram() +
labs(title = "Histograma de Residuales \nEstandarizados",
x = "Residuales", y = "Frecuencia")+
theme(text=element_text(size = 26))
Se usa para detectar si hay datos anormales, cuando hay datos que caen bastantes alejados, tanto en el sentido vertical como horizontal. También permite detectar si la varianza de los errores es constante con respecto a la variable de respuesta.
ggplot(data.res, aes(x=pred, y=v.ajus)) +
geom_point() +
geom_hline(yintercept = 0)+
labs(title="Plot de Resid. vs. Predichos \n(Fits)",
x = "Fitted", y = "Residuales")+
theme(text=element_text(size = 26))
Es más específico para detectar que observación es un dato anormal. Si se usan residuales estandarizados, entonces un dato con residual más allá de 2 ó -2 es considerado un “outlier” en el sentido vertical. A continuación se definen los residuales studentizados.
\[ t_i=\frac{\hat{\varepsilon}_i}{s^2_{R(-i)}{\sqrt{1-h_{ii}}}} \]
donde \( s^2_{R(-i)}=\hat{\sigma}_{\varepsilon_{(-i)}} \), es la varianza residual estimada del modelo de regresión obtenido a partir de la muestra en la que se ha eliminado la observación \( (x_i,y_i) \).
ggplot(data.res, aes(x=pred, y=resd.stu)) +
geom_point() +
geom_hline(yintercept = 0) +
labs(title="Plot de Resid. vs. Indice \nde Obs.",
x = "Fitted", y = "Resid. \nStudentizados")+
theme(text=element_text(size = 26))
Es usado para detectar datos anormales
Nos dice si la varianza de los errores es constante con respecto a la variable predictora.
ggplot(data.res, aes(x = area, y = v.ajus)) +
geom_point() +
geom_hline(yintercept=0)+
labs(title="Plot de Resid. vs. Var. \nPredictora",
x = "Área", y = "Residuales")+
theme(text=element_text(size = 26))
Se usa para detectar si hay dependencia en el tiempo de los datos.
Si se nota una tendencia periódica, se dice que la serie de los datos tiene autocorrelación.
Se define como:
\[ r_{k} = \frac{Cov(y_t,y_{t-k})}{\sqrt{Var(y_t)Var(y_{t-k})}} \]
ggplot(data.res, aes(x = ind, y = v.ajus)) +
geom_point() +
geom_line(color="red")+
geom_hline(yintercept=0)+
labs(title = "Plot de Resid. vs. Orden",
x = "Orden", y = "Residuales")+
theme(text=element_text(size = 26))
A continuación presentamos diferentes ejercicios para evaluar lo visto hasta aquí. Debe hacerlo “manualmente” (puede hacer cáculos en R) y mediante la función lm().
Estime los parámetros \( \beta_0 \) y \( \beta_1 \) (intercepto y pendiente de la recta de regresión).
Calcule los intervalos de confianza para los parámetros de regresión \( \beta_0 \) y \( \beta_1 \).
Realice las prueba de hipotesis correspondiente para la pendiente y el intercepto de la recta de regresión. Diga si se rechazan las hipótesis nulas; \( H_0: \beta_i=0 \), \( i=0,1 \) al \( 0.05\% \) (usar la prueba \( t-student \)); luego compare con el summary(mod1).
Calcule intervalos de confianza del \( (1-\alpha)100\% \) para:
Calcule el coeficiente de determinación usando alguna de las equivalencias de la ecuación que se presentó en clase y mediante la salida del summary(mod1).
Algunas de las transformaciones más frecuentes.
| Nombre del modelo | Ecuación del Modelo | Transformación | Modelo Linealizado |
|---|---|---|---|
| Exponencial | \( Y=\beta_0 e^{\beta_1 X} \) | \( Z=\log Y, \quad X=X \) | \( Z=\log \beta_0 +\beta_1 X \) |
| Logarítmico | \( Y= \beta_0 +\beta_1 \log X \) | \( Y=Y, \quad W=\log X \) | \( Y= \beta_0 + \beta_1 W \) |
| Doblemente Logarítmico | \( Y=\beta_0 X^{\beta_1} \) | \( Z=\log Y, \quad W=\log X \) | \( Z= \log \beta_0 + \beta_1 W \) |
| Hiperbólico | \( Y= \beta_0 + \beta_1/X \) | \( Y=Y, \quad W=1/X \) | \( Y= \beta_0 +\beta_1 W \) |
| Inverso | \( Y=1/(\beta_0 +\beta_1 X) \) | \( Z=1/Y, \quad X=X \) | \( Z=\beta_0 +\beta_1 X \) |
Una marca de coches quiere generar un modelo de regresión que permita predecir el incremento de la distancia en función de la velocidad.
\[ y = \beta_0 + x\beta_1 +\varepsilon \]
attach(cars)
head(cars)
speed dist
1 4 2
2 4 10
3 7 4
4 7 22
5 8 16
6 9 10
La figura nos muestra la gráfica de puntos de distancia vs. velocidad de los datos cars.
library(ggplot2)
ggplot(cars, aes(x = speed, y = dist)) +
geom_point(colour = "grey") +
labs(title="Distancia vs. velocidad") +
theme_bw()+
theme(plot.title = element_text(hjust = 0.5))+
theme(text=element_text(size = 26))
modelo_lineal <- lm(formula = speed ~ dist, data = cars)
summary(modelo_lineal)
Call:
lm(formula = speed ~ dist, data = cars)
Residuals:
Min 1Q Median 3Q Max
-7.529 -2.155 0.362 2.438 6.418
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.2839 0.8744 9.47 0.0000000000014 ***
dist 0.1656 0.0175 9.46 0.0000000000015 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.2 on 48 degrees of freedom
Multiple R-squared: 0.651, Adjusted R-squared: 0.644
F-statistic: 89.6 on 1 and 48 DF, p-value: 0.00000000000149
library("ggfortify")
autoplot(modelo_lineal, which = 1:6, ncol = 2, label.size = 2)
La figura nos muestra la recta de regresión para el modelo lineal.
Puede observar, que la recta no es la mejor aproximación de los datos.
Debería intentarse una transformación lineal o ajustar una regresión polinómica (se verá en regresión múltiple)
library(ggplot2)
ggplot(cars, aes(x = speed, y = dist)) +
geom_point(colour ="grey") +
stat_smooth(method='lm',aes(colour='lineal'),se=F)+
labs(title="Distancia vs. velocidad") +
theme_bw()+
theme(plot.title = element_text(hjust = 0.5))+
theme(text=element_text(size = 26))
Recordemos que en la tabla de transformaciones, se asume que los datos tienen la forma (modelo) de la ecuación
\[ Y= \beta_0 e^{\beta_1 \log X} \]
por lo tanto, tomando logaritmo natural en ambos miembros de la ecuación, se obtiene el siguiente modelo que es lineal en los parámetros:
\[ \qquad Y = \beta_0 e^{\beta_1 \log X}\\ \log(Y)= \beta'_0 +\beta_1 X \]
donde \( \beta'_0 = \log(\beta_0) \). En el modelo exponencial la propensión marginal(incremento instantaneo) de la distancia, viene dada por
\[ \frac{d \ dist}{d\ speed} = \beta_1\ speed \]
La interpretación de \( \beta_1 \) es la siguiente: si la velocidad (speed) se incrementa en 1 unidad, la distancia (dist) recorrida se incrementará en un porcentage de \( \beta_1\% \).
modelo_exp <- lm(log(speed) ~ dist, data = cars)
summary(modelo_exp)
Call:
lm(formula = log(speed) ~ dist, data = cars)
Residuals:
Min 1Q Median 3Q Max
-0.878 -0.122 0.051 0.188 0.466
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.14382 0.07699 27.85 < 2e-16 ***
dist 0.01206 0.00154 7.83 0.0000000004 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.28 on 48 degrees of freedom
Multiple R-squared: 0.561, Adjusted R-squared: 0.552
F-statistic: 61.3 on 1 and 48 DF, p-value: 0.000000000402
De acuerdo a las estimaciones del modelo exponencial, tenemos que: si incrementamos la velocidad 1 unidad(1 milla/hora), la distancia recorrida se incrementa en un 1.2\( \% \) (millas).
library("ggfortify")
autoplot(modelo_exp, which = 1:6, ncol = 2, label.size = 2)
En la figura anterior haga algunas interpretaciones correspondientes del modelo y sus residuales.
1.
2.
3.
\( \vdots \)
El ajuste del modelo exponencial, se adecua más a los datos.
Se puede verificar una regresión polinómica.
El \( R^2 = 0.56 \) y el \( R_a^2= 0.55 \), para el modelo polinomial, es menor que en el modelo lineal (\( R^2= 0.65 \) y el \( R^2_a= 0.64 \)).
No hay una ganacia en el \( R^2 \), ni en el \( R^2_a \), debido a que este mide la cantidad de variabilidad que recoge el modelo lineal, y en nuestro caso presentamos un modelo polinomial.
library(ggplot2)
ggplot(cars, aes(x = speed, y = dist)) +
geom_point(colour = "grey") +
geom_smooth(method="glm",
formula=y~x,aes(colour='Exponencial'),
method.args = list(family = gaussian(link='log')),se=F)+
scale_colour_discrete(name = "Modelo")+
labs(title="Distancia vs. velocidad") +
theme_bw()+
theme(plot.title = element_text(hjust = 0.5))+
theme(text=element_text(size = 22))
El modelo cuadratico es mucho mejor que el lineal.
Para interpretar el modelo cuadrático, se debe desacer la trasformación.
La interpretación de los coeficientes en el modelo lineal y el exponencial son diferentes.
library(ggplot2)
ggplot(cars, aes(x = speed, y = dist)) +
geom_point(colour = "grey") +
stat_smooth(method='lm',aes(colour='lineal'),se=F)+
geom_smooth(method ="glm",formula = y~x,
aes(colour = 'Exponencial'),
method.args =list(family=gaussian(link='log')),se=F)+
labs(title="Distancia vs. velocidad") +
theme(plot.title = element_text(hjust = 0.5))+
theme_bw()+
scale_colour_discrete(name = "Modelo")+
theme(text=element_text(size = 22))