Estimadores HAC

MSF Ademir Pérez

Matriz de Covarianza no Escalar

\(\color{red}{E[\epsilon*\epsilon^T]=\Omega}\), es decir que se ha detectado la presencia de Heterocedasticidad y/o de Autocorrelación. Entonces la Matriz de varianza covarianza de los parámetros del modelo estimado será:

\(\color{purple}{Var[\beta]=\left(X^TX\right)^{-1}X^T\Omega X\left(X^TX\right)^{-1}}\)

Modelo Estimado

Ejemplo tomado de Statistical Methods for Social Sciences, Third Edition by Alan Agresti and Barbara Finlay (Prentice Hall, 1997), capítulo 9.

Variables en el dataset:
Identificación del estado (sid), Nombre del estado (state), Crímenes violentos por cada 100,000 habitantes (crime), Asesinatos por cada millón de habitantes (murder), Porcentaje de población que vive en áreas metropolitanas (pctmetro), Porcentaje de población blanca (pctwhite), Porcentaje de población con un mínimo de segundaria como educación (pcths), Porcentaje de población por debajo de la línea de pobreza (poverty), Porcentaje de la población que es padre soltero (single).

Se estimará el estimará el número de crimenes violentos, en función de la población por debajo de la línea de pobreza y el Porcentaje de la población que es padre soltero. (single)

library(foreign)
datos_regresion <- read.dta("https://stats.idre.ucla.edu/stat/data/crime.dta")
modelo_estimado_1<-lm(crime~poverty+single,data=datos_regresion)
print(modelo_estimado_1)
## 
## Call:
## lm(formula = crime ~ poverty + single, data = datos_regresion)
## 
## Coefficients:
## (Intercept)      poverty       single  
##   -1368.189        6.787      166.373

Pruebas de Heterocedasticidad y Autocorrelación.

Prueba de Breusch Pagan (White):

## 
##  studentized Breusch-Pagan test
## 
## data:  modelo_estimado_1
## BP = 10.73, df = 5, p-value = 0.057

Hay evidencia de heterocedasticidad ya que (\(p_{value}<0.05\))

Prueba de Breusch Godfrey

Verificando autocorrelación de 2° orden

## 
##  Breusch-Godfrey test for serial correlation of order up to 2
## 
## data:  modelo_estimado_1
## LM test = 0.27165, df = 2, p-value = 0.873

No hay evidencia de autocorrelación de 2° orden ya que (\(p_{value}>0.05\))

Verificando autocorrelación de 1° orden

## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo_estimado_1
## LM test = 0.27156, df = 1, p-value = 0.6023

No hay evidencia de autocorrelación de 1° orden ya que (\(p_{value}>0.05\))

Estimación Robusta

Se usará las librerias “lmtest” y “sandwich”, al respecto puede leer el siguiente paper: Econometric Computing with HC and HAC Covariance Matrix Estimators

library(lmtest)
library(sandwich)
#Sin corregir:

coeftest(modelo_estimado_1)
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept) -1368.1887   187.2052 -7.3085 2.479e-09 ***
## poverty         6.7874     8.9885  0.7551    0.4539    
## single        166.3727    19.4229  8.5658 3.117e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Corregido:

estimacion_omega<-vcovHC(modelo_estimado_1,type = "HC1")
coeftest(modelo_estimado_1,vcov. = estimacion_omega)
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept) -1368.1887   284.9180 -4.8020 1.577e-05 ***
## poverty         6.7874    10.9273  0.6211    0.5374    
## single        166.3727    26.2343  6.3418 7.519e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Estimador HAC

Si hubierá sido detectada la autocorrelación de orden 2, tendría que corregirse así:

library(lmtest)
library(sandwich)

#Corregido:

estimacion_omega<-NeweyWest(modelo_estimado_1,lag = 2)
coeftest(modelo_estimado_1,vcov. = estimacion_omega)
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept) -1368.1887   303.8466 -4.5029 4.280e-05 ***
## poverty         6.7874    10.5943  0.6407    0.5248    
## single        166.3727    25.9154  6.4198 5.708e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1