Autor : Gianfranco David Chamorro Rodriguez
correo : gianfranco.chamorror@gmail.com
Canal : Video explicación
Una serie de tiempo son datos recopilados en intervalos de tiempo discretos.La característica clave de los datos de series de tiempo es que la misma cantidad económica se registra en un intervalo de tiempo regular.Por ejemplo los datos macroeconómicos generalmente se informan en términos mensuales, trimestrales o anuales(serie temporal de baja frecuencia). Los datos financieros, como los precios de las acciones, se pueden registrar diariamente o incluso por hora (serie temporal de alta frecuencia)
archivo <-("https://raw.githubusercontent.com/Gianfrancocr27/Data-Set/main/ipc.csv")
ipc <- read.csv(file=archivo, header=TRUE)
ipcst=ts(ipc$ipc,freq=12,start=c(1991,1))
ts.plot(ipcst, main = "Indice de Precios al Consumidor \n Perú 1991-2022", col= "blue", ylab= "IPC", xlab="Año")
La autocorrelación sucede cuando las perturbaciones del modelo presentan correlaciones entre ellas, es decir que en la matriz de varianzas y covarianzas de las perturbaciones, los elementos fuera de la diagonal principal no son cero1. Cabe resaltar que cuando existe covarianza en el término de error en datos de series de tiempo, se conoce como autocorrelación serial y cuando es en datos de corte transversal, se conoce como autocorrelación espacial, tema que escapa a los fines del presente documento.
\[\begin{equation*} Cov(u_{i}, u_{j}) \neq 0 \hspace{2cm} siendo \hspace{0.5cm} i\neq j \end{equation*}\] \[\begin{equation*} Cov(u_{t}, u_{t-s}) \neq 0 \hspace{2cm} siendo \hspace{0.5cm} s\neq 0 \end{equation*}\]
Existe una autocorrelacion pura cuando la covarianza de los errores del momento t con respecto a los errores del momento t-s es distinto a cero, siendo s \(\geq\) 1, debido a ciclos, tendencias, schocks duraderos, etc.De existir una correcta especificación del modelo el resto de supuestos del MRLC. Sin embargo si existe una autocorrelación debido a una mala especificación, otros supuestos no se cumplirán.
Observemos la siguiente relación :
Modelo Real : \[\begin{equation*} Y_{t} = \beta_{1} + \beta_{2} Y_{t-1} + \beta_{3} X_{t} + u_{t} \end{equation*}\]
Pero planteamos : \[\begin{equation*} Y_{t} = \beta_{1} + \beta_{3} X_{t} + V_{t} \end{equation*}\]
De esta manera : \[\begin{equation*} V_{t} = u_{t} + \beta_{2} Y_{t-1} \end{equation*}\]
Por lo que : \[\begin{equation*} Cov(V_{t},V_{t-1}) = Cov (u_{t} + \beta_{2} Y_{t-1}, u_{t-1} + \beta_{2} Y_{t-2}) \neq 0 \end{equation*}\]
Al momento de modelar la autocorrelación del término de error, se observa dos categorías, modelos de memoria larga, la cual tiene una correlación observable durante muchos periodos, y modelos de memoria corta, que son aquellos que presentan autocorrelación por un número limitado de periodos.
Sea : \[\begin{equation*} Y_{t}= \beta_{1} + \beta_{2}X_{2t} + \dots + \beta_{k}X_{kt} + u_{t} \end{equation*}\]
\[\begin{equation*} u_{t}= \phi u_{t-1} + \epsilon_{t} \end{equation*}\] Donde : \[\begin{equation*} E[\epsilon_{t}] = 0, Var(\epsilon_{t}) = \sigma{^2} \; ∧ \; Cov(\epsilon_{t}, \epsilon_{t-s})=0, \forall s \neq 0 \end{equation*}\]
Asumiendo que: \(Var(u_{t})= \sigma^{2}\) :
\[\begin{equation*} Cov(u_{t}, u_{t-1}) = Cov (\phi u_{t-1} + \epsilon_{t}, u_{t-1}) \end{equation*}\]
\[\begin{equation*} Cov(\phi u_{t-1},u_{t-1}) + Cov (\epsilon_{t},u_{t-1}) \end{equation*}\] \[\begin{equation*} \phi Var(u_{t-1}) = \phi \sigma^{2} \end{equation*}\]
\[\begin{equation*} Cov(u_{t}, u_{t-2}) = Cov (\phi u_{t-1} + \epsilon_{t}, u_{t-2}) \end{equation*}\]
\[\begin{equation*} Cov(\phi u_{t-1},u_{t-2}) + Cov (\epsilon_{t},u_{t-2}) \end{equation*}\]
\[\begin{equation*} \phi Cov(u_{t-1},u_{t-2}) = \phi (\phi \sigma^{2}) = \phi^{2} \sigma^{2} \end{equation*}\]
En general :
\[\begin{equation*}
Cov(u_{t},u_{t-s}) = \phi^{s}\sigma^{2}
\end{equation*}\]
\[\begin{equation*} Var= \sigma^{2} \begin{bmatrix} 1 & \phi & \phi^{2} & \dots & \phi^{n-1} \\ \phi & 1 & \phi^{3} & \dots & \phi^{n-2} \\ \phi^{2} & \phi^{3} & 1 & \dots & \phi^{n-3} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \phi^{n-1} & \phi^{n-2} & \phi^{n-3} & \dots & 1 \end{bmatrix} \end{equation*}\]
La autocorrelación de \(u_{t}\) con \(u_{t-s}\) :
\[\begin{equation*} \rho_{s} = \dfrac{Cov(u_{t}, u_{t-s})}{(\sqrt{Var(u_{t})}) (\sqrt{Var(u_{t})}) } = \dfrac{\phi^{2} \sigma^{2}}{\sqrt{\sigma^{2}}\sqrt{\sigma^{2}}} = \phi^{s} \end{equation*}\]
Siendo \(|\phi| < 1\), \(\rho\) decae en el tiempo.
# Simulación de un proceso AR(1) con phi=0.8
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE)) # Configuramos el gráfico
AR=arima.sim(list(order=c(1,0,0), ar=.8), n=260) # Modelo Autoregresivo en 1 periodo AR(1) con el valor de phi = 0.8
plot(AR, ylab=" ", main=(expression(AR(1)~~~phi==+.8)))
acf(AR, main="Autocorrelación Simple")
pacf(AR,main="Autocorrelación Parcial")
Sea : \[\begin{equation*} Y_{t}= \beta_{1} + \beta_{2}X_{2t} + \dots + \beta_{k}X_{kt} + u_{t} \end{equation*}\]
\[\begin{equation*} u_{t}= \epsilon_{t} + \theta \epsilon_{t-1} \end{equation*}\]
\[\begin{equation*} Var(u_{t})= \sigma^{2} = Var(\epsilon_{t}+ \theta \epsilon_{t-1} ) \end{equation*}\]
\[\begin{equation*} = Var(\epsilon_{t}) + \theta Var(\epsilon_{t-1}) \end{equation*}\]
\[\begin{equation*} = \sigma^{2} (1+ \theta^{2}) \end{equation*}\]
Las autocovarianzas :
\[\begin{equation*} Cov(u_{t}, u_{t-1}) = Cov (\epsilon_{t} + \theta \epsilon_{t-1}, \epsilon_{t-1} + \theta \epsilon_{t-2} ) \end{equation*}\] \[\begin{equation*} Cov(\epsilon_{t},\epsilon_{t-1}) + \theta Cov(\epsilon_{t},\epsilon_{t-2}) + \theta Var(\epsilon_{t-1}) + \theta^{2}Cov(\epsilon_{t-1},\epsilon_{t-2}) \end{equation*}\]
\[\begin{equation*} Cov(u_{t}, u_{t-1}) = \theta \sigma^{2} \end{equation*}\] \[\begin{equation*} Cov(u_{t}, u_{t-2})= Cov(\epsilon_{t} + \theta \epsilon_{t-1}, \epsilon_{t-2} + \theta \epsilon_{t-3} ) = 0 \end{equation*}\]
General: \[\begin{equation*} Cov(u_{t}, u_{t-s}) =0 \hspace{1cm} \forall s \geq 2 \end{equation*}\]
#Simulación de un proceso MA(1) con theta=0.5
layout(matrix(c(1,1,2,3), 2, 2, byrow = TRUE))
MA=arima.sim(list(order=c(0,0,1), ma=.5), n=260)
plot(MA, ylab=" ", main=(expression(MA(1)~~~theta==+.5)))
acf(MA, main="Autocorrelación Simple",)
pacf(MA,main="Autocorrelación Parcial")
El contraste de Durbin-Watson (DW) se utiliza para realizar una prueba de autocorrelación AR(1) sobre un conjunto de datos. Este contraste se centra en el estudio de los residuos de Mínimos Cuadrados Ordinarios (MCO).
\[\begin{equation*} H_{0}: \rho=0 \; \; \; \; H_{A}: \rho \neq0 \end{equation*}\]
\[\begin{equation*} d= \dfrac{\sum (\hat{u_{t}}-\hat{u_{t-1}})^{2}}{\sum( \hat{u_{t}})^{2}} \hspace{1cm} d\left\{ \begin{array}{lcc} d \approx 2 \longrightarrow \rho \approx 0 \\ \\ d \approx 0 \longrightarrow \rho \approx 1 \\ \\ d \approx 4 \longrightarrow \rho \approx -1 \end{array} \right. \end{equation*}\]
Es un test simple.
Solo nos permite determinar autocorrelación de primer orden (AR-1).
El valor calculado ‘d’ se contrasta con los valores críticos de la tabla de Durbin Watson.
No es viable si la variable dependiente se encuentra rezagada en el modelo : \[\begin{equation*} Y_{t} = \beta_1 + \beta_2 Y_{t-1} + \beta_3 X_{t} + u_{t} \end{equation*}\]
Existen zonas de indeterminación, donde no es posible afirmar ni rechazar la hipótesis de no autocorrelación.
La prueba de Breusch-Godfrey es una prueba de autocorrelación en los errores en un modelo de regresión. Presenta ventajas con respecto al test de Durbin Watson porque permite endógenas rezagadas, no tiene zonas de indeterminación y es válido para procesos mas complejos que AR(1). Utiliza los residuos del modelo que se está considerando en un análisis de regresión , y de ellos se deriva una estadística de prueba. La hipótesis nula es que no existe una correlación serial de ningún orden hasta ‘p’ . AR(p) ; p \(>\) 1
\[\begin{equation*} H_{0}: \rho_1=\rho_2= \dots \rho_p =0 \hspace{2cm} H_{A}: \rho_1=\rho_2= \dots \rho_p \neq0 \end{equation*}\]
Este test sigue los siguientes pasos :
Paso 1 : Se realiza la regresión por MCO : \[\begin{equation*} Y=X'\beta + u \end{equation*}\]
Paso 2 : Se realiza la regresión de los residuos MCO contra sus valores rezagados en ‘p’ momentos y las variables dependientes sin intercepto : \[\begin{equation*} u_t= \phi_1 u_{t-1} +\phi_2 u_{t-2} + \dots + \phi_p u_{t-p} + \alpha_2 X_{2t} + \dots + \alpha_k X_{kt} +\epsilon_t \end{equation*}\]
Paso 3 : Se calcula el estadístico, (N-p) \(R^{2}\) , donde el \(R^{2}\) se obtiene del paso 2, N el número de observaciones del paso 1 y p es el número de rezagos propuestos.
Paso 4 : Se realiza el Test de significancia, (N-p)\(R^2 \sim \chi^2\). Si el valor calculado es mayor al crítico, se rechaza la hipótesis de no autocorrelación.
Cabe resaltar que se recomienda realizar, inicialmente, un análisis gráfico de los errores para encontrar indicios del problema de autocorrelación.También existen otros test como Cochrane-Orcutt, Ljung-Box, etc. que no son considerados en la explicación de este documento pero se recomienda su estudio.
archivo <-("https://raw.githubusercontent.com/Gianfrancocr27/Data-Set/main/pbiconsumo.csv")
data <- read.csv(file=archivo, header=TRUE)
head(data)
## year pbi consumo
## 1 1950 40920 30156
## 2 1951 44711 33508
## 3 1952 47347 34356
## 4 1953 50085 36175
## 5 1954 52762 38076
## 6 1955 55858 41149
data$pbi <- data$pbi/1000
data$consumo <- data$consumo/1000
plot(data$year,
data$pbi,
type = "l",
col = "red",
main= "PBI y Consumo Privado histórico",
xlab = "Año",
ylab = "Miles de Millones de Soles")
lines(data$year,
data$consumo,
type = "l",
col = "green")
legend("topleft",
c("PBI", "Consumo"),
lty = 1,
col = 2:4)
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
regresion <- lm(data$consumo~data$pbi)
regresion
##
## Call:
## lm(formula = data$consumo ~ data$pbi)
##
## Coefficients:
## (Intercept) data$pbi
## 7.6446 0.6163
summary(regresion)
##
## Call:
## lm(formula = data$consumo ~ data$pbi)
##
## Residuals:
## Min 1Q Median 3Q Max
## -13.221 -2.648 -1.039 4.695 9.090
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.644630 1.163019 6.573 8.26e-09 ***
## data$pbi 0.616313 0.004852 127.034 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 5.385 on 68 degrees of freedom
## Multiple R-squared: 0.9958, Adjusted R-squared: 0.9957
## F-statistic: 1.614e+04 on 1 and 68 DF, p-value: < 2.2e-16
data$residuos <- resid(regresion)
plot(data$year,
data$residuos,
type = "l",
col = "blue",
main= "Residuos",
ylab="",
xlab = "Año") #Observamos un camino sinuoso entre los residuos y el tiempo
acf(data$residuos, main= "Correlograma de Residuos")
# Realizamos el test de Durbin Watson, obteniendo un p-value menor a 0.05 Hay evidencia de autocorrelación de primer orden, en los residuos del modelo
dwtest(regresion,alternative="two.sided")
##
## Durbin-Watson test
##
## data: regresion
## DW = 0.21186, p-value < 2.2e-16
## alternative hypothesis: true autocorrelation is not 0
#Si realizamos el test de Multiplicadores de Lagrange observamos que existe hasta un modelo AR(2)
bgtest(regresion,order = 1)->bg
bg # Autocorrelación de Primer Orden
##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: regresion
## LM test = 55.957, df = 1, p-value = 7.406e-14
bgtest(regresion,order = 2)->bg2
bg2 # Autocorrelación de Segundo Orden
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: regresion
## LM test = 56.7, df = 2, p-value = 4.873e-13
VarCov(\(\epsilon\)) \(\neq\) I \(\sigma^{2}\)↩︎