Sobre el autor:

  1. Jimmy Cueva Ruesta

  2. E-mail: jcueva@usat.edu.pe

  3. LinkedIn: https://www.linkedin.com/in/jimmy-cueva-ruesta-30852811b/

1 Teoría———————————————————

1.1 Concepto

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:
Figura 1. Patrones
Figura 1. Patrones

Hay diversas razones para la presencia de autocorrelación, algunas de las cuales son las siguientes:

  1. Inercia: Muchos fenómenos económicos presentan persistencia temporal; es decir, los valores actuales dependen de los pasados, lo que genera correlación entre los errores en distintas observaciones.
  2. Sesgo de especificación: variables excluidas: Omitir variables relevantes que están correlacionadas con la variable dependiente y que varían en el tiempo puede inducir autocorrelación en los residuos.
  3. Sesgo de especificación: forma funcional incorrecta: Si el modelo elegido no refleja correctamente la relación entre las variables (por ejemplo, usar forma lineal en vez de logarítmica), los errores resultantes pueden estar autocorrelacionados.
  4. Fenómeno de la telaraña: Se da cuando hay una reacción retardada entre oferta y demanda (como en precios agrícolas), lo que genera una estructura autorregresiva en los errores del modelo.
  5. Rezagos: La omisión de variables explicativas rezagadas que afectan a la variable dependiente puede reflejarse en autocorrelación de los términos de error.
  6. Manipulación de datos: El redondeo sistemático o el ajuste artificial de datos puede introducir patrones regulares en los errores, causando autocorrelación.
  7. Transformación de datos: Cambios como pasar de datos mensuales a trimestrales pueden suavizar o distorsionar las series, generando errores correlacionados entre sí.
  8. No estacionariedad: Cuando las variables tienen tendencia o varianza no constante en el tiempo, los errores pueden heredar estas propiedades, generando autocorrelación espuria.

1.2 Consecuencias de estimar con MCO en presencia de autocorrelación:

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.

1.3 Métodos de detección

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:

  1. El modelo de regresión incluye el término del intercepto
  2. Las variables explicativas, X, son no estocásticas, es decir, son fi jas en muestreo repetido.
  3. Las perturbaciones ut se generan mediante el esquema autorregresivo de primer orden. Por tanto, no se pueden utilizar para detectar esquemas autorregresivos de orden superior
  4. Se supone que el término de error ut está normalmente distribuido.
  5. El modelo de regresión no incluye valor(es) rezagado(s) de la variable dependiente como una variable explicativa. Por tanto, la prueba es inaplicable a modelos del siguiente tipo: \[ Y_t=\beta_1+\beta_2X_{2t}+\alpha Y_{t-1}+u_t \]
  6. No hay observaciones faltantes en los datos.
Figura 2. Zonas de indeterminación
Figura 2. Zonas de indeterminació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:

  1. Trate de averiguar si se trata de autocorrelación pura y no el resultado de una mala especificación del modelo. A veces se observan patrones en los residuos porque el modelo está mal especificado, es decir, se excluyeron variables importantes o porque su forma funcional no es correcta.
  2. Si se trata de autocorrelación pura, se puede utilizar una transformación apropiada del modelo original de manera que en el modelo transformado no se presente el problema de la autocorrelación (pura). Como en la heteroscedasticidad, habrá que emplear algún método generalizado de mínimos cuadrados (MCG).
  3. En muestras grandes se puede utilizar el método Newey-West para obtener los errores estándar de los estimadores de MCO corregidos para autocorrelación. Este método en realidad es una extensión del método de errores estándar consistentes con heteroscedasticidad de White, que analizamos en el capítulo anterior.
  4. En algunas situaciones se puede conservar el método MCO.

Cuidado: La autocorrelación solo se puede detectar después de controlar la heterocedasticidad.

2 En Rstudio———————————————————

2.1 Eliminar cualquier elemento

rm(list=ls())

2.2 Importar datos

library(readxl)
data_auto <- read_excel("D:/TRABAJO/DOCENCIA/USAT/2025-I/ECONOMETRÍA/5e_data_sets/Table 12_7.xls", 
     range = "A13:G43", col_types = c("numeric", 
         "numeric", "numeric", "numeric", 
         "numeric", "numeric", "numeric"))

