Sobre el autor:
Jimmy Cueva Ruesta
E-mail: jcueva@usat.edu.pe
LinkedIn: https://www.linkedin.com/in/jimmy-cueva-ruesta-30852811b/
El término autocorrelación se define como la “correlación entre miembros de series de observaciones ordenadas en el tiempo [como en datos de series de tiempo] o en el espacio [como en datos de corte transversal]”. Existe autocorrelación cuando el término de error de un modelo econométrico esta correlacionado consigo mismo a través del tiempo, es decir, si se viola el supuesto del modelo clásico de regresión lineal de que los errores o las perturbaciones \(u_t\) consideradas dentro de la función de regresión poblacional (FRP) son aleatorios o no correlacionados, surge el problema de autocorrelación o correlación serial. Entonces, simbólicamente:
\[ E(u_iu_j)\neq 0 \] En el contexto de regresión, el modelo clásico de regresión lineal supone que no existe tal autocorrelación en las perturbaciones \(u_i\). Simbólicamente: \[ \operatorname{cov}(u_i, u_j \mid x_i, x_j) = \mathbb{E}(u_i u_j) = 0 \quad \text{para} i \ne j \] Tintner define autocorrelación como “correlación rezagada de una serie dada consigo misma, rezagada por un número de unidades de tiempo”, mientras que reserva el término correlación serial para “correlación rezagada entre dos series diferentes”
Patrones de autocorrelación y o autocorrelación:Hay diversas razones para la presencia de autocorrelación, algunas de las cuales son las siguientes:
Se considera que el término de error sigue un proceso autorregresivo de orden 1: \[ u_t=\rho u_{t-1}+\varepsilon_t \quad -1<\rho<1 \] Donde \(\rho\) se conoce como coeficiente de autocovarianza y \(\varepsilon_t\) se conoce como término de ruido blanco, y este satisface los supuesto de MCO: \[ E(\varepsilon_t )= 0 \] \[ var(\varepsilon_t)=\sigma_{t}^{2} \]
\[ cov(\varepsilon_t,\varepsilon_{t+s} )= 0 \quad s\neq 0 \] A pesar de que los errores están correlacionados, el estimador \(\hat{\beta }_{MCO}\) sigue cumpliendo la insesgadez y consistencia. La matriz de varianza-covarianza de \(\hat{\beta }_{MCO}\) ya no es mínima, porque: \[ var (\hat{\beta }_{MCO})=\sigma^2({X}'X)^{-1}{X}'\Omega X({X}'X)^{-1} \]
donde \(\Omega\) es la matriz de varianza-covarianza de los errores no esférica (no diagonal) si hay autocorrelación.
La estimación incorrecta de Var\(\hat{\beta}\) afecta los errores estándar, por lo que las pruebas “t” y “F” se vuelven poco confiables. Entonces, El uso directo de MCO sin corregir la autocorrelación puede llevar a inferencias engañosas, aunque los coeficientes estimados no estén sesgados.
Método | Descripción | Tipo de autocorrelación detectada | Ventajas | Limitaciones | Anotación |
---|---|---|---|---|---|
Método gráfico | Graficar residuos \(\hat{u}_t\) contra el tiempo t. | Visual: general y de primer orden | Intuitivo y fácil de aplicar | Subjetivo, no es prueba formal | Patrón ondulante indica autocorrelación. |
Prueba de las rachas | Clasifica residuos como positivos (+) o negativos (−), y evalúa la secuencia de signos (rachas). | General | No requiere supuestos fuertes | Poca potencia estadística | Ejemplo: secuencia +−−+−− tiene pocas rachas si hay autocorrelación. |
Prueba Durbin-Watson (DW) |
Calcula el estadístico DW: \[d = \frac{\sum_{t=2}^{n} (\hat{u}_t - \hat{u}_{t-1})^2}{\sum_{t=1}^{n} \hat{u}_t^2}\] |
Autocorrelación de primer orden | Prueba formal estándar en regresión clásica | No válida si hay variables rezagadas dependientes |
Valor cercano a 2 = no autocorrelación; <2 = positiva; >2 = negativa. |
Prueba de Breusch-Godfrey |
Estima un modelo auxiliar incluyendo residuos rezagados: \[\hat{u}_t = \alpha_1 + \alpha_2 X_t + \hat{\rho}_1 \hat{u}_{t-1} + \hat{\rho}_2 \hat{u}_{t-2} + \cdots + \hat{\rho}_p \hat{u}_{t-p} + \varepsilon_t\] Y luego realiza prueba F o LM sobre \(\rho_i\) |
Autocorrelación de orden superior | Más general y válida con variables rezagadas | Requiere regresión adicional y más supuestos | Captura autocorrelación múltiple: útil en series de tiempo complejas. |
Durbin-Watson \[ d = \frac{\sum_{t=2}^{n} (\hat{u}_t - \hat{u}_{t-1})^2}{\sum_{t=1}^{n} \hat{u}_t^2} \] Es simplemente la razón de la suma de las diferencias al cuadrado de residuos sucesivos sobrela SCR. Observe que, en el numerador del estadístico d, el número de observaciones es n − 1 porque se pierde una observación al obtener las diferencias consecutivas.
Supuestos para su aplicación:
El procedimiento de prueba aplicado se explica mejor con ayuda de la figura 2, la cual muestra que los límites de d son 0 y 4. Éstos se determinan al expandir del estadístico para obtener:
\[ d\approx 2(1-\hat{\rho}) \] Pues como \(\sum \hat{u}_t^{2}\) y \(\sum \hat{u}_{t-1}^{2}\)difieren sólo en una observación, son aproximadamente iguales.Por consiguiente, establecemos que \(\sum \hat{u}_{t-1}^{2}\) \(\approx\) \(\sum \hat{u}_t^{2}\). Asimismo:
\[ \hat{\rho}=\frac{\sum \hat{u}_t.\hat{u}_{t-1}}{\sum \hat{u}_t^{2}} \]
Qué hacer cuando hay autocorrelación: medidas correctivas:
Cuidado: La autocorrelación solo se puede detectar después de controlar la heterocedasticidad.
##
## Call:
## lm(formula = log(C) ~ log(I) + log(L) + log(H) + log(A), data = data_auto)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.23624 -0.06926 0.03014 0.07209 0.22490
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.500441 1.003020 -1.496 0.147192
## log(I) 0.467509 0.165987 2.817 0.009340 **
## log(L) 0.279443 0.114726 2.436 0.022328 *
## log(H) -0.005152 0.142947 -0.036 0.971538
## log(A) 0.441449 0.106508 4.145 0.000341 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1217 on 25 degrees of freedom
## Multiple R-squared: 0.9361, Adjusted R-squared: 0.9259
## F-statistic: 91.54 on 4 and 25 DF, p-value: 1.491e-14
##
## Jarque Bera Test
##
## data: modelo$residuals
## X-squared = 0.612, df = 2, p-value = 0.7364
Recuerda:
hist(modelo$residuals, col = "skyblue", probability = TRUE,
main = "Histograma de los residuos vs curva teórica", xlab = "Residuos")
curve(dnorm(x, mean = mean(modelo$residuals), sd = sd(modelo$residuals)),
add = TRUE, col = "red", lwd = 4)
plot(log(modelo$fitted.values),log(data_auto$C),
main = "Log C vs Valores estimados",
xlab = "Log estimados",
ylab = "Log C",
col= "blue",
pch=1)
abline(lm(log(data_auto$C) ~ log(modelo$fitted.values)), col = "red", lwd = 3)
par(mfrow=c(2,2),mar=c(4,4,1,0.5))
hist(modelo$residuals, col = "skyblue", probability = TRUE,
main = "Histograma", xlab = "Residuos")
curve(dnorm(x, mean = mean(modelo$residuals), sd = sd(modelo$residuals)),
add = TRUE, col = "red", lwd = 4)
boxplot(modelo$residuals, horizontal = T,main="Gráfico de caja")
plot(modelo$residuals, type = "l", ylab = "Residuos")
plot(log(modelo$fitted.values),log(data_auto$C),
main = "Log C vs Valores estimados",
xlab = "Log estimados",
ylab = "Log C",
col= "blue",
pch=1)
abline(lm(log(data_auto$C) ~ log(modelo$fitted.values)), col = "red", lwd = 3)
residuos <- resid(modelo)
#Variable tiempo
tiempo <- 1:length(residuos) #Crea una secuencia de números enteros desde 1 hasta length(residuos), qué es el número total de residuos
#Residuos vs. Tiempo
plot(tiempo, residuos, type = "l", col = "blue",
main = "Residuos vs. Tiempo",
xlab = "Tiempo", ylab = "Residuos")
abline(h = 0, col = "red", lty = 2) # Línea base en cero
lines(lowess(tiempo, residuos), col = "darkgreen", lwd = 2)
Tener en cuenta:
##
## Runs Test
##
## data: residuos
## statistic = -1.4864, runs = 12, n1 = 15, n2 = 15, n = 30, p-value =
## 0.1372
## alternative hypothesis: nonrandomness
# Crear residuos rezagados
residuos_t <- residuos[2:length(residuos)]
residuos_t_1 <- residuos[1:(length(residuos) - 1)]
# Graficar residuos actuales contra los rezagados
plot(residuos_t_1, residuos_t,
xlab = expression(Res[t-1]),
ylab = expression(Res[t]),
main = "Gráfico Res[t] vs Res[t-1]",
pch = 1, col = "black", asp = 1)
# Añadir líneas horizontales y verticales en 0 (cuadrantes)
abline(h = 0, v = 0, col = "gray")
# Añadir etiquetas de cuadrantes
text(x = -max(abs(residuos))/1.5, y = max(abs(residuos))/1.5, "I")
text(x = max(abs(residuos))/1.5, y = max(abs(residuos))/1.5, "II")
text(x = max(abs(residuos))/1.5, y = -max(abs(residuos))/1.5, "III")
text(x = -max(abs(residuos))/1.5, y = -max(abs(residuos))/1.5, "IV")
Tener en cuenta:
Además:
##
## Durbin-Watson test
##
## data: modelo
## DW = 0.95494, p-value = 6.388e-05
## alternative hypothesis: true autocorrelation is greater than 0
Tener en cuenta:
Nota: La prueba no es válida si el modelo contiene variables dependientes rezagadas, en cuyo caso se recomienda usar la prueba de Breusch-Godfrey.
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelo
## LM test = 8.8406, df = 1, p-value = 0.002946
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo
## LM test = 13.507, df = 2, p-value = 0.001167
Tener en cuenta:
##
## Box-Ljung test
##
## data: residuals(modelo)
## X-squared = 8.9399, df = 1, p-value = 0.00279
Tener en cuenta:
library(prais)
library(pcse)
data_auto$tiempo <- 1:nrow(data_auto)
modelo_prais <- prais_winsten(log(C) ~ log(I) + log(L)+ log(H) + log(A), data = data_auto, index = "tiempo")
## Iteration 0: rho = 0
## Iteration 1: rho = 0.5208
## Iteration 2: rho = 0.5524
## Iteration 3: rho = 0.5544
## Iteration 4: rho = 0.5546
## Iteration 5: rho = 0.5546
## Iteration 6: rho = 0.5546
##
## Call:
## prais_winsten(formula = log(C) ~ log(I) + log(L) + log(H) + log(A),
## data = data_auto, index = "tiempo")
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.25053 -0.07460 0.02805 0.06845 0.20064
##
## AR(1) coefficient rho after 6 iterations: 0.5546
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.21157 1.05956 -1.143 0.26368
## log(I) 0.36889 0.20306 1.817 0.08127 .
## log(L) 0.34778 0.10847 3.206 0.00366 **
## log(H) -0.04806 0.13873 -0.346 0.73192
## log(A) 0.45804 0.15350 2.984 0.00627 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1026 on 25 degrees of freedom
## Multiple R-squared: 0.8831, Adjusted R-squared: 0.8644
## F-statistic: 47.2 on 4 and 25 DF, p-value: 2.689e-11
##
## Durbin-Watson statistic (original): 0.9549
## Durbin-Watson statistic (transformed): 1.517
##
## t test of coefficients:
##
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.5004409 1.3441022 -1.1163 0.27490
## log(I) 0.4675085 0.2179709 2.1448 0.04187 *
## log(L) 0.2794425 0.0918686 3.0418 0.00546 **
## log(H) -0.0051516 0.1744442 -0.0295 0.97668
## log(A) 0.4414489 0.2132004 2.0706 0.04887 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Cuidado:Estás aplicando errores estándar robustos tipo Newey-West, que corrigen tanto la heterocedasticidad como la autocorrelación (hasta cierto rezago). Sin embargo, aplicar la corrección no implica que el problema ya no exista, solo que estás teniendo en cuenta su presencia para ajustar los errores estándar. La función NeweyWest(modelo) no cambia el modelo ni elimina los problemas de autocorrelación o heterocedasticidad. Lo que hace es ajustar los errores estándar de los coeficientes estimados, para que tus inferencias (como los valores p, intervalos de confianza, etc.) sean más confiables aunque esos problemas estén presentes.
Entonces, ¿para qué sirve? Sirve para que puedas confiar en los errores estándar y en los valores p, a pesar de que tu modelo tenga residuos problemáticos.
Imagina que estás viendo a través de unos lentes sucios (el modelo con hetero/autocorrelación). Usar NeweyWest() no limpia los lentes, pero ajusta tu percepción para que igual puedas interpretar bien lo que ves.