Heteroscedasticidad

Heteroscedasticidad

Heteroscedasticidad

Tras la sesión teórica, los estudiantes aprendieron:

  1. ¿Qué es heteroscedasticidad?
  2. ¿Por qué requerimos que los residuos sean homoscedásticos?
  3. ¿Cuál es la consecuencia de estimar bajo heteroscedasticidad?
  4. ¿Cómo detectar la presencia de heteroscedasticidad?
  5. ¿Cómo resolver la heterocedasticidad?

Ahora emplearemos datos para contextualizar, en términos del procedimiento de estimación, los acápites anteriores. Usaremos los datos contenidos en la base de datos mtcars

data(mtcars)
library(dplyr)

Detección de la heteroscedasticidad

Vamos a partir directamente con la detección de heteroscedasticidad, para ello hay dos métodos: informales que incluyen una simple inspección visual en búsqueda de patrones y, los formales, que se construyen sobre la base de una prueba de hipótesis.

Vamos a suponer que nos interesa determinar de qué depende el rendimiento, en términos de millas recorridas por cada galón de combustible consumido, para un conjunto de automóviles. Para ello disponemos de los datos de mtcars.

Método informal: inspección visual

Basado en el capitulo 11 de Guajarti y Porter (2008), específicamente en la página 377, nos presenta una serie de patrones entre la variable dependiente estimada \(\hat{y}\) y los residuos al cuadrado \(\hat{u}^2\), para lo cual debemos establecer nuestro modelo de regresión, en este caso, podríamos estimar:

\[ \hat{mpg_i} = \hat{\beta_0} + \hat{\beta_1} hp_i + \hat{\beta_2}wt_i + \hat{u}_i \]

Una inspección visual según Gujarati y Porter (2008) requiere, primero, estimar el modelo:

reg_1 <- lm(mpg ~ hp + wt, data = mtcars)

Una vez que estimamos el modelo, podemos hacer el gráfico según lo indica el libro:

plot(x=predict(reg_1), y = residuals(reg_1)^2)

Como lo sugiere la figura, no se ven indicios de presencia de heteroscedasticidad, sin embargo, recuérdese que este no es una prueba formal y que, los ojos son fácilmente engañables, así que procederemos a indagar sobre la heteroscedasticidad aplicando los test de Breusch-Pagan y el de White.

Método formal: test de hipótesis

Una vez estimado el modelo y con la sospecha de que estamos bajo homocesasticidad, procedemos a hacer los test formales:

Prueba de Breusch-Pagan

Bajo la hipótesis nula se establece que estamos en presencia de homoscedasticdad versus la alternativa que plantea existencia de heteroscedasticidad, es decir

\[ H_0: E(\hat{u_i}^2) = \sigma^2 \\ H_1: E(\hat{u_i}^2) = \sigma_i^2 \]

library(lmtest)
bptest(reg_1, studentize = FALSE) # imporantante fijar studentize = FALSE 
## 
##  Breusch-Pagan test
## 
## data:  reg_1
## BP = 1.0268, df = 2, p-value = 0.5985

Con base en estos resultados podemos determinar que, en los datos analizados bajo la relación establecida en nuestra regresión, no existen indicios de presencia de heteroscedasticidad. Por cuanto, a un nivel de 5% de significancia estadística fallamos en el rechazo de la \(H_0\).

Prueba de White

Por otro lado, si queremos ser un poco más exigente en la prueba de heteroscedasticidad, podemos emplear la propuesta de White quien introduce términos al cuadrado y términos en interacciones para probar la existencia de patrones idénticos en la varianza \(u\), así, la prueba sería:

bptest(reg_1, ~I(hp^2)+ I(wt^2) + hp*wt, data=mtcars)
## 
##  studentized Breusch-Pagan test
## 
## data:  reg_1
## BP = 6.5431, df = 5, p-value = 0.2569

Como se confirma, nuevamente hemos fallado al rechazar la hipótesis nula. Los dos resultados formales confirman la sospecha del método informal: No hay indicios de heteroscedasticidad.

¿Qué hacer cuando mis errores son homocedásticos?

Se procede con la aceptación del modelo y con su consecuente interpretación como sería de costumbre.

stargazer::stargazer(reg_1, title = "Modelo con regresores homocedásticos", 
                     type="html")
Modelo con regresores homocedásticos
Dependent variable:
mpg
hp -0.032***
(0.009)
wt -3.878***
(0.633)
Constant 37.227***
(1.599)
Observations 32
R2 0.827
Adjusted R2 0.815
Residual Std. Error 2.593 (df = 29)
F Statistic 69.211*** (df = 2; 29)
Note: p<0.1; p<0.05; p<0.01

