Análisis de Residuos

R: Normalidad de los Residuos

Estudiar el comportamiento de los residuos u_i = Y_i - \hat{Y}_i es de vital importancia para el análisis de regresión, pues varios de los supuestos del Modelo Clásico de Regresión Lineal (MCRL) hacen énfasis en los residuos, es por esto que se recurre a herramientas que nos permitan verificar si se cumplen estos supuestos y así, aumentar la confiabilidad sobre las conclusiones que se hagan a partir del modelo planteado.

También pudiera interesarte

Anuncios

Datos a considerar para los ejemplos

Consideremos un pequeño conjunto de datos, particularmente, los datos que se encuentran en la Tabla 3.2 del libro de Econometría de Damodar N. Gujarati and Dawn Porter en su quinta edición. Este conjunto de datos proporciona los datos primarios que se necesitan para estimar el efecto cuantitativo de la escolaridad en los salarios:

ObservaciónSalarioEscolaridad
14.45676
25.777
35.97878
47.33179
57.318210
66.584411
77.818212
87.835113
911.022314
1010.673815
1110.836116
1213.61517
1313.53118
Tabla 3.2

Normalidad

El modelo clásico de regresión lineal normal supone que cada u_i está normalmente distribuida si

  • Media: E(u_i)=0
  • Varianza: var(u_i) = \sigma^2
  • Covarianza: cov(u_i,u_j) = 0, , i \neq j

Estos supuestos se expresan en forma más compacta como

u_i \sim N(0,\sigma^2)

Donde el símbolo sim significa distribuido, N denota distribución normal y los términos entre paréntesis representan los dos parámetros de la distribución normal: la media y la varianza, respectivamente.

Esta verificación se pude hacer de dos formas: Gráficamente o Estadísticamente.

Gráficamente

Histograma

Podemos graficar un histograma recurriendo a la instrucción hist() para hacer un histograma representando las frecuencias, entonces si previamente hemos definido el modelo lineal usando la instrucción lm() usamos la siguiente sintaxis:

hist(lm(Y~X)$residuals)

Aunque si queremos ver un histograma representando la densidad, incorporamos la opción prob = TRUE en la instrucción hist() y más aún, si queremos representar sobre nuestro histograma la línea de densidad, recurrimos a la instrucción line() en conjunto con la instrucción density() usando la siguiente sintaxis:

hist(lm(Y~X)$residuals,prob = TRUE)
lines(density(lm(Y~X)$residuals))

Ejemplo

Una vez que hemos calculado el modelo lineal que define este conjunto de datos usando la instrucción lm(), podemos generar un histograma de los residuos usando la siguiente sintaxis:

hist(se.lm$residuals,prob = TRUE)
lines(density(se.lm$residuals))

Al ejecutar esta instrucción obtenemos el gráfico que estamos buscando:

El gráfico de barras que representa el histograma no demuestra de forma concreta una distribución normal y aunque la línea pareciera dibujar una especie de campana con una protuberancia en el lado izquierdo, no podemos hacer una conclusión fehaciente, así que también se deben llevar a cabo pruebas estadísticas.

Normal QQ-Plot

El QQ-Plot se traduce como el Diagrama de Cuantil-Cuantil y es un diagrama de dispersión que permite comparar distribución de probabilidades. Una gráfica Q-Q es una gráfica de dispersión creada al graficar dos conjuntos de cuantiles entre sí. Si ambos conjuntos de cuantiles provienen de la misma distribución, deberíamos ver los puntos formando una línea que es aproximadamente recta.

Es decir, al comparar la distribución de probabilidad normal con la distribución de probabilidad de los residuos de nuestro modelo lineal, si estos forman una línea recta, este es un indicador de que los residuos están distribuidos de forma normal.

Este gráfico se puede generar con usando la instrucción plot() sobre el modelo lineal, que genera cuatro gráficos pero en este caso nos interesará sólo uno de ellos, el 2:

plot(lm(Y~X),2)

Ejemplo

Una vez que hemos calculado el modelo lineal que define este conjunto de datos usando la instrucción lm(), podemos generar un histograma de los residuos usando la siguiente sintaxis:

plot(lm(salario~escolaridad),2)

Al ejecutar esta instrucción obtenemos el gráfico que estamos buscando:

Aunque no de forma precisa, podemos notar que el diagrama de dispersión pareciera ajustarse a la recta indentidad, representada con una línea punteada, por lo que este gráfico sugiere que sí hay una distribución normal de los residuos. Sin embargo, no podemos hacer una conclusión fehaciente, así que también se deben llevar a cabo pruebas estadísticas.

Estadísticamente

Jarque–Bera test

La Prueba de Jarque-Bera partiendo del hecho de que una distribución normal tiene coeficiente de asimetría igual a 0 y Curtosis igual a 3. Estos dos elementos se miden a partir de los residuos de nuestro modelo lineal usando la siguientes formulas, respectivamente:

S = dfrac{ hat{mu}_3 }{ hat{sigma}^3 } = dfrac{frac1n sum_{i=1}^n (x_i-bar{x})^3} {left(frac1n sum_{i=1}^n (x_i-bar{x})^2 right)^{3/2}} y K = dfrac{ hat{mu}_4 }{ hat{sigma}^4 } = dfrac{frac1n sum_{i=1}^n (x_i-bar{x})^4} {left(frac1n sum_{i=1}^n (x_i-bar{x})^2 right)^{2}}

Definiendo así el coeficiente de asimetría (S) y la curtosis (K), se define el estadístico de Jarque-Bera de la siguiente forma:

mathit{JB} = frac{n}{6} left( S^2 + frac14 (K-3)^2 right)

Si el valor del estadístico es igual a cero, este es un indicador de que la distribución de los residuos es normal. Más aún, El estadístico de Jarque-Bera se distribuye asintóticamente como una distribución chi cuadrado con dos grados de libertad y puede usarse para probar la hipótesis nula de que los datos pertenecen a una distribución normal. La hipótesis nula es una hipótesis conjunta de que la asimetría y el exceso de curtosis son nulos (asimetría = 0 y curtosis = 3)

Para llevar a cabo esta prueba en R, se carga a la librería tseries y en ella recurrimos a la instrucción jarque.bera.test() usando la siguiente sintaxis:

library(tseries)
jarque.bera.test(lm(Y~X)$residuals)

Ejemplo

Una vez que hemos calculado el modelo lineal que define este conjunto de datos usando la instrucción lm(), podemos llevar a cabo la Prueba de Jarque-Bera, para esto, usamos la siguiente sintaxis:

library(tseries)
jarque.bera.test(se.lm$residuals)

Al ejecutar esta instrucción obtenemos los resultados de la prueba, donde nos interesará de forma particular que el p-value es igual a 0.6608, notando que este valor es mayor que 0.05, entonces no rechazamos la hipótesis nula y podemos asumir que el coeficiente de asimetría es igual a cero y que la curtosis es igual tres, por lo que asumimos que los residuos tienen una distribución normal.

En su consola debería aparecer:

> library(tseries)
> jarque.bera.test(se.lm$residuals)

	Jarque Bera Test

data:  se.lm$residuals
X-squared = 0.8287, df = 2, p-value = 0.6608
Anuncios

Bibliografía complementaria


Observaciones

Las pruebas expuestas en esta lección sirven para hacer algunas aseveraciones y su carácter didáctico es importante para entender el análisis de residuos, sin embargo, Jeffrey Wooldridge en su cuenta de twitter hace algunas observaciones que deben ser consideradas al hacer trabajos más especializados.

Anuncio publicitario

¿Tienes alguna duda? Compártela en los comentarios.

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.