16.4 Errores estándar de HAC

El término de error \(u_t\) en el modelo de retardo distribuido (16.2) puede estar correlacionado en serie debido a determinantes correlacionados en serie de \(Y_t\) que no se incluyen como regresores. Cuando estos factores no están correlacionados con los regresores incluidos en el modelo, los errores correlacionados en serie no violan el supuesto de exogeneidad, de modo que el estimador de MCO permanece insesgado y consistente.

Sin embargo, los errores estándar autocorrelacionados invalidan los errores estándar habituales de solo homocedasticidad y heterocedasticidad robustos y pueden causar inferencias engañosas. Los errores de HAC son una solución.

Concepto clave 15.2

Errores estándar de HAC

Problema:

Si el término de error \(u_t\) en el modelo de retardo distribuido ((16.2)) está correlacionado en serie, la inferencia estadística que se basa en errores estándar habituales (robustos a la heterocedasticidad) puede ser muy engañosa.

Solución:

Los estimadores consistentes con heterocedasticidad y autocorrelación (HAC) de la matriz de varianza-covarianza evitan este problema. Existen funciones R como vcovHAC() del paquete sandwich que son convenientes para el cálculo de tales estimadores.

El paquete sandwich también contiene la función NeweyWest(), una implementación del estimador de varianza-covarianza HAC propuesto por Newey and West (1987).

Considere el modelo de regresión de rezagos distribuidos sin rezagos y un solo regresor \(X_t\):

\[\begin{align*} Y_t = \beta_0 + \beta_1 X_t + u_t. \end{align*}\]

con errores autocorrelacionados. Una breve derivación de

\[\begin{align} \overset{\sim}{\sigma}^2_{\widehat{\beta}_1} = \widehat{\sigma}^2_{\widehat{\beta}_1} \widehat{f}_t \tag{16.4} \end{align}\]

el llamado estimador de varianza de Newey-West para la varianza del estimador de MCO de \(\beta_1\). \(\widehat{\sigma}^2_{\widehat{\beta}_1}\) en (16.4) es la estimación de la varianza robusta a la heterocedasticidad de \(\widehat{\beta}_1\) y

\[\begin{align} \widehat{f}_t = 1 + 2 \sum_{j=1}^{m-1} \left(\frac{m-j}{m}\right) \overset{\sim}{\rho}_j \tag{16.5} \end{align}\]

es un factor de corrección que se ajusta a los errores correlacionados en serie e involucra estimaciones de \(m-1\) coeficientes de autocorrelación \(\overset{\sim}{\rho}_j\). Como resultado, usar la autocorrelación de muestra implementada en acf() para estimar los coeficientes de autocorrelación hace que (16.4) sea inconsistente. Por tanto, se utiliza un estimador algo diferente. Para una serie de tiempo \(X\) se tiene \[ \ \overset{\sim}{\rho}_j = \frac{\sum_{t=j+1}^T \hat v_t \hat v_{t-j}}{\sum_{t=1}^T \hat v_t^2}, \ \text{with} \ \hat v= (X_t-\overline{X}) \hat u_t. \] Implementando este estimador en la función acf_c() a continuación:

\(m\) in (16.5) is a truncation parameter to be chosen. A rule of thumb for choosing \(m\) is \[\begin{align} m = \left \lceil{0.75 \cdot T^{1/3}}\right\rceil. \tag{16.6} \end{align}\]

Se simula una serie de tiempo que, como se indicó anteriormente, sigue un modelo de retardo distribuido con errores autocorrelacionados y luego se muestra cómo calcular la estimación de Newey-West HAC de \(SE(\widehat{\beta}_1)\) usando R. Esto se hace a través de dos enfoques separados pero, como se verá, idénticos: Al principio se sigue la derivación presentada paso a paso y se calcula la estimación “manualmente.” Luego se muestra que el resultado es exactamente la estimación obtenida al usar la función NeweyWest().

# función que calcula rho tilde
acf_c <- function(x, j) {
  return(
    t(x[-c(1:j)]) %*% na.omit(Lag(x, j)) / t(x) %*% x
  )
}

# simular series de tiempo con errores correlacionados en serie
set.seed(1)

N <- 100

eps <- arima.sim(n = N, model = list(ma = 0.5))
X <- runif(N, 1, 10)
Y <- 0.5 * X + eps

# calcular los residuos de MCO
res <- lm(Y ~ X)$res

# compute v
v <- (X - mean(X)) * res

# calcular una estimación sólida de la varianza beta_1
var_beta_hat <- 1/N * (1/(N-2) * sum((X - mean(X))^2 * res^2) ) / 
                        (1/N * sum((X - mean(X))^2))^2

# parámetro de truncamiento de la regla general
m <- floor(0.75 * N^(1/3))

# calcular el factor de corrección
f_hat_T <- 1 + 2 * sum(
  (m - 1:(m-1))/m * sapply(1:(m - 1), function(i) acf_c(x = v, j = i))
  ) 

# calcular la estimación de Newey-West HAC del error estándar
sqrt(var_beta_hat * f_hat_T)
#> [1] 0.04036208

Para que el código sea reutilizable en otras aplicaciones, se usa sapply() para estimar las \(m-1\) autocorrelaciones \(\overset{\sim}{\rho}_j\).

# usando NeweyWest():
NW_VCOV <- NeweyWest(lm(Y ~ X), 
              lag = m - 1, prewhite = F, 
              adjust = T)

# calcular el error estándar
sqrt(diag(NW_VCOV))[2]
#>          X 
#> 0.04036208

Al elegir lag = m-1 se asegura que el orden máximo de autocorrelaciones utilizadas sea \(m-1\) — tal como en la ecuación (16.5). Observe que se establecen los argumentos prewhite = F y adjust = T para asegurar que se usa la fórmula (16.4) y se realizan ajustes de muestra finitos.

Se encontró que los errores estándar calculados coinciden. Por supuesto, una estimación de la matriz de varianza-covarianza calculada por NeweyWest() se puede proporcionar como el argumento vcov en coeftest(), tal que el estadístico \(t\) de HAC y los valores \(p\) son proporcionados por este último.

example_mod <- lm(Y ~ X)
coeftest(example_mod, vcov = NW_VCOV)
#> 
#> t test of coefficients:
#> 
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept) 0.542310   0.235423  2.3036  0.02336 *  
#> X           0.423305   0.040362 10.4877  < 2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Referencias bibliográficas

Newey, Whitney K., and Kenneth D. West. 1987. A Simple, Positive Semi-Definite, Heteroskedasticity and Autocorrelation Consistent Covariance Matrix.” Econometrica 55: 703–8.