UNIVERSIDAD DE EL SALVADOR
FACULTAD DE CIENCIAS ECONÓMICAS
ESCUELA DE ECONOMÍA
METODOS PARA EL ANALISIS ECONÓMICO
ACTIVIDAD:
“Laboratorio 3, Cointegración y Causualidad”.
DOCENTE:
Carlos Ademir Pérez Alas.
GRUPO TEÓRICO:
03
INTEGRANTES:
Christian Moisés Murcia Zepeda. MZ18015
Salvador Antonio Figueroa Gonzalez. FG18006
.Ciudad Universitaria, 28 de noviembre de 2022
Propósito de la prueba La prueba de raíz unitaria de Dickey-Fuller es para determinar si existen o no raices unitarias en las en las series de tiempo para ver si la series es Estacionaria o No estacionaria.
Si consideramos un proceso autoregresivo (estocastico) de la forma:
xt=ϕxt−1+εt
Donde |ϕ|≤1 y εt es es un caso simple de los procesos estocásticos, donde los valores son independientes e idénticamente distribuidos a lo largo del tiempo con media cero e igual varianza.
Si el valor de ϕ es igual a 1 se dice que la serie es no estacionaria en otras palabras si la raiz es unitaria no hay estacionariedad
Ho:ϕ=1
Entonces si el valor de ϕ es menor a 1 entonces se dice que la serie es estacionaria
Ha:ϕ<1
donde x sera el vector de información de la serie que se esta estudiando y k=0 el orden en que se quiere estudiar la raiz unitaria en este caso solo es “0” debido a que o queremos saber si es de primer o segundo orden
tambien se puede usar la libraria urca con el comando ur.df(x,c(“none”,“trend”, “drift”,lags=0))
donde x sera el vector de información de la serie de tiempo que se esta estudiando, y las opciones de “none” sino se quiere hacer ningun tipo de prueba, “trend” si se quiere de una prueba de tendencia o “drift” si se quiere una prueba de desviaciones.
Para comprender el estadistico de prueba se obtiene de la siguiente forma sea: xt=ρxt−1+εt
y analizamos las variaciones de periodo anterior
xt−xt−1=ϕxt−1−xt−1+εt
sacando factor común
Δxt−1=(ϕ−1)xt−1+εt
sea:
Δxt−1=τxt−1+εt
siendo τ el estadistico de prueba
\[ {DF}=\frac{T}{SE(T)} \]
Si tendremos que el las hipotesis deben ser
Ho:ϕ=1 ; No hay estacionariedad
Ha:ϕ<1 ; Hay estacionariedad
Entonces el criterio de decisión sera
no se rechaza Ho si |t|>|DF| ó pvalue>0.05
se rechaza Ho si |t|<|DF| ó pvalue<0.05
HO:“Raiz Unitaria (No es estacionaria)”
H1:“No hay raiz unitaria (Es estacionaria).”
En este caso utilizamos la base de datos ivae la cual contiene datos sobre el original y la tendencia-series disponible que empiezan en el primer trimestre de 2017 y terminan en el cuarto trimestre de 2021. La serie original es la variable endogena.
library(readxl)
ivae <- read_excel("C:/Users/moises/Downloads/ivae.xlsx")
## Warning in strptime(x, format, tz = tz): unable to identify current timezone 'U':
## please set environment variable 'TZ'
## New names:
## • `IMAE, variación interanual` -> `IMAE, variación interanual...3`
## • `IMAE, variación acumulada` -> `IMAE, variación acumulada...4`
## • `IMAE, variación interanual` -> `IMAE, variación interanual...6`
## • `IMAE, variación acumulada` -> `IMAE, variación acumulada...7`
View(ivae)
library(tseries)
## Warning: package 'tseries' was built under R version 4.2.2
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(car)
## Warning: package 'car' was built under R version 4.2.2
## Loading required package: carData
library(astsa)
library(foreign)
library(timsac)
library(vars)
## Warning: package 'vars' was built under R version 4.2.2
## Loading required package: MASS
## Loading required package: strucchange
## Warning: package 'strucchange' was built under R version 4.2.2
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 4.2.2
## Loading required package: urca
## Warning: package 'urca' was built under R version 4.2.2
## Loading required package: lmtest
## Warning: package 'lmtest' was built under R version 4.2.2
library(lmtest)
library(mFilter)
## Warning: package 'mFilter' was built under R version 4.2.2
library(dynlm)
## Warning: package 'dynlm' was built under R version 4.2.2
library(nlme)
library(lmtest)
library(broom)
library(kableExtra)
library(knitr)
library(MASS)
library(parallel)
library(car)
library(mlogit)
## Warning: package 'mlogit' was built under R version 4.2.2
## Loading required package: dfidx
## Warning: package 'dfidx' was built under R version 4.2.2
##
## Attaching package: 'dfidx'
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:stats':
##
## filter
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
##
## group_rows
## The following object is masked from 'package:nlme':
##
## collapse
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:car':
##
## recode
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr)
library(forecast)
## Warning: package 'forecast' was built under R version 4.2.2
##
## Attaching package: 'forecast'
## The following object is masked from 'package:nlme':
##
## getResponse
## The following object is masked from 'package:astsa':
##
## gas
library(fpp2)
## Warning: package 'fpp2' was built under R version 4.2.2
## ── Attaching packages ────────────────────────────────────────────── fpp2 2.4 ──
## ✔ ggplot2 3.3.6 ✔ expsmooth 2.3
## ✔ fma 2.4
## Warning: package 'fma' was built under R version 4.2.2
## Warning: package 'expsmooth' was built under R version 4.2.2
## ── Conflicts ───────────────────────────────────────────────── fpp2_conflicts ──
## ✖ forecast::getResponse() masks nlme::getResponse()
##
## Attaching package: 'fpp2'
## The following object is masked from 'package:astsa':
##
## oil
library(stats)
library(quantmod)
## Loading required package: xts
##
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
##
## first, last
## Loading required package: TTR
utilizando datos del IVAE El Salvador 2017-2021 (marzo) y transformando en series de tiempo
library(readxl)
library(forecast)
IVAESLV <-
read_excel("C:/Users/moises/Downloads/ivae.xlsx")
## New names:
## • `IMAE, variación interanual` -> `IMAE, variación interanual...3`
## • `IMAE, variación acumulada` -> `IMAE, variación acumulada...4`
## • `IMAE, variación interanual` -> `IMAE, variación interanual...6`
## • `IMAE, variación acumulada` -> `IMAE, variación acumulada...7`
IVAEST <- ts(data = IVAESLV,
start = c(2017, 1),
frequency = 12)
IVAEST %>%
autoplot(main = "IVAE, El Salvador 2017-2021(marzo)", xlab = "Años/Meses", ylab = "Indice")
attach(ivae)
names(ivae)
## [1] "FECHA" "IMAE SO"
## [3] "IMAE, variación interanual...3" "IMAE, variación acumulada...4"
## [5] "IMAE TC" "IMAE, variación interanual...6"
## [7] "IMAE, variación acumulada...7"
lnIMAE_TC=log(`IMAE TC`)
lnIMAE_SO=log(`IMAE SO`)
Los datos comienzan en el primer trimestre de 2017 y terminan en el cuarto trimestre de 2021 por esa razon la frecuencia es 4, porque un año cuenta con 4 trimestres.
IMAE_TC=ts(lnIMAE_TC, start=c(2017,1),frequency = 4)
IMAE_SO=ts(lnIMAE_SO, start=c(2017,1),frequency = 4)
datos1=cbind(IMAE_TC,IMAE_SO)
head(datos1,n=10)
## IMAE_TC IMAE_SO
## 2017 Q1 4.653675 4.619172
## 2017 Q2 4.655673 4.594817
## 2017 Q3 4.664853 4.686197
## 2017 Q4 4.674136 4.619073
## 2018 Q1 4.684628 4.708178
## 2018 Q2 4.690430 4.732948
## 2018 Q3 4.683981 4.658806
## 2018 Q4 4.676653 4.681019
## 2019 Q1 4.674043 4.665418
## 2019 Q2 4.673109 4.637444
plot(datos1, main="Tendencia")
Se genera un modelo de regresion con las dos variables utilizando el comando (lm) y tambien obtenemos resutados residuale,“errores”, dichos residuos trabajaremos en la prueba de ADF de los cuales generamos un grafico. AL observar el grafico por decucir que las variables no son estacionarias por la dispersion de las observaciones, pero este solo es un analisis simple.
modelo1=lm(IMAE_SO ~IMAE_TC)
summary(modelo1)
##
## Call:
## lm(formula = IMAE_SO ~ IMAE_TC)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.055495 -0.024753 -0.003291 0.023687 0.097175
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.5928 0.4841 -1.225 0.226
## IMAE_TC 1.1261 0.1032 10.916 8.7e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0373 on 59 degrees of freedom
## Multiple R-squared: 0.6688, Adjusted R-squared: 0.6632
## F-statistic: 119.2 on 1 and 59 DF, p-value: 8.702e-16
library(lmtest)
residuales=modelo1$residuals
residualPlot(modelo1)
Prueba de Dickey-Fuller
x=ur.df(residuales)
summary(x)
##
## ###############################################
## # 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.070171 -0.017038 -0.005115 0.021191 0.093474
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -1.4739 0.1778 -8.289 2.28e-11 ***
## z.diff.lag 0.3825 0.1272 3.006 0.00393 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0343 on 57 degrees of freedom
## Multiple R-squared: 0.6086, Adjusted R-squared: 0.5949
## F-statistic: 44.32 on 2 and 57 DF, p-value: 2.452e-12
##
##
## Value of test-statistic is: -8.2894
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
x@teststat
## tau1
## statistic -8.28938
x@cval
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Bajo estos resultados el valor critico al 1% es de -2.6 y el estadistico es de -8.2,teniendo estos resultados se conluye que la Hipotesis Nula no se rechaza ya que el estadistico cae en la region de No rechazar Ho. Por lo tanto existe raiz unitaria y los residuales no son estacionarios.
con intercepto
x2=ur.df(residuales, type="drift",selectlags="AIC")
summary(x2)
##
## ###############################################
## # 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.071296 -0.018276 -0.006327 0.019948 0.092314
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.001195 0.004506 0.265 0.79179
## z.lag.1 -1.474099 0.179276 -8.223 3.33e-11 ***
## z.diff.lag 0.381677 0.128302 2.975 0.00432 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.03459 on 56 degrees of freedom
## Multiple R-squared: 0.6091, Adjusted R-squared: 0.5951
## F-statistic: 43.63 on 2 and 56 DF, p-value: 3.786e-12
##
##
## Value of test-statistic is: -8.2225 33.8317
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1 6.70 4.71 3.86
Sin tendencia y sin intercepto
x3=ur.df(residuales, type="none",selectlags="AIC")
summary(x3)
##
## ###############################################
## # 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.070171 -0.017038 -0.005115 0.021191 0.093474
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -1.4739 0.1778 -8.289 2.28e-11 ***
## z.diff.lag 0.3825 0.1272 3.006 0.00393 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.0343 on 57 degrees of freedom
## Multiple R-squared: 0.6086, Adjusted R-squared: 0.5949
## F-statistic: 44.32 on 2 and 57 DF, p-value: 2.452e-12
##
##
## Value of test-statistic is: -8.2894
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Dickey Fuller Aumentada
La prueba dickey fuller aumentada se realiza con el comando adf.test de la libreria tseries
adf.test(residuales)
## Warning in adf.test(residuales): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: residuales
## Dickey-Fuller = -6.8371, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
Proposito de la prueba
Una prueba de Johansen nos permite determinar si tres o más series de tiempo están cointegradas. Este consiste en colocar en un vector autoregresivo las series que presenten raíces unitarias, a partir del cual se puede probar la existencia de una o más combinaciones lineales o vectores de cointegración, como también se les denomina. Tambien el enfoque de cointegración de Soren Johansen es para probar si existe cointegración en las variables es decir, si existe cointegración de orden cero I(0) o cointegración de orden uno I(1)
##Hipótesis de la prueba Dada una serie temporal VAR de la forma
xt=μ+A1xt−1+Vt
si restamos a ambos lados xt−1
xt−xt−1=μ+A1xt−1−xt−1+Vt
agrunpando todas las variables se tiene que:
Δxt−1=μ+(A1−I)xt−1+Vt
Donde A1−I=A
entonces
Δxt−1=μ+Axt−1+Vt
Esta representación del modelo es la que llamamos Mecanismo de Corrección de Error en la sección anterior; por ello A es, por tanto, un Vector de Corrección de Error
Por ello, el modelo es un Mecanismo de Corrección de Error Vectorial (VECM). También se dará cuenta de la similitud de esta especificación con la de la prueba ADF, incluso podríamos considerarla un ADF multiecuacional.
Si ahora generalizamos la especificación para considerar un modelo VAR(p), el resultado es:
xt=μ+A1xt−1+A2xt−2+...+Apxt−p+Vt
Si se resta xt−1
Δxt−1=μ+(A1+A2+..+Ap−1)(xt−1+xt−2+...+xt−p)+Vt
Siendo Γi=Γ1+…+Γp
La prueba es sensible a la longitud de los rezagos elegidos en el VECM, por lo tanto deben ser seleccionados óptimamente utilizando los criterios de información que ya hemos visto en capítulos anteriores. En la matriz A se encuentre la relación de largo plazo. Si su rango es; rango (A) = Γ, entonces se pueden encontrar las siguientes situaciones
Si Γ = 0, A es una matriz nula. No existirá ninguna relación de cointegración
Si Γ = m, el proceso multivariante Xt es estacionario. Por tanto, habría m-1 vectores de cointegración linealmente independientes que cancelan la tendencia común. Así Yt será estacionario si Am∗m tiene rango completo.
Si 0<Γ<m, se encontrará entre las dos situaciones anteriores, por lo que habrá r relaciones de cointegración.
por lo que:
Ho:Γ=0; No existe cointegración
Ha:Γ=m; Existe cointegración con m−1 Vectores de cointegración
“Ejemplo. H0:
“Conocer el numero de pollos no es util para predecir el numero futuro de huevos.”
H1:
“Conocer el numero de huevos es util para predecir el numero futuro de pollos.”
Carga de datos.
Para este ejemplo, usaremos el conjunto de datos ChickEgg que viene precargado en el paquete lmtest. Este conjunto de datos contiene valores para el número de huevos fabricados junto con el número de pollos en los Estados Unidos de 1930 a 1983:”
base de datos
library(readxl)
bc <- read_excel("C:/Users/moises/Downloads/bc.xlsx")
## New names:
## • `` -> `...2`
View(bc)
attach(bc)
names(bc)
## [1] "CONCEPTOS" "...2" "importaciones_sv" "CA"
## [5] "MUNDO" "MAQUILA"
library(urca)
library(car)
import <-log(importaciones_sv)
ca <-log(CA)
# Para aplicar el procedimiento deJohansen , primero se combinan las variables en un solo objeto
bc1 <-cbind (import,ca)
#se aplica la prueba de la traza de cointegración sin tendencia y constante
library(urca)
library(dplyr)
summary(ca.jo(bc1,type ="trace",ecdet="none",spec=c("longrun"),K=4))
##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend
##
## Eigenvalues (lambda):
## [1] 0.15053844 0.03056357
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 1.40 6.50 8.18 11.65
## r = 0 | 8.74 15.66 17.95 23.52
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## import.l4 ca.l4
## import.l4 1.00000000 1.000000
## ca.l4 0.07817248 -2.759098
##
## Weights W:
## (This is the loading matrix)
##
## import.l4 ca.l4
## import.d -0.4299438 0.002554482
## ca.d -0.2798090 0.043058058
Al realizar la Prueba los resultados nos muestran que para la primera hipótesis r=0 y alternativa r= 1 no se rechaza la hipótesis alternativa de cointegración el estadístico es mayor al valor critico del 10%, 8.82<15.66 es decir no exixte cointegracion entre las variables. Para la segunda hipótesis r<= 1 y alternativa r= 0.4162 no se rechaza la hipótesis nula de un solo vector de cointegración Por lo que se puede concluir que existe un vector de cointegración y se representa por (1- 0.4262).
Prueba de la traza de cointegración con constante
#se aplica la prueba de la traza de cointegración con constante
library(urca)
library(dplyr)
summary(ca.jo(bc1,type ="trace",ecdet="const",spec=c("longrun"),K=4))
##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , without linear trend and constant in cointegration
##
## Eigenvalues (lambda):
## [1] 1.587339e-01 5.086489e-02 -1.387779e-16
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 2.35 7.52 9.24 12.97
## r = 0 | 10.13 17.85 19.96 24.60
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## import.l4 ca.l4 constant
## import.l4 1.0000000 1.000000 1.00000
## ca.l4 0.1283963 -1.544279 -11.10833
## constant -7.5026538 1.298326 49.57426
##
## Weights W:
## (This is the loading matrix)
##
## import.l4 ca.l4 constant
## import.d -0.4188895 -0.008499785 -1.154280e-14
## ca.d -0.3026794 0.065928416 -6.012656e-15
Al realizar la prueba lo resultados muestran que para la primera hipótesis r=0 y alternativa r= 1 se rechasa la hipótesis alternativa de cointegración el estadístico es mayor al valor critico del 10%, 10.21 <17.85
prueba de Johansen de la traza con tendencia
library(urca)
summary(ca.jo(bc1,type ="trace",ecdet="trend",spec=c("longrun"),K=4))
##
## ######################
## # Johansen-Procedure #
## ######################
##
## Test type: trace statistic , with linear trend in cointegration
##
## Eigenvalues (lambda):
## [1] 0.1690369 0.1434169 0.0000000
##
## Values of teststatistic and critical values of test:
##
## test 10pct 5pct 1pct
## r <= 1 | 6.97 10.49 12.25 16.26
## r = 0 | 15.30 22.76 25.32 30.45
##
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
##
## import.l4 ca.l4 trend.l4
## import.l4 1.000000000 1.00000000 1.0000000
## ca.l4 -1.274707487 3.81455074 1.7965166
## trend.l4 0.008344898 -0.02207858 0.1548107
##
## Weights W:
## (This is the loading matrix)
##
## import.l4 ca.l4 trend.l4
## import.d -0.33590459 -0.1120118 -1.439254e-18
## ca.d 0.08659778 -0.1173079 -1.812336e-15
Al igual que en el caso de la opción sin tendencia y constante, Nose rechaza la hipótesis de cointegración con solo vector El vector de cointegración es (1 -1.27).
Propósito de la prueba Es una prueba estadística empleada para determinar si una serie temporal puede predecir a otra. Para ello se basa en la idea de que si una serie temporal X causa otra Y, los modelos de Y en los que se emplean datos retrasados de X e Y deben funcionar mejor los basados únicamente en datos retrasados de Y. Permitiendo identificar en series temporales en las que se observa una correlación que variable antecede a la otra.
Si se tienen 2 series de tiempo de las cuales es quiere determinar la causalidad sea X e Y entonces
\[ {Xt}=\displaystyle\sum_{i=1}^n {αiYt-i}+\sum_{j=1}^n βjXt−j+ε1t \] $$
{Yt}={i=1}^n {λiYt-i}+{j=1}^n δjXt−j+ε2t
$$
Entonces en este caso veremos como α es una sensibilidad en donde se puede decir que un cambio de la serie Y tiene una variación α entonces
Ho:α=0; No existe prueba causalidad de Granger de primer orden
Ha:α≠0; Existe prueba causalidad de Granger de primer orden
Donde X sera la primera serie de tiempo e Y la segunda serie temporal y order=1 debido a que es una causalidad de primer orden.
Para el estadistico de prueba se utilizara la prueba F
\[ {F}=\frac{(SCRr−SCRnr)/m}{SCRnr/(n−k)} \] que sigue la distribución F con m y (n − k) gl. En el presente caso, m es igual al número de términos rezagados de M, y k es el número de parámetros estimados en la regresión no restringida
no se rechaza Ho si F<Fcritico ó pvalue>0.05
Se rechaza Ho si F>Fcritico ó pvalue<0.05
Para este caso utilizaremos base de datos pre.instalada en Rstudio chikenegg que observa la cantidad e huevos por gallina.
library(lmtest)
data(ChickEgg)
head(ChickEgg)
## Time Series:
## Start = 1930
## End = 1935
## Frequency = 1
## chicken egg
## 1930 468491 3581
## 1931 449743 3532
## 1932 436815 3327
## 1933 444523 3255
## 1934 433937 3156
## 1935 389958 3081
Hipotesis
Ho:α=0; No existe prueba causalidad de Granger de primer orden
Ha:α≠0; Existe prueba causalidad de Granger de primer orden
Criterio de decisión
no se rechaza Ho si F<Fcritico ó pvalue>0.05
Se rechaza Ho si F>Fcritico ó pvalue<0.05
H0: Conocer el numero de pollos no es util para predecir el numero futuro de huevos
H1: Conocer el numero de huevos es util para predecir el numero futuro de pollos.
Para este ejemplo, usaremos el conjunto de datos ChickEgg que viene precargado en el paquete lmtest. Este conjunto de datos contiene valores para el número de huevos fabricados junto con el número de pollos en los Estados Unidos de 1930 a 1983:
Prueba de casualidad de Granger.
A continuación, usaremos la función grangertest() para realizar una prueba de causalidad de Granger para ver si el número de huevos fabricados es predictivo del número futuro de pollos. Ejecutaremos la prueba usando tres retardos:
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
Como 0.002966< 0.05 Se rechaza la H0, por lo tanto se concluye que conocer el numero de huevos es util para predecir el numero futuro de pollos.
Prueba de casualidad de Granger a la inversa.
Aunque rechazamos la hipótesis nula de la prueba, en realidad 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: Hacemos la prueba a la inversa.
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
Como 0,6238 > 0.05, No se rechaza la H0, por lo que podemos decir que el número de pollos no es predictivo del número futuro de huevos.
Por lo tanto, podemos concluir que conocer el número de huevos es útil para predecir el número futuro de pollos.
Chamberlain, Gary. 1982. “The General Equivalence of Granger and Sims Causality.” Econometrica: Journal of the Econometric Society, 569–81. Durlauf, Steven, and Lawrence Blume. 2016. Macroeconometrics and Time Series Analysis. Springer. Gujarati, Damodar, and Dawn Porter. 2010. “Econometrı́a (Quinta Edición).” México: Editorial Mc. Graw Hill. Mata, Humberto. 2004. “Nociones Elementales de Cointegración Enfoque de Soren Johansen.” Trabajo No Publicado. Http://Webdelprofesor. Ula. Ve/Economı́a. Quintana, L, and MA Mendoza. 2016. “Econometrı́a Aplicada Utilizando r.” Distrito Federal, México: Universidad Nacional Autónoma de México. R-bloggers. 2021. “Prueba de Causalidad de Granger En r (Con Ejemplo).” R-Bloggers. Robinson, Mahadeva, and L Mahadeva. 2009. “Prueba de Raı́z Unitaria Para Ayudar a La Construccion de Un Modelo-Ensayo 76.” Centro de Estudios Monetarios Latinoamericanos-Asociacion Regional de Bancos Centrales: Https://Www. Cemla. Org/PDF/Ensayos/Pub-En-76. Pdf.