UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

MÉTODOS PARA EL ANÁLISIS ECONÓMICO

CICLO II-2023

GT02


TEMA:

COINTEGRACIÓN Y CAUSALIDAD


GRUPO DE TRABAJO Nº 5


INTEGRANTES:

Nicole Saraí Aguilar Hernández AH20030

Yasmin Azucena Calderón García CG19041

Carlos David Deleón Molina DM19001

Cecilia Guadalupe Mejía López ML20003


DOCENTE:

CARLOS ADEMIR PEREZ ALAS


Ciudad Universitaria, San Salvador 07 de enero de 2024.

1. Prueba de Raíz Unitaria de Dickey & Fuller

Propósito de la prueba

La prueba de Raíz Unitaria de Dickey & Fuller constituye una técnica estadística empleada en el ámbito de la econometría y el análisis de series temporales. Su finalidad es determinar si una serie temporal univariante posee o no una raíz unitaria, indicando así si se tiene estacionariedad en la serie o no.

La esencia de esta prueba es determinar si se puede convertir una serie temporal en una versión estacionaria mediante diferenciación, donde se necesita conocer del orden de integración, denotado como “d”, el cual indica cuántas diferenciaciones son necesarias para lograr la estacionariedad, por ejemplo, si d=1, significa que se requiere una diferencia para alcanzar la estacionariedad, representada como I(1).

En sí, dicha prueba tiene por lo menos tres versiones y la elección entre ellas depende del contexto y las características específicas de los datos que se están analizando, por ello, los autores propusieron las siguientes tres formas funcionales para efectuar la prueba:

Versiones Características Detalle Clasificación
A No constant, no trend \(\Delta y_t = \theta y_{t-1} + e_t\) Camino aleatorio puro.
B Constant, no trend \(\Delta y_t = \alpha+ \theta y_{t-1} + e_t\) Camino aleatorio con constante.
C Constant & Trend \(\Delta y_t=\alpha+\delta t+\theta y_{t-1}+e_t\) Camino aleatorio con constante, tendencia

estocástica y determinística. Elaboración propia con base a datos de RPubs - Document (2021) y Prueba de Raiz Unitaria de DICKEY FULLER En r - YouTube (2021)

La elección de la versión de la prueba a utilizar Miguel Angel Mendoza (2016) lo explica de la siguiente manera: “El modelo anida las diferentes alternativas de prueba vistas antes, es decir se puede efectuar la prueba de raíz unitaria con o sin constante, con o sin tendencia determinística y con o sin considerar autocorrelaciones. Esta generalidad y amplitud de las posibilidades de prueba puede llevar a que, en algunos casos, se busque obligar a que la prueba otorgue evidencia favorable a alguna intención a priori de quién la esta efectuando, para evitar falsear la prueba es conveniente seguir alguna estrategia de prueba.”

  • Se deben graficar los datos para determinar la clasificación del modelo.

    • Si la serie original presenta tendencia, se debe incluir tendencia e intercepto
    • Si no parece tener tendencia y su media no es cero, sólo incluir intercepto.
    • Si parece fluctuar en torno a su valor medio cero, no incluir ni tendencia e intercepto

Para la prueba nosotros cumplimos con un modelo original y llegamos a un modelo diferenciado, pero necesitamos partir de la forma más básica para encontrar dicho modelo diferenciado.

La forma más básica de investigar la existencia de una raíz unitaria implica iniciar con la construcción de un modelo autorregresivo (modelo AR). Este procedimiento consiste en elaborar un modelo AR y luego realizar pruebas estadísticas, como la Prueba de Dickey-Fuller, con el propósito de determinar si la serie temporal presenta una raíz unitaria.

Dicho modelo viene dado por:

\[y_t=\rho y_{t-1}+e_t,\quad t=1,2,\ldots,\] Donde:

  • \(y_t\) es el valor de la serie temporal en el tiempo \(t\).
  • \(\rho\) es el coeficiente de autoregresión que cuantifica la dependencia de la serie temporal en el tiempo \(t\) respecto a su valor en el tiempo \(t-1\).
  • \(y_{t-1}\) es el valor de la serie temporal en el periodo anterior (\(t-1\)).
  • \(e_t\) es el término de error en el tiempo \(t\), asumiéndose que sigue una distribución normal y tiene media cero condicional a la información pasada (\(y_{t-1}, y_{t-2}, \ldots, y_0\)). La condición \(E(e_t | y_{t-1}, y_{t-2}, \ldots, y_0) = 0\) establece que, dadas las observaciones pasadas de la serie temporal, el término de error \(e_t\) tiene una media de cero. Esta condición implica que, en promedio, no hay un sesgo sistemático o tendencia en \(e_t\) que no pueda ser explicado por la información pasada disponible.

Para llevar a cabo la Prueba de Raíz Unitaria de Dickey & Fuller, se utiliza una ecuación específica que involucra restar el valor \(y_{t-1}\) de ambos lados de la ecuación autorregresiva original y definir un término \(\theta\) como la diferencia entre el coeficiente de autoregresión \(\rho\) y 1.

Consideramos un proceso estocástico de la forma:

\[y_t-y_{t-1}=\rho y_{t-1}+e_t-y_{t-1}\]

\[\Delta y_t=(\rho-1) y_{t-1}+e_t\]

La ecuación resultante se expresa como:

\[\Delta y_t = \theta y_{t-1} + e_t\]

Donde:

  • \(\Delta y_t\) representa la diferencia entre los valores sucesivos de la serie temporal.
  • \(\theta\) es la diferencia entre el coeficiente de autoregresión \(\rho\) y 1.
  • \(y_{t-1}\) es el valor de la serie temporal en el periodo anterior (\(t-1\)).
  • \(e_t\) es el término de error en el tiempo \(t\), asumiéndose que sigue una distribución normal y tiene media cero condicional a la información pasada (\(y_{t-1}, y_{t-2}, \ldots, y_0\)).

En esta prueba se puede razonar que dicha transformación es porque se utiliza la diferenciación para calcular la variación entre los valores consecutivos de la serie temporal, representada por \(\Delta y_t\), con el objetivo de eliminar posibles tendencias que puedan hacer que la serie no sea estacionaria. Además, se introduce el coeficiente de autoregresión original \(\rho\), representado por \(\theta\), que se obtiene restando 1 de \(\rho\). Al restar \(y_{t-1}\) de ambos lados de la ecuación original, evaluamos cómo la serie cambia de un período a otro en relación con su valor anterior. Si \(\theta\) es igual a cero, sugiere que la serie tiene una raíz unitaria, lo que implica la falta de estacionariedad. Finalmente, el término de error \(e_t\) refleja que cualquier patrón observable en la serie ha sido capturado por los valores anteriores, y lo que queda en \(e_t\) es esencialmente aleatorio.

Anteriormente se excluyó la constante \(\alpha\) y nos centramos en analizar la estacionariedad de la serie una vez que se ha eliminado cualquier componente de tendencia constante, sin embargo, lo mismo se puede aplicar para un modelo AR(1), donde se tenga la constante, es decir, podemos tomar el siguiente modelo:

\[y_t=\alpha+ \rho y_{t-1}+e_t,\quad t=1,2,\ldots,\]

Donde ya conocemos todos los detalles y agregado a esto está \(\alpha\) que es la constante o intercepto que refleja el valor esperado de \(y_t\) cuando \(y_{t-1} = 0\). De esto, al restar el valor \(y_{t-1}\) de ambos lados de la ecuación autorregresiva original y volviendo a definir un término \(\theta\) como la diferencia entre el coeficiente de autoregresión \(\rho\) y 1 podemos obtener lo siguiente:

\[\Delta y_t = \alpha + \theta y_{t-1} + e_t\]

La única diferencia entre estos modelos se basa en que uno tiene caminata aleatoria pura y otro es caminata aleatoria con deriva, es decir, radica en la constante, y no se expresan conjuntamente dado a la necesidad de modelar adecuadamente la dependencia temporal de los datos, sin embargo, ambos pueden expresarse como la diferencia entre observaciones consecutivas de tal manera que se tenga \(\Delta y_t=y_t- y_{t-1}\).

Prueba de Dickey & Fuller aumentada

El modelo que empleamos para ilustrar las pruebas DF supone que los datos siguen un proceso AR(1), sin embargo en la práctica muchas series pueden no ajustarse a ello. Si suponemos que los datos siguen un proceso más general como un AR(p), nos hará que se presente problemas como la existencia de autocorrelación en los residuales.

Para abordar esta prueba aumentada empezamos optando por modificar la ecuación original \(\Delta y_t = \alpha+ \theta y_{t-1} + e_t\). En lugar de restringirnos a una estructura lineal simple, permitimos que \(y_t\) siga un modelo AR con rezagos adicionales. Esta adaptación busca capturar de manera más precisa la dinámica del proceso subyacente y mejorar la capacidad de la prueba para detectar la presencia de raíces unitarias en el modelo y corregir problemas de autocorrelación.

