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

Prueba de Raíz Unitaria de Dickey-Fuller

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.

Hipótesis de la prueba

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.

Estadistico de Prueba

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)} \]

Criterio de decisión

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

Ejemplo

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

Ejemplo para la prueba de Dickey-Fuller

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`)

Generar variables de Series de Tiempo

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")

Generar Modelo

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

Cointegración en el enfoque de Soren Johansen

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).

Causalidad en el sentido de Granger

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.

Hipótesis de la prueba

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.

Estadistico de prueba

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

Criterio de decisión

      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

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.

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.

Bibliografia

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.