En la clase anterior aprendimos a comparar si los regresores no eran colineales, se deja a los estudiantes la valoración de este modelo en función de su grado de colinealidad, ejercite:

  1. ¿Es un modelo adecuado para describir la relación entre \(mpg\) a través de \(hp\) y \(wt\)?

  2. Utilizando ese mismo conjunto de datos, sin limitarse en cuanto a la forma funcional, ¿hay espacios de mejora para la predicción de la variable respuesta, \(mpg\)? Consideremos esta regresión, por ejemplo:

mtcars %>% 
  mutate(am = factor(am, c(0,1), labels = c("Automático", "Manual"))) %>% 
  lm(mpg ~ hp + wt + am, data=.) %>% 
  stargazer::stargazer(., "Transmisión automática vs mecánica ¿Cuál provoca más gasto de combustible?", type = 'html')
Dependent variable:
mpg
hp -0.037***
(0.010)
wt -2.879***
(0.905)
amManual 2.084
(1.376)
Constant 34.003***
(2.643)
Observations 32
R2 0.840
Adjusted R2 0.823
Residual Std. Error 2.538 (df = 28)
F Statistic 48.960*** (df = 3; 28)
Note: p<0.1; p<0.05; p<0.01
Transmisión automática vs mecánica ¿Cuál provoca más gasto de combustible?
  1. Compare su modelo con este que se ha presentado en clase.

¿Qué pasa si mis residuos no son homocedásticos?

Veamos un ejemplo del libro de Gujarati y Porter (2008) con los datos del ejemplo 11.9, página 396. Para detalles en cuanto a otros ejemplos de este libro, véase este post.

Aplicando el test Breusch-Pagan

datos <- read.table("data_example11_9.csv", header = TRUE, sep=";")

# estimar el modelo
reg_gp <- lm(RD ~  Sales, data=datos)
bptest(reg_gp, studentize = FALSE)
## 
##  Breusch-Pagan test
## 
## data:  reg_gp
## BP = 8.8331, df = 1, p-value = 0.002958

Suficiente evidencia para rechazo de \(H_0\), por lo cual debemos concluir que, con base en la evidencia de la muestra analizada en nuestra regresión, existen claros y significativos indicios de presencia de heteroscedasticidad, esto implica que no podemos hacer generalizaciones de los resultados de nuestra regresión hasta no resolver el problema en cuestión.

Si procedemos con el test de White, según supone el libro, llegamos al mismo resultado cualitativo, los valores de los estadísticos y del p-value van a variar, pero su sugerencia en cuanto al tratamiento de la \(H_0\) va a ser consistente con Breusch y Pagan en la mayoría de los casos.

bptest(reg_gp, ~I(Sales^2)+ Sales*Sales, data=datos)
## 
##  studentized Breusch-Pagan test
## 
## data:  reg_gp
## BP = 6.0842, df = 2, p-value = 0.04773

Resolviendo el problema:

Para resolver el problema podemos hacer una estimación consistente de la matriz de varianzas y covarianzas que no afectará el valor de los parámetros estimados, pero sí va a corregir el efecto de la heteroscedasticidad y nos va a devolver errores estándar consistentes, pero no precisamente más bajos siempre. A esto se le llama ‘estimación robusta’.

library(sandwich)

Robust <- coeftest(reg_gp, vcov = vcovHC(reg_gp, type = "HC1"))
stargazer::stargazer(reg_gp, Robust, 
                     column.labels = c("OLS se", "Robust se"),
                     dep.var.labels = c("R&D", "R&D"),
                     type="html", align = TRUE, 
                     title = "Ejemplo de estimación bajo heteroscedasticidad.",
                     model.names = FALSE,
                     model.numbers = FALSE)
Ejemplo de estimación bajo heteroscedasticidad.
Dependent variable:
R&D R&D
OLS se Robust se
Sales 0.044 0.044
(0.028) (0.041)
Constant 1,337.874 1,337.874
(5,015.141) (4,892.447)
Observations 14
R2 0.172
Adjusted R2 0.102
Residual Std. Error 9,166.328 (df = 12)
F Statistic 2.484 (df = 1; 12)
Note: p<0.1; p<0.05; p<0.01

Tal como lo resalta Gujarati y Porter (2008) en su página 391, los errores estándar estimados bajo la corrección de White pueden ser mayores o menores a los estimados por MCO y citando a Wallace y Silver (1988), dicen que es una buena idea reportar los errores estándar bajo corrección de White en conjunto con los obtenidos bajo MCO para determinar cuán serio es el problema de la heteroscedasticidad para un determinado conjunto de datos.

La interpretación de estos resultados con la matriz de covarianzas robustas las realizaremos en la sesión de clases.

No hay comentarios:

Publicar un comentario