\[\Delta y_t=\alpha+\theta y_{t-1}+\gamma_1 y_{t-1}+e_t\]

Donde:

  • \(\alpha\) es la constante o término de intercepto que contribuye al cambio en \(y_t\).
  • \(\theta y_{t-1}\) refleja la dependencia lineal de \(y_t\) en su valor anterior \(y_{t-1}\).
  • \(\gamma_1 y_{t-1}\) añade una componente autorregresiva adicional, modelando la relación específica entre \(y_{t-1}\) y el cambio en \(y_t\).
  • \(e_t\) es el término de error, capturando la variación no explicada en el modelo.

Es fundamental que el valor de \(|\gamma_1| < 1\) para garantizar que el modelo sea estacionario y que las propiedades estadísticas sean significativas, lo que nos permitirá describir un modelo utilizado para comprender cómo cambia una variable \(y_t\) a lo largo del tiempo, ya sea explicado únicamente por su cambio inmediato o también por su relación con \(y_{t-1}\) en el periodo anterior.

En un sentido más amplio, se puede incorporar \(p\) rezagos de \(\Delta y_t\) a la ecuación para capturar la dinámica del proceso. La manera de evaluar la hipótesis nula de raíz unitaria es muy parecida: realizar la regresión de \(\Delta y_t\) sobre sus rezagos (\(\Delta y_{t-1}, \Delta y_{t-2}, ..., \Delta y_{t-p}\)). Esto implica realizar pruebas de hipótesis para determinar si estos coeficientes son diferentes de cero, ya que, si esto es así, podría indicar que las variaciones pasadas están relacionadas de manera significativa con la variación actual (\(\Delta y_t\)), lo que a su vez podría sugerir la presencia de raíces unitarias en el proceso subyacente.

Cuando nos enfrentamos al Modelo de Camino aleatorio con constante, tendencia estocástica y determinística, es necesario ajustar la prueba de raíces unitarias, dado que, al tratar con procesos que exhiben una tendencia estacionaria, es decir, una tendencia lineal en su media pero estacionaria en sus primeras diferencias, la aplicación directa de la prueba de Dickey-Fuller puede presentar problemas. En este sentido, es probable que la prueba tenga limitada capacidad para rechazar la hipótesis de una raíz unitaria, es por ello que se modifica su ecuación básica, donde la ecuación ajustada incluye un término adicional para capturar una posible tendencia temporal lineal en los datos.

\[\Delta y_t=\alpha+\delta t+\theta y_{t-1}+e_t\]

Donde:

  • \(\Delta y_t\) representa el cambio en la variable \(y\) en el tiempo \(t\).
  • \(\alpha\) es una constante.
  • \(\delta t\) es el término que incorpora una posible tendencia temporal lineal.
  • \(\theta y_{t-1}\) refleja la relación con el valor anterior de \(y\).
  • \(e_t\) es el término de error.

La prueba de hipótesis evalúa si hay evidencia estadística para afirmar o refutar la presencia de una tendencia temporal lineal en la serie de tiempo, es decir, la hipótesis nula establece que el coeficiente asociado con la tendencia temporal (\(\delta\)) es igual a cero, lo que implica que no hay una tendencia lineal en los datos, agregando que \(\theta = 0\), lo cual explicaría una hipótesis nula más apropiada, pero en la realidad se opta solo por probar como hipótesis nula que \(\theta = 0\), por lo que, mantenemos los mismos criterios de decisión y el mismo estadístico de prueba, lo que causa que en R se nos facilita la evaluación de esta prueba, ya que, solo nos basamos en cambiar lags dependiendo de la serie de tiempo que estemos tratando y corregimos mediantes diferencias que se van aplicando constantemente hasta obtener un modelo estacionario.

En esta versión ampliada de la prueba los valores críticos y la regla de rechazo son los mismos que las versiones anteriores, ya que a pesar de agregar rezagos a la ecuación, el enfoque general de la prueba sigue siendo el mismo: evaluar si la serie temporal tiene una raíz unitaria, no obstante, en cuantos más rezagos se incluyan se pierden más observaciones iniciales, por lo que, si se incluyen demasiados la prueba se ve afectada, aunque si son muy pocos esto también afecta causando una respuesta incorrecta, por ello, se recomienda que para datos anuales suele bastar con 1 o 2 rezagos, pero para datos mensuales se deberían incluir 12, cabe aclarar que esta no es una regla estricta.

Para saber cuántos son los lags que debemos utilizar según Gujarati (2010) se trata básicamente de un asunto empírico. Una regla práctica es calcular la función de autocorrelación (FAC) hasta un tercio o una cuarta parte de la longitud de la serie de tiempo.

Por otra parte, también podemos utilizar cualquiera de las siguientes pruebas, según Test de Dickey Fuller Aumentado En r - YouTube (2021) nos podemos apoyar del criterio de información de Akaike (AIC, por sus siglas en inglés) o también nos podemos apoyar del criterio de información Bayesiano (BIC), algo que se permite a través de la librería tseries mediante el comando adf.test, con tan solo especificarle la serie de datos nos devuelva los lags pertinentes, donde se conoce que dicho dato lo regresa acorde a una fórmula que es \(k = trunc((length(x)-1)^{1/3})\) en la cual se pide que se trunque el resultado a un número entero al calcular la raíz cúbica del resultado de restar 1 a la longitud del vector ‘\(x\)’.

Por último la opción más sencilla es tener en cuenta la frecuencia de la serie de tiempo, determinando los rezagos en concordancia con su frecuencia:

Rezagos Frecuencia
1 Anual
2 Semestral
3 Cuatrimestral
4 Trimestral
6 Bimensual
12 Mensual

Sin embargo, en nuestro caso nos apoyaremos de la explicación del libro de Miguel Angel Mendoza (2016) para seguir su implementación en R, por lo que, los criterios de información de Akaike y Schwarz, se emplean para identificar la estructura óptima de los rezagos.

Hipótesis de la prueba

Debemos iniciar especificando que si \(y_t\) sigue \(y_t=\alpha+ \rho y_{t-1}+e_t\), tiene un raíz unitaria si y solo si \(\rho=1\).

A partir de ello, determinamos que un modelo con caminata aleatoria y sin deriva (sin tendencia) se representa como \(\alpha = 0\) y \(\rho = 1\), siendo acá donde se satisface la ecuación \(E(e_t | y_{t-1}, y_{t-2}, \ldots, y_0) = 0\), por otro lado, el modelo con caminata aleatoria con deriva (con tendencia) implica que \(\alpha \not= 0\) y \(\rho = 1\), lo que significa \(E(y_t)\) es una función lineal de \(t\). Ambos modelos se comportan de manera diferente, pero es común dejar \(\alpha\) sin especificar, siendo este un criterio que se adoptará para determinar la hipótesis nula y alternativa.

La prueba de raíz unitaria se realiza evaluando si:

  • Ho: \(\theta = 0\) (equivalente a \(\rho = 1\)).

Si \(\theta\) es cero, indica que la serie temporal tiene una raíz unitaria, lo que implica la falta de estacionariedad. Está hipótesis es con base en que si la serie tiene una raíz unitaria, las diferencias entre los valores sucesivos de la serie no convergen a cero, por lo que, sugiere la presencia de tendencias o patrones persistentes a lo largo del tiempo, lo que afectaría la constancia y previsibilidad de la serie.

  • H1: \(\theta \not= 0\) (equivalente a \(\rho < 1\)).

Si \(\theta\) es diferente de cero, sugiere que la serie es estacionaria y más manejable desde el punto de vista analítico. Esto implica que \(\theta\) se utiliza para determinar como la serie cambia de un período a otro respecto a su valor anterior.

De acuerdo con el texto de Wooldridge (2009) se menciona: En la práctica, al realizar una Prueba de Raíz Unitaria para un proceso AR(1), se establece que \(0 < \rho < 1\), ya que \(\rho = 0\) sería inusual en una serie que se sospecha tiene una raíz unitaria. La alternativa \(H_1: \rho > 1\) generalmente no se considera, ya que implicaría que la serie \(y_t\) es explosiva, con una tendencia exponencial en su media cuando \(\rho > 1\).

Cuando \(|\rho| < 1\), el proceso AR(1) es estable, lo que significa que es débilmente dependiente o no se correlaciona asintóticamente. La correlación entre \(y_t\) y \(y_{t+h}\) tiende a cero cuando \(h\) se acerca a cero (\(\text{Corr}(y_t, y_{t+h}) \rightarrow 0\) cuando \(|\rho| < 1\)).

La prueba de raíz unitaria en el modelo \(y_t\) con la alternativa \(\rho > 1\) es en realidad una prueba de si \(y_t\) es I(1) (tiene una raíz unitaria) en comparación con la alternativa de que \(y_t\) sea I(0) (es estacionaria). No se toma la hipótesis nula como I(0) debido a que \(y_t\) es I(0) para cualquier valor de \(\rho\) estrictamente entre -1 y 1, lo cual las pruebas de hipótesis clásicas no manejan fácilmente.

Sintaxis de implementación en R