2.3 Regresión

modelo <- lm(log(C)~ log(I) + log(L)+ log(H) + log(A), data = data_auto)
summary(modelo)
## 
## 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
plot(modelo)

par(mfrow=c(2,2))
plot(modelo)

par(mfrow=c(1,1))

2.4 Normalidad de los errores ———————————————————

library(tseries)
jarque.bera.test(modelo$residuals)
## 
##  Jarque Bera Test
## 
## data:  modelo$residuals
## X-squared = 0.612, df = 2, p-value = 0.7364

Recuerda:

  • H0: Los residuos son normalmente distribuidos.
  • H1: Los residuos no son normalmente distribuidos.
  • Si p ≥ α No se rechaza la hipótesis nula.
  • Si p < α Se rechaza la hipótesis nula Entonces: Los residuos siguen una distribución de normal.

2.5 Gráficos de los residuos ———————————————————

hist(modelo$residuals)

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(modelo$residuals)

plot(log(modelo$fitted.values),log(data_auto$C))

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)

par(mfrow=c(1,1))

2.6 Pruebas de Autocorrelación ———————————————————

2.6.1 1. Método Gráfico

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:

  • Si observas patrones sistemáticos u oscilaciones repetidas, puede haber autocorrelación.
  • Si los residuos se distribuyen aleatoriamente alrededor de cero, no hay evidencia gráfica clara de autocorrelación.

2.6.2 2. Prueba de las Rachas

library(randtests)
runs.test(residuos)
## 
##  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:

  • Hipótesis nula (H₀): los signos de los residuos son aleatorios (no hay autocorrelación).
  • Valor p bajo (p < 0.05): rechazas H₀, indicando posible autocorrelación.
  • Valor p alto (p > 0.05): no hay evidencia de autocorrelación.

Además:

  • Si la mayoría de puntos caen en los cuadrantes I y III, indica autocorrelación positiva.
  • Si se concentran en II y IV, sugiere autocorrelación negativa.
  • Distribución uniforme sugiere ausencia de autocorrelación.

2.6.3 3. Prueba Durbin-Watson

library(lmtest)
dwtest(modelo)
## 
##  Durbin-Watson test
## 
## data:  modelo
## DW = 0.95494, p-value = 6.388e-05
## alternative hypothesis: true autocorrelation is greater than 0

Tener en cuenta:

  • DW ≈ 2: No hay autocorrelación.
  • DW < 2: Indica autocorrelación positiva.
  • DW > 2: Indica autocorrelación negativa.
  • Valores cercanos a 0 o 4 indican fuerte autocorrelación.

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.

2.6.4 4. Prueba de Breusch-Godfrey

library(lmtest)
# Para autocorrelación de primer orden:
bgtest(modelo, order = 1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  modelo
## LM test = 8.8406, df = 1, p-value = 0.002946
# Para autocorrelación de segundo orden:
bgtest(modelo, order = 2)
## 
##  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:

  • Hipótesis nula (H₀): No hay autocorrelación hasta el orden especificado.
  • p-valor < 0.05: Rechazas H₀ → hay evidencia de autocorrelación.
  • p-valor ≥ 0.05: No rechazas H₀ → no hay evidencia suficiente de autocorrelación.

2.6.5 5. Prueba Ljung-Box

Box.test(residuals(modelo),type="Ljung-Box")
## 
##  Box-Ljung test
## 
## data:  residuals(modelo)
## X-squared = 8.9399, df = 1, p-value = 0.00279

Tener en cuenta:

  • Hipótesis nula (H₀): No hay autocorrelación en los primeros lag rezagos.
  • p-valor < 0.05: Rechazas H₀ → evidencia de autocorrelación.
  • p-valor ≥ 0.05: No hay evidencia de autocorrelación.

3 Soluciones a la Autocorrelación ———————————————————

3.1 1. Método de Cochrane-Orcutt

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
summary(modelo_prais)
## 
## 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

3.2 2. Método de Newey-West

library(sandwich)
library(lmtest)
coeftest(modelo, vcov = NeweyWest(modelo))
## 
## 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.