Librerías a utilizar:

library(urca)

library (tseries)

Prueba de Dickey-Fuller

ur.df (x, type = c (“none”, “drift”, “trend”), lags = 1, selectlags = c (“Fixed”, “AIC”, “BIC”))

Argumentos:

x: Es el vector que se someterá a la prueba de raíz unitaria.

type: Indica el tipo de prueba (“none” para ninguna intersección ni tendencia, “drift” para una intersección, “trend” para una intersección y una tendencia).

lags: Especifica el número de rezagos a considerar.

selectlags: Permite la selección de los retardos según los criterios de Akaike (“AIC”) o Bayes (“BIC”). Se establece el número máximo de rezagos mediante el parámetro lags, con el valor predeterminado de utilizar una longitud de retraso fija definida por lags.

Prueba de Dickey Fuller Aumentada

adf.test (x, k = 1)

Argumentos:

x: Un vector numérico o una serie de tiempo univariante que se someterá a la prueba.

k: Indica el orden de retraso con el valor predeterminado para calcular la estadística de prueba, el cual, se puede dejar sin especificar para que la misma prueba devuelva un resultado con base a la siguiente fórmula: \(k = trunc((length(x)-1)^{1/3})\)

Para la implementación en R utilizaremos las librerías urca y tseries, ocuparemos ciertos datos financieros que descargaremos de Yahoo Finance y seguiremos la aplicación en R que se detalla en el libro de Miguel Angel Mendoza (2016) del capítulo 9 y apartado 3.

# Carga de paquete para la obtención de datos financieros
library(quantmod)

# Descarga los precios de cierre diarios de TSLA desde Yahoo Finance
getSymbols("TSLA", # Descarga los datos y los asigna a la variable 'TSLA'
           src = "yahoo", # Indica que se están obteniendo los datos de Yahoo Finance
           from = "2022-01-01", # Especifica la fecha de inicio de los datos
           to = "2023-11-18", # Especifica la fecha final
           auto.assign = TRUE) # Indica que los datos se asignarán automáticamente a la variable especificada (en este caso, 'TSLA')
## [1] "TSLA"
# Extraer los precios de cierre ajustados de la serie temporal 'TSLA'
# 'Ad(TSLA)' utiliza la función 'Ad' para obtener los precios de cierre ajustados
serie_tsla <- Ad(TSLA)
# Se asigna el logaritmo de la variable de serie de tiempo al objeto serie_tsla y se aplica la primera y segunda diferencia
log_serie_tsla<-log(serie_tsla)
diff1_tsla<-diff(log_serie_tsla, 1)
diff2_tsla<-diff(diff1_tsla, 1)
# El aplicar logaritmo es una transformación común para estabilizar la varianza y hacer que los datos sean más interpretables
# Para analizar el comportamiento de los precios de cierre diarios de TSLA se grafica log_serie_tsla
library(TSstudio)

ts_plot(log_serie_tsla, 
        Xtitle = "Años/Meses",
        title = "Logaritmo de la serie TESLA")

En la gráfica se observa el comportamiento de los precios de cierre diarios de TESLA, donde destaca que la tendencia puede explicarse como rotura de tendencia bajista.

# Comportamiento de la primera y segunda diferencia
# Se combinan los datos de la primera y segunda diferencia
combina<-cbind(diff1_tsla, diff2_tsla)

# Eliminando los NA
combina<-combina[complete.cases(combina),]

# Gráfica de ambos datos
ts_plot(combina,
        title = "Diferencias del logaritmo de la serie TESLA",
        Xtitle = "Años/Meses")

De está gráfica se puede observar que con la primera diferencia que se muestra en azul se estabiliza la media del logaritmo. Para revisar si se puede mejorar la estabilidad de la media y la varianza se aplica la segunda diferencia que se muestra en anaranjado y la gráfica muestra que se mejora la estabilidad, sin embargo, convendría aplicar la prueba ADF para cada una de las diferencias y determinar si es suficiente aplicar la primera diferencia o se necesita de la segunda diferencia.

Utilizando libraría urca:

library(urca) # Importar la biblioteca 'urca' que proporciona funciones para realizar pruebas de raíces unitarias
df <- ur.df(serie_tsla, # Aplicar la prueba Dickey-Fuller a la serie de tiempo 
            type="trend", # Indica que tipo de modelo se esta considerando
            # Caminata aleatoria pura (none); Caminata aleatoria con constante (drift); Caminata aleatoria con constante, tendencia estocástica y determinística (trend)
            lags = 4, # Especifica la cantidad de retardos que se utilizan en la prueba
            selectlags=c("AIC")) # Indica el criterio de información a utilizar para seleccionar el número óptimo de retardos.
summary(df) #Impresión de un resumen de los resultados
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.105  -4.927   0.272   5.484  32.831 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  4.558681   2.603952   1.751  0.08067 . 
## z.lag.1     -0.018794   0.008609  -2.183  0.02954 * 
## tt          -0.001117   0.003562  -0.314  0.75403   
## z.diff.lag1 -0.023822   0.046092  -0.517  0.60551   
## z.diff.lag2  0.027738   0.046048   0.602  0.54723   
## z.diff.lag3 -0.049919   0.045809  -1.090  0.27640   
## z.diff.lag4  0.126205   0.045778   2.757  0.00607 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.167 on 461 degrees of freedom
## Multiple R-squared:  0.0323, Adjusted R-squared:  0.0197 
## F-statistic: 2.564 on 6 and 461 DF,  p-value: 0.01875
## 
## 
## Value of test-statistic is: -2.183 1.8743 2.6953 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2  6.15  4.71  4.05
## phi3  8.34  6.30  5.36

Podemos agregar la evaluación con la librería tseries, usando el comando adf.test, teniendo en consideración que se estaría evaluando la prueba DF aumentada, por tanto, tenemos un caso que por default es una versión con tendencia e intercepto, por lo que, los resultados con urca cuando la versión que se especifica es trend serán los mismos con el reultado que se obtenga con la librería tseries.

library(tseries) # Importar la biblioteca 'tseries' que proporciona funciones para realizar pruebas de raíces unitarias ADF
adf.test (serie_tsla, # Aplicar la prueba Dickey-Fuller aumentada a la serie de tiempo 
          k = 4) # Especifica la cantidad de retardos que se utilizan en la prueba
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_tsla
## Dickey-Fuller = -2.183, Lag order = 4, p-value = 0.5006
## alternative hypothesis: stationary

Con el criterio de Akaike se encontró que el valor mínimo se obtiene con una estructura de cuatro rezagos, lo que podemos visualizar en la parte de los ceficientes, específicamente en los lags (z.diff.lag#) donde el p-value del lag=4 es de 0.00116 lo que lo hace menor al nivel de significancia 0.05. Los resultados de la prueba ADF no nos permiten rechazar la hipótesis de raíz unitaria debido a que tau estimada es menor en valor absoluto al valor critico del 5% de la prueba: 2.183 < 3.42 En conclusión la serie no es estacionaria y por tanto el orden de integración es mayor a cero.

Ahora podemos aplicar el análisis anterior aplicando la prueba ADF con constante y sin constante, ni tendencia.

library(urca) 
# Caminata aleatoria pura
df_none <- ur.df(serie_tsla, 
            type="none", 
            lags = 4,
            selectlags=c("AIC")) 
summary(df_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -37.357  -4.420   0.383   5.315  32.381 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## z.lag.1     -0.001713   0.001734  -0.988  0.32358   
## z.diff.lag1 -0.031143   0.045973  -0.677  0.49848   
## z.diff.lag2  0.021367   0.045954   0.465  0.64217   
## z.diff.lag3 -0.055879   0.045712  -1.222  0.22217   
## z.diff.lag4  0.121579   0.045729   2.659  0.00812 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.193 on 463 degrees of freedom
## Multiple R-squared:  0.02316,    Adjusted R-squared:  0.01262 
## F-statistic: 2.196 on 5 and 463 DF,  p-value: 0.05368
## 
## 
## Value of test-statistic is: -0.9882 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
# Caminata aleatoria con constante, tendencia estocástica y determinística
df_trend <- ur.df(serie_tsla,
            type="drift", 
            lags = 4, 
            selectlags=c("AIC")) 
summary(df_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.053  -4.955   0.179   5.406  32.990 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  3.991459   1.870955   2.133  0.03342 * 
## z.lag.1     -0.017541   0.007617  -2.303  0.02174 * 
## z.diff.lag1 -0.025025   0.045887  -0.545  0.58577   
## z.diff.lag2  0.026531   0.045842   0.579  0.56304   
## z.diff.lag3 -0.051170   0.045591  -1.122  0.26228   
## z.diff.lag4  0.125045   0.045584   2.743  0.00632 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.158 on 462 degrees of freedom
## Multiple R-squared:  0.03209,    Adjusted R-squared:  0.02162 
## F-statistic: 3.064 on 5 and 462 DF,  p-value: 0.009869
## 
## 
## Value of test-statistic is: -2.3027 2.7677 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.44 -2.87 -2.57
## phi1  6.47  4.61  3.79

En ambos casos vemos que el valor de tau es menor al valor crítico, de tal manera que hay presencia de una raíz unitaria, los resultados concuerdan. En conclusión la serie de los precios ajustados de TESLA no son estacionarios y por tanto el orden de integración es mayor a cero.

Para determinar el orden de integración de las variables, se aplican las pruebas ADF con sus tres posibilidades: 1) sin tendencia, ni constante; 2) con constante; y, 3) con constante y tendencia, a la primera diferencia del logaritmo de la serie TSLA.

# Pruebas con la primera diferencia

# Quitando los NA 
diff1_tsla<-diff1_tsla[complete.cases(diff1_tsla),]

df1_none <- ur.df(diff1_tsla,
            type="none", 
            lags = 4, 
            selectlags=c("AIC")) 
summary(df1_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.121410 -0.022145  0.000944  0.021013  0.107935 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.87658    0.09292  -9.433  < 2e-16 ***
## z.diff.lag1 -0.14462    0.07991  -1.810  0.07096 .  
## z.diff.lag2 -0.11591    0.06582  -1.761  0.07888 .  
## z.diff.lag3 -0.14821    0.04597  -3.224  0.00135 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03853 on 463 degrees of freedom
## Multiple R-squared:  0.5268, Adjusted R-squared:  0.5227 
## F-statistic: 128.9 on 4 and 463 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -9.4333 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
df1_drift <- ur.df(diff1_tsla,
            type="drift", 
            lags = 4, 
            selectlags=c("AIC")) 
summary(df1_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.120699 -0.021464  0.001679  0.021745  0.108628 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.0007301  0.0017865  -0.409  0.68296    
## z.lag.1     -0.8784059  0.0931152  -9.434  < 2e-16 ***
## z.diff.lag1 -0.1432052  0.0800523  -1.789  0.07429 .  
## z.diff.lag2 -0.1148867  0.0659234  -1.743  0.08205 .  
## z.diff.lag3 -0.1476386  0.0460314  -3.207  0.00143 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03856 on 462 degrees of freedom
## Multiple R-squared:  0.527,  Adjusted R-squared:  0.5229 
## F-statistic: 128.7 on 4 and 462 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -9.4335 44.4968 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.44 -2.87 -2.57
## phi1  6.47  4.61  3.79
df1_trend <- ur.df(diff1_tsla,
            type="trend", 
            lags = 4, 
            selectlags=c("AIC")) 
summary(df1_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.119069 -0.021759  0.001261  0.021863  0.110757 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -3.205e-03  3.640e-03  -0.880  0.37911    
## z.lag.1     -8.847e-01  9.351e-02  -9.462  < 2e-16 ***
## tt           1.037e-05  1.329e-05   0.780  0.43559    
## z.diff.lag1 -1.383e-01  8.033e-02  -1.721  0.08584 .  
## z.diff.lag2 -1.116e-01  6.608e-02  -1.689  0.09192 .  
## z.diff.lag3 -1.460e-01  4.610e-02  -3.167  0.00164 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03858 on 461 degrees of freedom
## Multiple R-squared:  0.5276, Adjusted R-squared:  0.5225 
## F-statistic:   103 on 5 and 461 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -9.4617 29.8424 44.7626 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.98 -3.42 -3.13
## phi2  6.15  4.71  4.05
## phi3  8.34  6.30  5.36
library(tseries)
adf.test (diff1_tsla, 
          k=4)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1_tsla
## Dickey-Fuller = -9.0653, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Resultados:

  1. Caminata aleatoria pura: tau es mayor al valor crítico con nivel de significancia de 5% (9.43 > 1.95).
  2. Caminata aleatoria con constante: tau es mayor al valor crítico con nivel de significancia de 5% (9.43 > 2.87).
  3. Caminata aleatoria con tendencia y constante: tau es mayor al valor crítico con nivel de significancia de 5% (9.46 > 3.42); p-value es menor al nivel de significancia (0.01 < 0.05).

Intepretación: Efectuando los tres tipos de pruebas se rechaza la hipótesis de raíz unitaria por lo que se puede concluir que la serie es integrada de orden uno I(1).

Estadístico de prueba

A partir de la sintaxis de implementación en R de la prueba podemos explicar el estadístico de la prueba, incluyendo el criterio de decisión para poder dar interpretación a los resultados obtenidos de los precios de cierre ajustados de la compañía TESLA para el año 2022 hasta el año actual.

El estadístico de prueba \(\tau\) en la prueba de Dickey-Fuller en R se utiliza para verificar si un parámetro crucial en el modelo es igual a cero, lo que sugiere la presencia de una raíz unitaria en la serie temporal. Debido a la no estacionariedad bajo la hipótesis nula (H0), no podemos aplicar directamente el teorema del límite central al \(\tau\), en cambio, utilizamos la distribución de Dickey-Fuller en R para comprender la importancia estadística del \(\tau\).

Para facilitar la interpretación y aplicación de la prueba en R, hemos obtenido los valores necesarios mediante la librería urca, de los cuales, podemos interpretar los datos del p-value resultante o del estadístico de prueba \(\tau\) en comparación con el nivel de significancia (0.05) o el valor crítico, respectivamente, lo que nos evita la tabulación de datos y simplifica el proceso.

Para detallar el estadístico de prueba nos apoyaremos de los resultados obtenidos en primera instancia con la sintaxis de la implementación en R, es por ello que tenemos la siguiente explicación acorde con el resultado de la librería urca:

## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend (En este apartado de trend aparece la versión de la prueba que se está aplicando)
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -36.105  -4.927   0.272   5.484  32.831 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  4.558681   2.603952   1.751  0.08067 . 
## z.lag.1     -0.018794   0.008609  -2.183  0.02954 * 
## tt          -0.001117   0.003562  -0.314  0.75403   
## z.diff.lag1 -0.023822   0.046092  -0.517  0.60551   
## z.diff.lag2  0.027738   0.046048   0.602  0.54723   
## z.diff.lag3 -0.049919   0.045809  -1.090  0.27640   
## z.diff.lag4  0.126205   0.045778   2.757  0.00607 ** En la columna de Pr(>|t|) se muestran los p-value para cada lag o rezago que se aplique, nos basta con que sea un p-value menor a 5%, lo que indicará el rezago más adecuado para aplicar.
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.167 on 461 degrees of freedom
## Multiple R-squared:  0.0323, Adjusted R-squared:  0.0197 
## F-statistic: 2.564 on 6 and 461 DF,  p-value: 0.01875
## 
## 
## Value of test-statistic is: -2.183 1.8743 2.6953  En esta parte se presenta el estadístico tau, donde nos centramos en el primer valor reflajado de -2.183, específicamente en su valor abosluto, el cual se ha de comparar respecto al valor tau crítico o valor crítico que se presenta en el cuadro de abajo.
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.98 -3.42 -3.13  Con un nivel de significancia de 5% (5pct) y reflejado como tau3 se tiene el valor crítico que es -3.42
## phi2  6.15  4.71  4.05
## phi3  8.34  6.30  5.36

Ahora tenemos la siguiente explicación acorde con el resultado de la librería tseries:

## 
##  Augmented Dickey-Fuller Test (Esta librería se aplica esencialmente para una prueba de Dickey y Fuller aumentada)
## 
## data:  serie_tsla
## Dickey-Fuller = -2.183, Lag order = 4, p-value = 0.5006 
## alternative hypothesis: stationary

## Dickey-Fuller = -2.183 es el valor estadístico o simplemente tau
## Lag order = 4 son los rezagos que se han considerado
## p-value = 0.5006 es el valor que se compararía con el nivel de significancia de 5% para interpretación de la prueba

Criterio de decisión

\[\begin{equation*} \quad \text{No se rechaza la hipótesis nula.} \begin{cases} \begin{aligned} &|\tau| < |\text{V.C}| \\ &\text{p-value} > 0.05 \end{aligned} \end{cases} \end{equation*}\]

\[\begin{equation*} \quad \text{Se rechaza la hipótesis nula.} \begin{cases} \begin{aligned} &|\tau| > |\text{V.C}| \\ &\text{p-value} < 0.05 \end{aligned} \end{cases} \end{equation*}\]

Interpretación de los datos

Explicación de como se pueden interpretar los datos de acuerdo con los resultados que se puedan obtener:

  • Si \(|\tau|\) < \(|\tau_{crítico}|\) y p-value > 0.05, entonces no se rechaza la hipótesis nula y se tiene evidencia que la serie temporal no es estacionaria y presenta una raíz unitaria, lo que indica la presencia de patrones o tendencias que persisten en el tiempo que pueden hacer que la serie sea menos predecible y más variable.

  • Si \(|\tau|\) > \(|\tau_{crítico}|\) y p-value < 0.05, entonces se rechaza la hipótesis nula y se tiene evidencia que la serie temporal es estacionaria y no presenta una raíz unitaria, lo que indica que no hay presencia de patrones o tendencias que persistan en el tiempo haciendo que la serie sea más predecible y menos variable.

Implementación de un ejemplo

Se debe realizar la prueba de Dickey-Fuller para determinar si la serie temporal “AirPassengers” es estacionaria o necesita ser diferenciada para lograr la estacionariedad, de lo cual se debe concluir entonces con el orden de integración.

# Cargar el conjunto de datos
data(AirPassengers)

# Verificar las primeras filas de la columna DAX
head(AirPassengers)
## [1] 112 118 132 129 121 135
# Tomar logaritmos de los datos
log_air<- log(AirPassengers)

# Generar la primera diferencia
diff1_log_air <- diff(log_air, 1)

# Generar la segunda diferencia
diff2_log_air<- diff(diff1_log_air, 1)
# Analizamos el comportamiento de los datos mediante gráficas
library(TSstudio)

# Grafica
ts_plot(log_air, 
        Xtitle = "Años/Meses", 
        title = "Logaritmo de la serie mensual AirPassengers (1949-1960)")

Interpretación: En la gráfica se observa el comportamiento de la cantidad mensual de pasajeros internacionales de aerolíneas (miles), desde 1949 hasta 1960, donde destaca que una marcada tendencia, por lo que, se tiene en consideración agregar tendencia y constante.

# Comportamiento de la primera y segunda diferencia
# Se combinan los datos de la primera y segunda diferencia
combina_air<-cbind(diff1_log_air, diff2_log_air)

# Gráfica de ambos datos
ts_plot(combina_air,
        title = "Diferencias del logaritmo de la serie temporal de AirPassengers (1949-1960)",
        Xtitle = "Años/Meses")

Interpretación: Por medio de está gráfica se puede observar que con la primera diferencia que se muestra en azul se estabiliza la media del logaritmo. Para revisar si se puede mejorar la estabilidad de la media y la varianza se aplica la segunda diferencia que se muestra en anaranjado y la gráfica muestra que se mejora más la estabilidad y por tanto puede ser necesario tender a aplicar la segunda diferencia.

library(urca) 
# Caminata aleatoria con tendencia y constante
df_air <- ur.df(log_air, 
            type="trend", 
            lags = 12, # Elegimos un lag de 12, ya que, conocemos que son datos mensuales
            selectlags=c("AIC")) 
summary(df_air)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.106413 -0.021888 -0.002483  0.022499  0.113217 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.6815772  0.4113000   1.657 0.100196    
## z.lag.1      -0.1327437  0.0866197  -1.532 0.128125    
## tt            0.0011675  0.0008854   1.319 0.189900    
## z.diff.lag1  -0.1219509  0.1114312  -1.094 0.276044    
## z.diff.lag2  -0.2088775  0.1073422  -1.946 0.054085 .  
## z.diff.lag3  -0.1782933  0.1013791  -1.759 0.081269 .  
## z.diff.lag4  -0.2478058  0.0977496  -2.535 0.012573 *  
## z.diff.lag5  -0.1715613  0.0914730  -1.876 0.063233 .  
## z.diff.lag6  -0.2421693  0.0875050  -2.767 0.006577 ** 
## z.diff.lag7  -0.2225068  0.0843831  -2.637 0.009514 ** 
## z.diff.lag8  -0.3282357  0.0825288  -3.977 0.000122 ***
## z.diff.lag9  -0.2122753  0.0802073  -2.647 0.009260 ** 
## z.diff.lag10 -0.3034244  0.0773964  -3.920 0.000150 ***
## z.diff.lag11 -0.2134502  0.0760974  -2.805 0.005902 ** 
## z.diff.lag12  0.5816486  0.0747977   7.776 3.36e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04199 on 116 degrees of freedom
## Multiple R-squared:  0.8647, Adjusted R-squared:  0.8484 
## F-statistic: 52.95 on 14 and 116 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.5325 7.7556 2.7865 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
library(tseries)
adf.test (log_air, k=12)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  log_air
## Dickey-Fuller = -1.5325, Lag order = 12, p-value = 0.7711
## alternative hypothesis: stationary

Interpretación: Ya que \(|\tau|\) < \(|\tau_{crítico}|\): 1.5325 < 3.43 y el p-value > 0.05: 0.7711 > 0.05, entonces no se rechaza la hipótesis nula y se tiene evidencia que la serie temporal no es estacionaria y presenta una raíz unitaria, lo que indica la presencia de patrones o tendencias que persisten en el tiempo que pueden hacer que la serie sea menos predecible y más variable.

Aplicamos la misma prueba para una versión solo con constante y una versión sin constante ni tendencia:

# Caminata aleatoria sin tendencia ni constante
df_air_none <- ur.df(log_air, 
            type="none", 
            lags = 12,
            selectlags=c("AIC")) 
summary(df_air_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.103864 -0.023652 -0.001455  0.022160  0.126649 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## z.lag.1       0.005439   0.001436   3.787 0.000241 ***
## z.diff.lag1  -0.198813   0.072080  -2.758 0.006737 ** 
## z.diff.lag2  -0.273730   0.073309  -3.734 0.000292 ***
## z.diff.lag3  -0.233607   0.072258  -3.233 0.001589 ** 
## z.diff.lag4  -0.293133   0.073926  -3.965 0.000126 ***
## z.diff.lag5  -0.206562   0.072058  -2.867 0.004915 ** 
## z.diff.lag6  -0.266919   0.071493  -3.734 0.000292 ***
## z.diff.lag7  -0.234526   0.071847  -3.264 0.001436 ** 
## z.diff.lag8  -0.327393   0.073197  -4.473 1.79e-05 ***
## z.diff.lag9  -0.198455   0.073623  -2.696 0.008054 ** 
## z.diff.lag10 -0.279931   0.072710  -3.850 0.000192 ***
## z.diff.lag11 -0.176122   0.073011  -2.412 0.017394 *  
## z.diff.lag12  0.627402   0.072683   8.632 3.34e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04308 on 118 degrees of freedom
## Multiple R-squared:  0.8564, Adjusted R-squared:  0.8406 
## F-statistic: 54.14 on 13 and 118 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: 3.7872 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
# Caminata aleatoria con constante
df_air_drift <- ur.df(log_air, 
            type="drift", 
            lags = 12,
            selectlags=c("AIC")) 
summary(df_air_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.111372 -0.023197 -0.000526  0.022918  0.117195 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.14446    0.05713   2.529 0.012778 *  
## z.lag.1      -0.01927    0.00987  -1.952 0.053330 .  
## z.diff.lag1  -0.23447    0.07188  -3.262 0.001451 ** 
## z.diff.lag2  -0.31255    0.07331  -4.263 4.10e-05 ***
## z.diff.lag3  -0.27231    0.07230  -3.766 0.000261 ***
## z.diff.lag4  -0.33246    0.07395  -4.496 1.64e-05 ***
## z.diff.lag5  -0.24605    0.07218  -3.409 0.000895 ***
## z.diff.lag6  -0.30851    0.07182  -4.296 3.62e-05 ***
## z.diff.lag7  -0.27991    0.07251  -3.860 0.000186 ***
## z.diff.lag8  -0.37657    0.07417  -5.077 1.46e-06 ***
## z.diff.lag9  -0.25085    0.07492  -3.348 0.001094 ** 
## z.diff.lag10 -0.33350    0.07419  -4.495 1.65e-05 ***
## z.diff.lag11 -0.23307    0.07486  -3.113 0.002327 ** 
## z.diff.lag12  0.57051    0.07455   7.652 6.15e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04212 on 117 degrees of freedom
## Multiple R-squared:  0.8627, Adjusted R-squared:  0.8474 
## F-statistic: 56.53 on 13 and 117 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.952 10.6966 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1  6.52  4.63  3.81

Interpretación: Los resultados ahora muestran consistencia con el comportamiento de la serie de tiempo de AirPassenger en la gráfica anterior. Esto es, con el estadístico ADF con constante no se puede rechazar la hipótesis de raíz unitaria debido a que la tau estimada es menor en valor absoluto al valor crítico del 5% de la prueba: 1.952 < 2.88. En el caso de la prueba ADF sin constante y tendencia, el resultado muestra que la tau es positiva y con ello se indica que se encuentra en el caso de una raíz característica mayor que uno. En los dos casos, los resultados concuerdan con el hecho de tener una serie con tendencia determinista. En conclusión la serie de AirPassengers no es estacionaria y por tanto el orden de integración es mayor a cero.

A partir de acá solo nos centramos en evaluar los resultados con base a que el tipo de modelo considerado es “trend”, es decir, caminata aleatoria con constante y tendencia.

Para corregir ese problema se aplica la prueba a la primera diferencia:

# Caminata aleatoria con tendencia y constante

# Librería urca
df1_air <- ur.df(diff1_log_air, 
            type="trend", 
            lags = 12,
            selectlags=c("AIC")) 
summary(df1_air)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.09788 -0.02072 -0.00344  0.02193  0.10109 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.851e-02  1.313e-02   2.933  0.00406 ** 
## z.lag.1      -2.676e+00  7.950e-01  -3.366  0.00104 ** 
## tt           -1.477e-04  9.979e-05  -1.480  0.14164    
## z.diff.lag1   1.263e+00  7.623e-01   1.656  0.10037    
## z.diff.lag2   9.973e-01  7.002e-01   1.424  0.15709    
## z.diff.lag3   8.069e-01  6.336e-01   1.274  0.20539    
## z.diff.lag4   5.316e-01  5.697e-01   0.933  0.35271    
## z.diff.lag5   3.807e-01  5.025e-01   0.758  0.45021    
## z.diff.lag6   1.397e-01  4.405e-01   0.317  0.75168    
## z.diff.lag7  -6.398e-02  3.773e-01  -0.170  0.86565    
## z.diff.lag8  -3.776e-01  3.149e-01  -1.199  0.23289    
## z.diff.lag9  -5.342e-01  2.491e-01  -2.145  0.03406 *  
## z.diff.lag10 -7.901e-01  1.885e-01  -4.191 5.47e-05 ***
## z.diff.lag11 -9.327e-01  1.318e-01  -7.075 1.25e-10 ***
## z.diff.lag12 -2.890e-01  8.855e-02  -3.264  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04074 on 115 degrees of freedom
## Multiple R-squared:  0.9203, Adjusted R-squared:  0.9105 
## F-statistic: 94.79 on 14 and 115 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.3656 3.8693 5.8033 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# Librería tseries
adf.test (diff1_log_air, k=12)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff1_log_air
## Dickey-Fuller = -3.3656, Lag order = 12, p-value = 0.06313
## alternative hypothesis: stationary

Interpretación: Nuevamente \(|\tau|\) < \(|\tau_{crítico}|\): 3.3656 < 3.43 y el p-value > 0.05: 0.06313 > 0.05, entonces no se rechaza la hipótesis nula y se tiene evidencia que la serie temporal no es estacionaria y presenta una raíz unitaria, lo que indica la presencia de patrones o tendencias que persisten en el tiempo que pueden hacer que la serie sea menos predecible y más variable.

Volvemos a aplicar la prueba ahora para la segunda diferencia:

# Caminata aleatoria con tendencia y constante

# Librería urca
df2_air <- ur.df(diff2_log_air, 
            type="trend", 
            lags = 12,
            selectlags=c("AIC")) 
summary(df2_air)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.107376 -0.024107 -0.007095  0.027827  0.109327 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   3.542e-03  8.646e-03   0.410    0.683    
## z.lag.1      -1.592e+01  1.047e+00 -15.199  < 2e-16 ***
## tt           -4.596e-05  1.011e-04  -0.455    0.650    
## z.diff.lag1   1.363e+01  9.687e-01  14.065  < 2e-16 ***
## z.diff.lag2   1.228e+01  8.848e-01  13.883  < 2e-16 ***
## z.diff.lag3   1.098e+01  7.992e-01  13.734  < 2e-16 ***
## z.diff.lag4   9.613e+00  7.112e-01  13.516  < 2e-16 ***
## z.diff.lag5   8.329e+00  6.235e-01  13.357  < 2e-16 ***
## z.diff.lag6   7.019e+00  5.347e-01  13.128  < 2e-16 ***
## z.diff.lag7   5.723e+00  4.444e-01  12.878  < 2e-16 ***
## z.diff.lag8   4.331e+00  3.537e-01  12.244  < 2e-16 ***
## z.diff.lag9   3.016e+00  2.626e-01  11.484  < 2e-16 ***
## z.diff.lag10  1.668e+00  1.734e-01   9.618  < 2e-16 ***
## z.diff.lag11  4.037e-01  8.592e-02   4.698 7.33e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04268 on 115 degrees of freedom
## Multiple R-squared:  0.9657, Adjusted R-squared:  0.9618 
## F-statistic: 249.1 on 13 and 115 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -15.1993 77.0132 115.5098 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# Librería tseries
adf.test (diff2_log_air, k=12)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  diff2_log_air
## Dickey-Fuller = -8.4444, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary

Interpretación: Ahora \(|\tau|\) > \(|\tau_{crítico}|\): 15.1993 > 3.43 y p-value < 0.05: 0.01 < 0.05, entonces se rechaza la hipótesis nula y se tiene evidencia que la serie temporal es estacionaria en segunda diferencia y no presenta una raíz unitaria, lo que indica que no hay presencia de patrones o tendencias que persistan en el tiempo haciendo que la serie sea más predecible y menos variable, por lo que se puede concluir que la serie es integrada de orden dos I(2).

NOTA: Tanto para la explicación de la sintaxis en R de la prueba DF y ADF como para la implementación del ejercicio se han utilizado datos que ya están guardados como series temporales, en ese sentido, si se necesita exportar datos (como por ejemplo desde excel) se deberán guardar los datos como series temporales, dependiendo del tipo de análisis y visualización que se planea realizar, de esa forma se podrán generar gráficas parecidas a las que son planteadas en el ejercicio para la interpretación de los datos de manera más adecuada.

2. Cointegración en el enfoque de Soren Johansen

Propósito de la prueba

La cointegración en el enfoque de Soren Johansen es un método usado en series temporales y busca evidenciar las relaciones a largo plazo de las variables económicas.

“El procedimiento multivariado de S. Johansen (1988 y 1991), profesor de estadística matemática de la Universidad de Copenhagen, se ha convertido en un método muy popular para probar la existencia de cointegración en la variables I(1) y I(0), en donde I(1) y I(0)indican integración de primer y cero orden, respectivamente. En la tecnología de S. Johansen, es necesario analizar las series previamente con el fin de conocer sí presentan o no raíces unitarias. Las series que presenten raíces unitarias se colocan en un vector autorregresivo a partir del cual se puede probar la existencia de una o más combinaciones lineales J(U) o vectores de cointegración, como también se les denomina.” (Mata (2014))

Hipótesis de la prueba

La prueba de Soren Johansen presenta 2 hipótesis posibles, en donde:

\(H_0 : r=0\), lo que quiere decir que no existe presencia de cointegracion entre las variables.

\(H_1 : r>0\), lo que quiere decir que existe prencia de cointegracion entre las variables.

Sintaxis de implementación en R

La prueba de cointegración bajo el enfoque de Soren Johansen se realiza, dentro de R, mediante una función dentro del paquete llamado “urca” y en esta se nos presenta una sintaxis de la siguiente forma:

\[ca.jo(x, type = c("eigen", "trace"), ecdet = c("none", "const", "trend"), K = 2, spec=c("longrun", "transitory"), season = NULL, dumvar = NULL)\] En donde cada elemento nos pide: - \(x\) = Matriz de datos que se someterá a la prueba - \(type\) = Método para determinar el número de vectores cointegrantes. Puede ser “eigen” o “trace”. - \(ecdet\) = Especifica si se deben incluir constantes y/o tendencias en el modelo. Puede ser “none” (ninguna), “const” (constante) o “trend” (tendencial). - \(K\) = Número máximo de vectores cointegrantes. - \(spec\) = Especifica la forma de la restricción. Puede ser “longrun” o “transitory”. - \(spec\) = Si se deben incluir dummies estacionales, la frecuencia de los datos debe establecerse en consecuencia, es decir, ‘4’ para datos trimestrales. - \(dumvar\) = Variables dummy que indican intervalos estructurales.

Estadístico de prueba

Es esta ocasión para obtener la salida y explicar el estadistico que se tomara en cuenta para rechazar o no rechazar la hipotesis nula, se utilizará una base de datos ya establecida en RStudio, AirPassengers.

options(scipen = 99999)
library(urca)
data("denmark")
est <- denmark[,c("LRM","LRY")]
csj <- ca.jo(x = est,ecdet = "const", type = "eigen", K = 2, spec = "longrun", season = 4)
summary(csj)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 0.105981316838820713300 0.035377204853326273126 0.000000000000000419105
## 
## Values of teststatistic and critical values of test:
## 
##          test 10pct  5pct  1pct
## r <= 1 | 1.91  7.52  9.24 12.97
## r = 0  | 5.94 13.75 15.67 20.20
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##             LRM.l2    LRY.l2   constant
## LRM.l2    1.000000  1.000000  1.0000000
## LRY.l2   -2.989283 -1.778608 -0.8917182
## constant  6.071961 -1.335754 -6.4071343
## 
## Weights W:
## (This is the loading matrix)
## 
##           LRM.l2       LRY.l2                constant
## LRM.d 0.05086015 -0.015697453 -0.00000000000006641861
## LRY.d 0.05626217  0.009940838 -0.00000000000012027275

En la salida, los datos que nos interesan se encuentran dentro de “Values of teststatistic and critical values of test:”, en la primera columna llamada “test” se encuentra el resultado del estadistico de prueba y en la tercera columna “5pct” se encuenta el resultado del criterio de evaluación.

Criterio de decisión

Para el estadistico se tendrá a consideración las siguientes hipótesis:

  • Sí en \(r=0\) el valor del estadistico es mayor al valor obtenido en el criterio de evaluación (5pct) se rechaza la hipotesis nula y se infiere que existe cointegración.

  • Sí en \(r<=1\) el valor del estadistico es menor al valor obtenido en el valor critico de evalucaión (5pct) no se rechaza la hipotesis nula y se infiere que si existe cointegración y que el numero de vectores de cointegración es 1.

Interpretación de los datos

Volviendo a la prueba, obtuvimos qué: \[r=0 : 5.94 < 15.67\] \[r<=1 : 1.91 < 9.24\] Por lo que se concluye que en ambos casos no se rechaza la hipótesis nula, lo que indica que existe cointegración y que el número de vectores de cointegración es 1.

Implementación de un ejemplo

Para el ejemplo se recolectaron datos del Producto Interno Bruto y el Gasto del Consumo Final en la base de datos brindada por el Banco Central de Reserva, en esa ocasión, los datos van por trimestres del año 1990 al 2005.

library(kableExtra)
library(car)
library(readxl)
library(forecast)

PIBGCF <- read_excel("~/R/METODOS PARA EL ANALISIS ECONOMICO/Parte1_Cointegración yCausalidad/PIBGCS.xlsx")

ts(PIBGCF,frequency = 4,start = c(1990,1)) -> pib
head(pib, n=10) %>% 
  kable(caption = "Tabla del Producto Interno Bruto y el Gasto del Consumo Final de El Salvador 1990-2005",
        align = "c",
        digits = 2) %>% 
  kable_material(html_font = "sans-sarif",
                 font_size = 14) %>% 
  footnote(general_title = "Fuente:",
    general = "Elaboración propia con datos del BCR.")
Tabla del Producto Interno Bruto y el Gasto del Consumo Final de El Salvador 1990-2005
PIB GCF
1064.700 1091.175
1224.397 1181.102
1226.494 1210.035
1301.952 1277.841
1180.267 1182.294
1354.812 1308.479
1330.712 1292.869
1386.552 1355.586
1299.945 1312.668
1436.413 1346.097
Fuente:
Elaboración propia con datos del BCR.

Para determinar el “ecdet” es necesario observar el comportamiento que tienen los datos gráficados dentro de la linea de tiempo:

ttx<-data.frame(PIBGCF$PIB, PIBGCF$GCF)
ts(ttx, frequency= 4, start = c(1990,1))->tty
plot.ts(tty, main="PIB y Consumo de El Salvador 1990-2005")

lnpib <- log(PIBGCF$PIB)
lngcf <- log(PIBGCF$GCF)

tspibgcf <- cbind(lnpib, lngcf)
sjpibgcf <- ca.jo(tspibgcf, type = "trace",ecdet = "trend", spec = c("longrun"), K=4)
summary(sjpibgcf)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend in cointegration 
## 
## Eigenvalues (lambda):
## [1]  0.243196221419414188025243  0.083555725784591194926776
## [3] -0.000000000000000003306817
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 1 |  5.24 10.49 12.25 16.26
## r = 0  | 21.95 22.76 25.32 30.45
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##              lnpib.l4     lngcf.l4   trend.l4
## lnpib.l4  1.000000000  1.000000000  1.0000000
## lngcf.l4 -1.573860312 -1.152029777  0.7968616
## trend.l4  0.004634479  0.003330585 -0.0360449
## 
## Weights W:
## (This is the loading matrix)
## 
##          lnpib.l4   lngcf.l4               trend.l4
## lnpib.d 0.1309789 0.01132145 -0.0000000000003124523
## lngcf.d 0.1121995 0.34090119 -0.0000000000008710571

Teniendo en cuenta los criterios de evaluación:

  • Sí en \(r=0\) el valor del estadistico es mayor al valor obtenido en el criterio de evaluación (5pct) se rechaza la hipotesis nula y se infiere que existe cointegración.

  • Sí en \(r<=1\) el valor del estadistico es menor al valor obtenido en el valor critico de evalucaión (5pct) no se rechaza la hipotesis nula y se infiere que si existe cointegración y que el numero de vectores de cointegración es 1.

Al realizar la prueba se puede observar que:

\[r=0 : 21.95 < 12.25\] \[r<=1 : 21.91 < 25.32\] Interpretación: Por lo que se concluye que en ambos casos no se rechaza la hipótesis nula, lo que indica que existe cointegración y que el número de vectores de cointegración es 1.

3. Causalidad en el sentido de Granger

El origen del término de causalidad se remonta a Galileo Galilei y David Hume en el siglo XVII y XVIII respectivamente, siendo una relación cercana al término de causa-efecto. Una variable X sería causal a una variable Y si X pudiera ser interpretada como la causa de Y y/o Y fuera un efecto de X.

La idea de causalidad está estrechamente relacionada con la de sucesión en el tiempo, debido a David Hume, quien señaló que la causa precede siempre al efecto. La econometría tradicional ha adoptado esa manera de concebir la causalidad, sin embargo, períodos largos de tiempo representados por una única observación (una observación por año) son quizá demasiado largos para asumir que un cambio en una variable podría solamente influenciar a otras en el futuro.

Utilizando series de tiempo económicas, como pueden ser datos mensuales, se asume en muchos casos que cambios en una variable tendrán un impacto posterior en otras, es decir, si X es causal a Y, los valores actuales y rezagados de X deberían contener información que podría ser usada para mejorar el pronóstico de Y. Esto implica que la información no está completamente contenida únicamente en los valores actuales o rezagados de Y. De acuerdo con la definición de causalidad propuesta en 1969 por Clive W.J. Granger, que implica formalmente que el futuro no puede causar al pasado, se examina si la predicción de los valores futuros de Y pueden ser mejorados si, por encima de los propios valores de Y, los valores actuales y rezagados de X son también tomados en cuenta. Es de importancia señalar que el concepto de causalidad en el sentido de Granger se puede relacionar con el concepto de causa-efecto, aunque no es lo mismo. (Caballero)

Propósito de la prueba

La causalidad de Granger es una prueba empleada para determinar si una serie temporal puede predecir a otra y si tiene resultado unidireccional o bidireccional. Para ello, se tiene que comparar y deducir si el comportamiento actual y pasado de una serie temporal A predice la conducta de otra serie temporal B. Si esto ocurre, se puede afirmar que A causa B, y el comportamiento es unidireccional. Si de la misma manera B ayuda en la predicción de A, la causalidad es bidireccional, afirmando que A causa B y B causa A. En este sentido, las variables deben ser estacionarias en la causalidad de Granger porque la prueba de causalidad de Granger se basa en la idea de que la información pasada de una variable puede ayudar a predecir la variable futura de otra variable. (Acín Coello de Portugal (2022))

Respecto al resultado mencionado con anterioridad, entra en juego un concepto importante que es el modelo de retroalimentación, la presencia de un proceso de retroalimentación entre dos series temporales A y B se puede definir como la existencia de una causalidad bidireccional entre ambas series. Esto significa que la información pasada de A ayuda a predecir el valor futuro de B, y que la información pasada de B ayuda a predecir el valor futuro de A, es decir que la presencia de un proceso de retroalimentación significa que las dos series están interconectadas y que una influye en la otra; esta influencia puede ser directa o indirecta, pero siempre existe una relación entre las dos series.

  • Causalidad: Si σ 2 (x | υ) < σ2 x | υ − y se dice que Y está causando a X ( Yt GC→ Xt ). Se dice que Yt está Granger causando a Xt si se es más capaz de predecir Xt usando toda la información disponible que si la información exceptuando aquella de Yt hubiera sido usada.

  • Retroalimentación: Si σ 2 (x | υ¯) < σ2 x | υ − y y σ 2 ( y | υ¯) < σ2 y | υ − x se dice que está ocurriendo una retroalimentación, la cual se denota como YT ↔︎ XT . Cuando YT GC→ XT y XT GC→ YT se dice que existe una retroalimentación entre XT y YT.

  • Causalidad instantánea: Si σ 2 x | υ, ¯ y¯¯ < σ2 (x | υ¯ ) se dice que una causalidad instantánea está ocurriendo, se denota YT GC→ XT . Es decir, el valor actual de XT es predecido mejor si el valor presente de YT es incluido en la predicción que si no lo fuera.

  • Causalidad rezagada: Sea m el rezago causal, siendo el mínimo valor de k, entonces si YT GC→ XT , se define como causalidad rezagada con rezago m si σ 2 (x | υ − y(k)) < σ2 (x | υ − y(k + 1)). Entonces el conocer los valores YT−j , j = 0, 1, . . . , m − 1 no serán de ayuda para mejorar la predicción de XT

Hipótesis de la prueba

Como se mencionó con anterioridad, las variables X y Y deben ser estacionarias. Entonces, para probar que X # Y, se debe examinar si los valores rezagados de X en la regresión de X sobre los valores rezagados de X e Y reduce significativamente el error de varianza.

Se Plantea dos ecuaciones:

\[X_t=\alpha_0+\alpha_1 X_{t-1}+\alpha_2 X_{t-2}+\cdots+\alpha_i X_{t-i}+\beta_1 Y_{t-1}+\beta_2 Y_{t-2}+\cdots+\beta_i Y_{t-i}+\ U_{1t}\] \[X_t=\delta_0+\delta_1 X_{t-1}+\delta_2 X_{t-2}+\cdots+\delta_i X_{t-i}+\theta_1 Y_{t-1}+\theta_2 Y_{t-2}+\cdots+\theta_i Y_{t-i}+\ U_{2t}\] Donde: Xt: primera serie temporal. Yt: segunda serie temporal.

Asúmase que se tiene un proceso autorregresivo de orden p, tanto en X como en Y. Para poder usar los métodos de mínimos cuadrados ordinarios (MCO), la siguiente ecuación (conocida como regresión no restringida) debe ser estimada:

\[X_t=\alpha_0+\alpha_1 X_{t-1}+\alpha_2 X_{t-2}+\cdots+\alpha_i X_{t-i}+\beta_1 Y_{t-1}+\beta_2 Y_{t-2}+\cdots+\beta_i Y_{t-i}+\ U_{1t}\] La prueba utiliza un estadístico F para determinar si la hipótesis nula se rechaza o no.

Hipotesis Nula

\[H_0:\beta_1=\beta_2=\cdots=\beta_p=0\] Si la serie de tiempo Y no causa en el sentido de granger a la serie de tiempo X, entonces β1, β2,βi serán cero; en otras palabras, X no causa a Y.

Hipótesis alternativa

\[H_0:\beta_1\neq\beta_2\neq\cdots\neq\beta_p\neq0\] Si la serie de tiempo Y causa en el sentido de Granger a la serie de tiempo X, entonces β1, β2,βi serán distintos de cero. X causa a Y.

Sintaxis de implementación en R

En R existe una función especial del paquete lmtest llamada grangertest() que se utiliza para realizar la prueba de causalidad de Granger.

La función tiene la siguiente sintaxis: grangertest(X, Y, order = 1)

En donde los argumentos de la función son: - X: La primera serie temporal. - Y: La segunda serie temporal. - order: El orden de la regresión a estimar, es decir, el número de retrasos a utilizar en referencia a la primera serie de tiempo (el valor predeterminado es 1).

Estadístico de prueba

El estadístico de prueba de la prueba de causalidad de Granger es un estadístico F, por lo que una forma de implementar esta prueba es calcular la suma de residuales al cuadrado de la regresión no restringida (URSS, por sus siglas en inglés)

\[URSS=\underset{t=1}{\overset{T}\Sigma}\hat{u}_{t}^{2}\] y compararla con la suma de residuales al cuadrado de una autorregresión univariada no restringida para Xt (RRSS, por sus siglas en inglés) \[RRSS=\underset{t=1}{\overset{T}\Sigma}\hat{e}_{t}^{2}\] Donde la siguiente ecuación recibe el nombre de regresión restringida: \[X_t:\gamma_0+\gamma_1 x_{t-1}+\gamma_2 x_{t-2}+\cdots+\gamma_p x_{t-p}+e_t\] Por lo que el estadístico de prueba es: \[S=\frac{(RRSS-URSS/P)}{URSS/(T-2p-1)}\] Donde: p: es el orden de la regresión a estimar. T: es el número de observaciones de las series temporales X e Y.

Criterio de decisión

Si el estadístico de prueba (S) es más grande que el α % del valor crítico para una distribución F(p, T−2p−1), entonces se debe rechazar la hipótesis nula que Y no Granger causa a X. La prueba estadística tiene una distribución F exacta para una regresión con regresores fijos y errores con distribución normal. (Granger (2001)) Se rechaza la Hipótesis Nula si el estadístico de Prueba F es más grande que el α % del valor crítico.

\[\textbf{Rechazar Ho si F> F(p, T − 2p − 1)}\] En la salida se podrá visualizar el valor-p, mas no el valor critico por lo que el criterio de decisión utilizando el p-value es: \[\textbf{Rechazar Ho si valor p<α}\] Rechazar la hipótesis nula si el valor p del estadístico F es menor que un nivel de significancia dado. En otras palabras, se concluye que la serie temporal X causa a la serie temporal Y. El valor-p en la salida tiene la notacion Pr(>F)

Interpretación de los datos

Si el valor p del estadístico F es mayor o igual que un nivel de significación dado, entonces no se rechaza la hipótesis nula. En otras palabras, se concluye que la serie temporal X no causa a la serie temporal Y.

Si llega a rechazarse la hipótesis nula, existe evidencia que la serie de tiempo X causa la serie de tiempo Y.

Implementación de un ejemplo

Carga de datos

En este caso, utilizaremos el conjunto de datos ChickEgg que viene incluido en el paquete datasets de R. Este conjunto de datos contiene información anual desde 1930 hasta 1983 sobre la producción de pollos y huevos en los Estados Unidos. Este conjunto de datos incluye dos variables principales:

  • chicken: Número de pollos. Esta variable representa la población total de pollos en los Estados Unidos el 1 de diciembre de cada año, excluyendo los pollos comerciales.
  • egg: Número de huevos. Esta variable representa la producción total de huevos en los Estados Unidos en millones de docenas cada año.

Utilizaremos este conjunto de datos para analizar la relación causal entre las gallinas y los huevos.

data_granger<-data(ChickEgg)

Prueba de causalidad de Granger

library(lmtest)
# Comprobar si los huevos causan pollos
grangertest(chicken ~ egg, order = 3, data = ChickEgg)
## Granger causality test
## 
## Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3)
## Model 2: chicken ~ Lags(chicken, 1:3)
##   Res.Df Df     F   Pr(>F)   
## 1     44                     
## 2     47 -3 5.405 0.002966 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Interpretación: Podemos ver que 0.0029< 0.05. Esto significa que se rechaza la hipótesis nula y se concluye que la serie temporal X causa a la serie temporal Y, es decir que el conocer el número de huevos si es importante para predecir el número de pollos.

Prueba de causalidad de Granger a la inversa

Apesar de que se rechazo la hipótesis nula , como se menciono al inicio, es posible que haya un caso de causalidad inversa. Es decir, es posible que el número de pollos esté haciendo que el número de huevos cambie. Para descartar esta posibilidad, necesitamos realizar la prueba de Causalidad de Granger a la inversa, utilizando pollos como variable predictora y huevos como variable de respuesta

library(lmtest)
# Comprobar si los pollos causan huevos
grangertest(egg ~ chicken, order = 3, data = ChickEgg)
## Granger causality test
## 
## Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3)
## Model 2: egg ~ Lags(egg, 1:3)
##   Res.Df Df      F Pr(>F)
## 1     44                 
## 2     47 -3 0.5916 0.6238

Interpretación: Observamos que el valor de p-valor es mayor que 0.05 siendo 0.62>0.05. Esto significa que no podemos rechazar H0 de que no existe causalidad entre las dos series de tiempo. Por lo tanto, no podemos concluir que los pollos causen huevos.Los resultados de la prueba indican que no existe causalidad entre las series de tiempo de los huevos y los pollos.

Bibliografía

Acín Coello de Portugal, C. (2022). La causalidad de granger en el análisis y la previsión de series temporales clásicas, de intervalo y de historiograma. aplicación [PhD thesis, Universidad Complutense de Madrid]. https://repositorio.comillas.edu/xmlui/handle/11531/62362
Caballero, C. V. R. Ensayos sobre la granger causalidad. https://c-vladimir-rodriguez-caballero.weebly.com/uploads/6/6/5/9/66590417/master2.pdf
Granger, C. W. J. (2001). Essays in econometrics: Collected papers of clive w. J. granger (E. Ghysels, N. R. Swanson, & M. W. Watson, Eds.; 2nd ed.). Cambridge University Press. https://books.google.hn/books?id=cafyVrxF5uwC
Gujarati, D. N. (2010). ECONOMETRIA (M.-H. I. de España S. L., Ed.).
Mata, H. (2014). Nociones elementales de cointegración enfoque de s. johansen. http://www.webdelprofesor.ula.ve/economia/hmata/Notas/Johansen.pdf
Miguel Angel Mendoza, L. Q. R. &. (2016). Ebook_econometriaR.pdf. https://saree.com.mx/econometriaR/sites/default/files/Ebook_econometriaR.pdf.
Prueba de raiz unitaria de DICKEY FULLER en r - YouTube. (2021). https://www.youtube.com/watch?v=ZjzX1cZ9ObM&t=867s&ab_channel=VictorA.Rico.
RPubs - document. (2021). https://rpubs.com/JessicaCuellar/843574.
Test de dickey fuller aumentado en r - YouTube. (2021). https://www.youtube.com/watch?v=QeXNidThny4&ab_channel=VictorA.Rico.
Wooldridge, J. M. (2009). Introducción a la econometría - 4edi | cristina peñalver gil - academia.edu. https://www.academia.edu/21691589/Introducci%C3%B3n_A_La_Econometr%C3%ADa_4edi.