1.- RAÍCES UNITARIAS Y ESTACIONARIEDAD

EJERCICIO 1

# Cargar el paquete para la obtención de datos financieros
library(quantmod)
## Loading required package: xts
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
# Descargar los precios de cierre diarios de TESLA desde YahooFinance
getSymbols("TSLA",
           src = "yahoo",
           from = "2022-01-01", #Fecha de inicio
           to = "2023-11-10", #Fecha final
           auto.assign = TRUE)  # Se asignan de forma automática
## [1] "TSLA"
# Extraer los precios de cierre de TESLA
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(log_serie_tsla, 2)
head(log_serie_tsla)
##            TSLA.Adjusted
## 2022-01-03      5.991281
## 2022-01-04      5.948548
## 2022-01-05      5.893594
## 2022-01-06      5.871836
## 2022-01-07      5.835746
## 2022-01-10      5.865637
head(diff1_tsla)
##            TSLA.Adjusted
## 2022-01-03            NA
## 2022-01-04   -0.04273288
## 2022-01-05   -0.05495390
## 2022-01-06   -0.02175838
## 2022-01-07   -0.03609005
## 2022-01-10    0.02989074
head(diff2_tsla)
##            TSLA.Adjusted
## 2022-01-03            NA
## 2022-01-04            NA
## 2022-01-05  -0.097686774
## 2022-01-06  -0.076712275
## 2022-01-07  -0.057848429
## 2022-01-10  -0.006199308
#Gráfica log_serie_tsla
library(TSstudio)
## Warning: package 'TSstudio' was built under R version 4.3.3
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
combina<-cbind(diff1_tsla, diff2_tsla)
head(combina)
##            TSLA.Adjusted TSLA.Adjusted.1
## 2022-01-03            NA              NA
## 2022-01-04   -0.04273288              NA
## 2022-01-05   -0.05495390    -0.097686774
## 2022-01-06   -0.02175838    -0.076712275
## 2022-01-07   -0.03609005    -0.057848429
## 2022-01-10    0.02989074    -0.006199308
# Eliminando los NA
combina<-combina[complete.cases(combina),]
head(combina)
##            TSLA.Adjusted TSLA.Adjusted.1
## 2022-01-05  -0.054953895    -0.097686774
## 2022-01-06  -0.021758380    -0.076712275
## 2022-01-07  -0.036090049    -0.057848429
## 2022-01-10   0.029890741    -0.006199308
## 2022-01-11   0.005917482     0.035808223
## 2022-01-12   0.038537546     0.044455028
# 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.

#Test de raíces unitarias
library(urca) # 'urca' pruebas de raíces unitarias
df <- ur.df(serie_tsla,
            type = "trend", #Especificación con tendencia
            lags = 4, # 4 retardos
            selectlags = c("AIC")) # Criterio de AIC
summary(df) #Resumen de la prueba ADF
## 
## ############################################### 
## # 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.147  -4.939   0.253   5.399  32.824 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  4.846354   2.619369   1.850   0.0649 . 
## z.lag.1     -0.019361   0.008637  -2.242   0.0255 * 
## tt          -0.001987   0.003637  -0.546   0.5851   
## z.diff.lag1 -0.027360   0.046443  -0.589   0.5561   
## z.diff.lag2  0.030746   0.046353   0.663   0.5075   
## z.diff.lag3 -0.044230   0.046105  -0.959   0.3379   
## z.diff.lag4  0.129353   0.045960   2.814   0.0051 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.175 on 455 degrees of freedom
## Multiple R-squared:  0.03297,    Adjusted R-squared:  0.02022 
## F-statistic: 2.586 on 6 and 455 DF,  p-value: 0.0179
## 
## 
## Value of test-statistic is: -2.2415 1.9037 2.6728 
## 
## 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

tau = -2.2415 > -3.42 Acepta H0 phi 1 = 1.90 < 4.71 phi 2 = 2.67 < 6.30

library(tseries)
adf.test(serie_tsla,k = 4)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  serie_tsla
## Dickey-Fuller = -2.2415, Lag order = 4, p-value = 0.4758
## alternative hypothesis: stationary

El p valor de la prueba adf = 0.47 > 0.05. Acepta H0, es decir, la serie tiene raíz unitaria (tiene una tendencia estocástica alrededor de una tendencia determinista) I(1) necesita otra diferencia para ser estacionaria.

Ahora se especifican las tres pruebas adf: - Sin constante (1) - Con constante (2) - Con constante y tendencia determinista (3)

library(urca)
# Caminata aleatoria pura
df_none <- ur.df(serie_tsla,
                 type = "none", #sin constante ni tendencia
                 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.308  -4.449   0.328   5.297  32.526 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## z.lag.1     -0.001916   0.001745  -1.098  0.27291   
## z.diff.lag1 -0.035321   0.046335  -0.762  0.44628   
## z.diff.lag2  0.023740   0.046282   0.513  0.60823   
## z.diff.lag3 -0.050929   0.046026  -1.107  0.26908   
## z.diff.lag4  0.123947   0.045909   2.700  0.00719 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.2 on 457 degrees of freedom
## Multiple R-squared:  0.02434,    Adjusted R-squared:  0.01367 
## F-statistic:  2.28 on 5 and 457 DF,  p-value: 0.04577
## 
## 
## Value of test-statistic is: -1.0977 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

-1.0977 > -2.58 Acepta H0 es no estacionaria.

Log TSLA no es estacionaria <<> repetir diff1_logTSLA

library(urca)
# Caminata aleatoria pura
df_trend <- ur.df(serie_tsla,
                 type = "drift", # con tendencia determinista
                 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.058  -4.943   0.111   5.316  33.110 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  3.84848    1.87621   2.051  0.04082 * 
## z.lag.1     -0.01716    0.00763  -2.248  0.02503 * 
## z.diff.lag1 -0.02934    0.04627  -0.634  0.52623   
## z.diff.lag2  0.02885    0.04619   0.625  0.53254   
## z.diff.lag3 -0.04624    0.04592  -1.007  0.31449   
## z.diff.lag4  0.12735    0.04578   2.782  0.00563 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.168 on 456 degrees of freedom
## Multiple R-squared:  0.03234,    Adjusted R-squared:  0.02173 
## F-statistic: 3.048 on 5 and 456 DF,  p-value: 0.0102
## 
## 
## Value of test-statistic is: -2.2483 2.7104 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.44 -2.87 -2.57
## phi1  6.47  4.61  3.79

-2.24 > -2.87 Acepto H0, entonces tenemos no estacionariedad con tendencia no determinista.

La serie del logaritmo de TSLA no es estacionaria, necesita de una primera diferencia

df_none <- ur.df(serie_tsla, # Primera diferencia
                 type = "none", #sin tendencia
                 lags = 4,#4 retardos
                 selectlags=c("AIC")) # criterio AIC
summary(df_none) # summary de la prueba 
## 
## ############################################### 
## # 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.308  -4.449   0.328   5.297  32.526 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## z.lag.1     -0.001916   0.001745  -1.098  0.27291   
## z.diff.lag1 -0.035321   0.046335  -0.762  0.44628   
## z.diff.lag2  0.023740   0.046282   0.513  0.60823   
## z.diff.lag3 -0.050929   0.046026  -1.107  0.26908   
## z.diff.lag4  0.123947   0.045909   2.700  0.00719 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.2 on 457 degrees of freedom
## Multiple R-squared:  0.02434,    Adjusted R-squared:  0.01367 
## F-statistic:  2.28 on 5 and 457 DF,  p-value: 0.04577
## 
## 
## Value of test-statistic is: -1.0977 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
# 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.121467 -0.022284  0.000754  0.019987  0.108335 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.86822    0.09356  -9.280  < 2e-16 ***
## z.diff.lag1 -0.15750    0.08059  -1.954  0.05126 .  
## z.diff.lag2 -0.12556    0.06630  -1.894  0.05886 .  
## z.diff.lag3 -0.15148    0.04617  -3.281  0.00111 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03854 on 457 degrees of freedom
## Multiple R-squared:  0.5281, Adjusted R-squared:  0.524 
## F-statistic: 127.9 on 4 and 457 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -9.2796 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

-9.27 < -1.95 Esto es, rechazo H0 y la primera diferencia es estacionaria.

# Pruebas con la primera diferencia

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

df1_trend <- ur.df(diff1_tsla,
            type="drift", 
            lags = 4, 
            selectlags=c("AIC")) 
summary(df1_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 
## -0.120525 -0.021366  0.001599  0.020976  0.109237 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.0009656  0.0017993  -0.537   0.5918    
## z.lag.1     -0.8710054  0.0937791  -9.288   <2e-16 ***
## z.diff.lag1 -0.1553407  0.0807526  -1.924   0.0550 .  
## z.diff.lag2 -0.1240629  0.0664078  -1.868   0.0624 .  
## z.diff.lag3 -0.1506955  0.0462249  -3.260   0.0012 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03857 on 456 degrees of freedom
## Multiple R-squared:  0.5284, Adjusted R-squared:  0.5243 
## F-statistic: 127.7 on 4 and 456 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -9.2878 43.1323 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.44 -2.87 -2.57
## phi1  6.47  4.61  3.79

-9.28 < -2.87 Rechazo H0. La primera diferencia es estacionaria.

Como las dos especificaciones rechazan H0, se determina que la primera diferencia es estacionaria.

EJERCICIO 2 AIR PASSENGERS

# Cargar el conjunto de datos
data(AirPassengers)
# Verificar las primeras filas de la columa 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(log_air, 2)
head(diff1_log_air)
## [1]  0.05218575  0.11211730 -0.02298952 -0.06402186  0.10948423  0.09193750
head(diff2_log_air)
## [1]  0.16430305  0.08912778 -0.08701138  0.04546237  0.20142173  0.09193750
# Analizamos el comportamiento de los datos mediante gráficas
library(TSstudio)
# Gráfica
ts_plot(log_air,
        Xtitle = "Años/Meses",
        title = "Logaritmo de la serie mensual AirPassengers (1949-1960")

Se ve una tendencia creciente o alcista (no estacionaria) – primera diferencia general Comportamiento estacional = no estacionaria – primera diferencia estacional

# Comportamiento de la primera y segunda diferencia
combina_air <- cbind(diff1_log_air, diff2_log_air)
head(combina_air)
##      diff1_log_air diff2_log_air
## [1,]    0.05218575            NA
## [2,]    0.11211730    0.16430305
## [3,]   -0.02298952    0.08912778
## [4,]   -0.06402186   -0.08701138
## [5,]    0.10948423    0.04546237
## [6,]    0.09193750    0.20142173
# Gráfica de ambos datos
ts_plot(combina_air,
        title = "Diferencia del logaritmo ",
        Xtitle = "Años/Meses")

Se ha eliminado la tendencia, pero sigue manteniéndose la estacionalidad (necesitaríamos la diferencia estacional)

Pruebas de raíces unitarias ADF

library(urca)
# Caminata aleatoria *con tendencia y constante*
df_air <- ur.df(log_air,
                type="trend",
                lags = 12, # Elegimos un lag de 12, 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

-1.53 > -3.99 Acepta H0, esta serie no es estacionaria.

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

El p valor es 0.77 > 0.05. Acepto H0, la serie Log_air no es estacionaria.

Aplicamos la misma prueba para una versión sólo 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

3.78 > -1.95 Acepto H0, no es estacionaria.

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

-1.952 > -2.88. Acepto H0, por tanto, no es estacionaria.

# Caminata aleatoria *con tendencia y con constante*
df_air_trend  <- ur.df(log_air, 
            type="trend", 
            lags = 12,
            selectlags=c("AIC")) 
summary(df_air_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.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

-1.53 > -3.43. Acepto H0, por tanto, no es estacionaria.

En cualquiera de las tres especificaciones, no es estacionaria

None: Acepto H0 Drift: Acepto H0 Trend: Acepto H0

Con al menos un Acepto H0, la serie no es estacionaria.

La primera diferencia no es estacionaria

Probamos para la segunda diferencia de log_air

# Caminata aleatoria con tedencia y constante

# Librería urca
df2_none <- ur.df(diff2_log_air,
                  type = "none",
                  lags = 12,
                  selectlags = c("AIC"))
summary(df2_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.114623 -0.021653 -0.002417  0.027101  0.121585 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## z.lag.1      -0.22186    0.17124  -1.296 0.197656    
## z.diff.lag1  -0.12674    0.17834  -0.711 0.478715    
## z.diff.lag2  -0.79370    0.14718  -5.393 3.67e-07 ***
## z.diff.lag3  -0.19591    0.15675  -1.250 0.213851    
## z.diff.lag4  -0.81815    0.12194  -6.710 7.33e-10 ***
## z.diff.lag5  -0.21970    0.13539  -1.623 0.107339    
## z.diff.lag6  -0.81641    0.09832  -8.304 2.02e-13 ***
## z.diff.lag7  -0.30456    0.11689  -2.606 0.010362 *  
## z.diff.lag8  -0.88593    0.07066 -12.537  < 2e-16 ***
## z.diff.lag9  -0.33254    0.10048  -3.310 0.001242 ** 
## z.diff.lag10 -0.89034    0.04444 -20.033  < 2e-16 ***
## z.diff.lag11 -0.34996    0.08759  -3.996 0.000113 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04334 on 117 degrees of freedom
## Multiple R-squared:  0.9338, Adjusted R-squared:  0.927 
## F-statistic: 137.4 on 12 and 117 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.2956 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62

-1.29 > -1.95 Acepto H0. Es no estacionaria.

df2_drift <- ur.df(diff2_log_air,
                  type = "drift",
                  lags = 12,
                  selectlags = c("AIC"))
summary(df2_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.101546 -0.023895 -0.002738  0.020275  0.115180 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.024525   0.008816   2.782 0.006309 ** 
## z.lag.1      -1.219136   0.395269  -3.084 0.002551 ** 
## z.diff.lag1   0.785039   0.370804   2.117 0.036386 *  
## z.diff.lag2   0.039661   0.331997   0.119 0.905116    
## z.diff.lag3   0.552523   0.309212   1.787 0.076570 .  
## z.diff.lag4  -0.154113   0.266526  -0.578 0.564232    
## z.diff.lag5   0.360022   0.246495   1.461 0.146838    
## z.diff.lag6  -0.316709   0.203482  -1.556 0.122326    
## z.diff.lag7   0.115990   0.189136   0.613 0.540902    
## z.diff.lag8  -0.551867   0.138353  -3.989 0.000117 ***
## z.diff.lag9  -0.081666   0.132960  -0.614 0.540276    
## z.diff.lag10 -0.725436   0.073360  -9.889  < 2e-16 ***
## z.diff.lag11 -0.264341   0.090557  -2.919 0.004219 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04214 on 116 degrees of freedom
## Multiple R-squared:  0.9379, Adjusted R-squared:  0.9315 
## F-statistic:   146 on 12 and 116 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.0843 4.7572 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1  6.52  4.63  3.81

-3.08 < -2.88 Rechazo H0. Sï es estacionaria.

df2_trend <- ur.df(diff2_log_air,
                  type = "trend",
                  lags = 12,
                  selectlags = c("AIC"))
summary(df2_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.107086 -0.025730 -0.005683  0.021473  0.110220 
## 
## Coefficients:
##                Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   0.0403755  0.0137784   2.930 0.004085 ** 
## z.lag.1      -1.4098577  0.4134694  -3.410 0.000897 ***
## tt           -0.0001558  0.0001044  -1.492 0.138567    
## z.diff.lag1   0.9549658  0.3860561   2.474 0.014835 *  
## z.diff.lag2   0.1978281  0.3468665   0.570 0.569567    
## z.diff.lag3   0.6912916  0.3213561   2.151 0.033555 *  
## z.diff.lag4  -0.0278675  0.2783137  -0.100 0.920416    
## z.diff.lag5   0.4673782  0.2555503   1.829 0.070004 .  
## z.diff.lag6  -0.2216075  0.2122219  -1.044 0.298571    
## z.diff.lag7   0.1936824  0.1952229   0.992 0.323227    
## z.diff.lag8  -0.4873690  0.1442621  -3.378 0.000996 ***
## z.diff.lag9  -0.0367017  0.1356563  -0.271 0.787223    
## z.diff.lag10 -0.6945179  0.0758628  -9.155 2.41e-15 ***
## z.diff.lag11 -0.2508924  0.0905333  -2.771 0.006514 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.04192 on 115 degrees of freedom
## Multiple R-squared:  0.9391, Adjusted R-squared:  0.9322 
## F-statistic: 136.3 on 13 and 115 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.4098 3.9465 5.919 
## 
## 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

-3.40 > -3.43 Acepto H0. No es estacionaria

None: acepto H0 Drift: rechazo H0 Trend: acepto H0

Como tenemos al menos un acepto H0, la segunda diferencia de log_air no es estacionaria.

2.- COINTEGRACIÓN

Si existe una relación o equilibrio a largo plazo entre varias series temporales. Hasta entonces hemos trabajado una a una, y ésta se utiliza para trabajar varias a la vez.

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

H0:r=0, lo que quiere decir que no existe presencia de cointegración entre las variables.

H1:r>0, lo que quiere decir que existe prencia de cointegración entre las variables.

options(scipen = 99999)
library(urca)
data("denmark")
denmark
##      ENTRY      LRM      LRY          LPY       IBO        IDE
## 1  1974:01 11.63255 5.903658 -0.618735936 0.1547356 0.09400000
## 2  1974:02 11.60415 5.873820 -0.580747868 0.1779912 0.09550000
## 3  1974:03 11.58152 5.837818 -0.542847846 0.1705647 0.09550000
## 4  1974:04 11.60185 5.812255 -0.504604068 0.1522273 0.09550000
## 5  1975:01 11.58630 5.803945 -0.486458456 0.1342276 0.08850000
## 6  1975:02 11.60450 5.786761 -0.454438596 0.1334805 0.07900000
## 7  1975:03 11.65331 5.833412 -0.440514202 0.1284132 0.07600000
## 8  1975:04 11.76425 5.929849 -0.438759555 0.1288357 0.07400000
## 9  1976:01 11.75293 5.937654 -0.403904637 0.1413445 0.07200000
## 10 1976:02 11.76548 5.935332 -0.373344374 0.1531187 0.07800000
## 11 1976:03 11.78058 5.931755 -0.357669750 0.1605787 0.08000000
## 12 1976:04 11.77018 5.940524 -0.324953607 0.1618325 0.10300000
## 13 1977:01 11.74589 5.928044 -0.309815317 0.1665814 0.09700000
## 14 1977:02 11.76865 5.937180 -0.288414439 0.1630213 0.08800000
## 15 1977:03 11.74982 5.956553 -0.264239472 0.1692466 0.09500000
## 16 1977:04 11.74870 5.939602 -0.228864977 0.1728896 0.09700000
## 17 1978:01 11.70492 5.932408 -0.212193051 0.1717371 0.09900000
## 18 1978:02 11.70344 5.931238 -0.197211039 0.1757075 0.08800000
## 19 1978:03 11.70300 5.972136 -0.185326965 0.1711933 0.08100000
## 20 1978:04 11.70367 5.968729 -0.162762793 0.1820041 0.07700000
## 21 1979:01 11.67890 5.962473 -0.138595908 0.1700434 0.07500000
## 22 1979:02 11.70778 5.986486 -0.120611747 0.1689293 0.07700000
## 23 1979:03 11.67616 5.984788 -0.087185643 0.1782750 0.08600000
## 24 1979:04 11.68592 5.977044 -0.059363063 0.1804463 0.10100000
## 25 1980:01 11.64161 5.985101 -0.035864737 0.1910667 0.10900000
## 26 1980:02 11.63518 5.945198 -0.009390005 0.1967000 0.12100000
## 27 1980:03 11.60926 5.901625  0.014105078 0.1923000 0.12100000
## 28 1980:04 11.65761 5.902440  0.033274886 0.1829667 0.10700000
## 29 1981:01 11.62782 5.897422  0.062005602 0.1845333 0.10500000
## 30 1981:02 11.62885 5.893866  0.103995519 0.1928667 0.10900000
## 31 1981:03 11.60378 5.883451  0.125532616 0.2032333 0.11100000
## 32 1981:04 11.62906 5.894687  0.150714788 0.1923333 0.10900000
## 33 1982:01 11.60202 5.902336  0.174404210 0.2032667 0.10700000
## 34 1982:02 11.60378 5.924388  0.197886662 0.2107667 0.11100000
## 35 1982:03 11.59462 5.949907  0.220124751 0.2088667 0.11100000
## 36 1982:04 11.60382 5.928668  0.245491810 0.1970667 0.11000000
## 37 1983:01 11.61713 5.915890  0.258962672 0.1611000 0.10600000
## 38 1983:02 11.68810 5.938670  0.269752543 0.1383000 0.08700000
## 39 1983:03 11.72651 5.932186  0.284460916 0.1417000 0.08300000
## 40 1983:04 11.78125 5.974309  0.300511045 0.1338000 0.08500000
## 41 1984:01 11.79762 5.963916  0.316073973 0.1341000 0.08500000
## 42 1984:02 11.84191 6.000994  0.331141421 0.1417000 0.08300000
## 43 1984:03 11.84030 5.990538  0.343332245 0.1448000 0.08500000
## 44 1984:04 11.92358 5.968702  0.355987185 0.1412000 0.09164725
## 45 1985:01 11.90296 6.013800  0.370684955 0.1317000 0.09026459
## 46 1985:02 11.92678 6.003318  0.382693587 0.1196000 0.08763519
## 47 1985:03 11.97100 6.044517  0.386468568 0.1070000 0.08004259
## 48 1985:04 12.02590 6.081291  0.392689350 0.1037000 0.07558355
## 49 1986:01 12.05115 6.095570  0.397668025 0.0977000 0.07237913
## 50 1986:02 12.07546 6.089658  0.413028000 0.0984000 0.06745833
## 51 1986:03 12.05619 6.098992  0.418267905 0.1115000 0.06794079
## 52 1986:04 12.07163 6.080706  0.428296450 0.1142670 0.07539570
## 53 1987:01 12.02795 6.061175  0.446761110 0.1193333 0.07665326
## 54 1987:02 12.03979 6.063730  0.458330586 0.1173333 0.07625867
## 55 1987:03 12.01529 6.050830  0.468334521 0.1189667 0.07516289
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 estadÍstico 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.

r = 0 valor del estadísticp > valor 5% Rechaza H0 r <= 1 valor del estadístico < valor del 5% Acepta Ho Implica una única relacioón de cointegración

test 10pct 5pct 1pct

r = 0 | 5.94 13.75 15.67 20.20

r <= 1 | 1.91 7.52 9.24 12.97

test = 5.94 < 5pct valor es 15.67 Acepta H0 ( no hay relación de cointegración)

test = 1.91 < 5pct valor es 9.24Acepta H0 ( no hay relación de cointegración)

3.- CAUSALIDAD EN SENTIDO GRANGER

est <- denmark[,c("LRM", "LRY")]
est
##         LRM      LRY
## 1  11.63255 5.903658
## 2  11.60415 5.873820
## 3  11.58152 5.837818
## 4  11.60185 5.812255
## 5  11.58630 5.803945
## 6  11.60450 5.786761
## 7  11.65331 5.833412
## 8  11.76425 5.929849
## 9  11.75293 5.937654
## 10 11.76548 5.935332
## 11 11.78058 5.931755
## 12 11.77018 5.940524
## 13 11.74589 5.928044
## 14 11.76865 5.937180
## 15 11.74982 5.956553
## 16 11.74870 5.939602
## 17 11.70492 5.932408
## 18 11.70344 5.931238
## 19 11.70300 5.972136
## 20 11.70367 5.968729
## 21 11.67890 5.962473
## 22 11.70778 5.986486
## 23 11.67616 5.984788
## 24 11.68592 5.977044
## 25 11.64161 5.985101
## 26 11.63518 5.945198
## 27 11.60926 5.901625
## 28 11.65761 5.902440
## 29 11.62782 5.897422
## 30 11.62885 5.893866
## 31 11.60378 5.883451
## 32 11.62906 5.894687
## 33 11.60202 5.902336
## 34 11.60378 5.924388
## 35 11.59462 5.949907
## 36 11.60382 5.928668
## 37 11.61713 5.915890
## 38 11.68810 5.938670
## 39 11.72651 5.932186
## 40 11.78125 5.974309
## 41 11.79762 5.963916
## 42 11.84191 6.000994
## 43 11.84030 5.990538
## 44 11.92358 5.968702
## 45 11.90296 6.013800
## 46 11.92678 6.003318
## 47 11.97100 6.044517
## 48 12.02590 6.081291
## 49 12.05115 6.095570
## 50 12.07546 6.089658
## 51 12.05619 6.098992
## 52 12.07163 6.080706
## 53 12.02795 6.061175
## 54 12.03979 6.063730
## 55 12.01529 6.050830
library(lmtest)
#LRY causa a LRM
grangertest(LRM ~LRY, order = 3, data = est) # order = número de retardos a incluir
## Granger causality test
## 
## Model 1: LRM ~ Lags(LRM, 1:3) + Lags(LRY, 1:3)
## Model 2: LRM ~ Lags(LRM, 1:3)
##   Res.Df Df      F Pr(>F)
## 1     45                 
## 2     48 -3 1.2304 0.3097

P valor es 0.3097. Se acepta H0. Esto implica en este caso que las Lags(LRY no determinan a LRM)

#LRM causa a LRY
grangertest(LRY ~LRM, order = 3, data = est) # order = número de retardos a incluir
## Granger causality test
## 
## Model 1: LRY ~ Lags(LRY, 1:3) + Lags(LRM, 1:3)
## Model 2: LRY ~ Lags(LRY, 1:3)
##   Res.Df Df      F  Pr(>F)  
## 1     45                    
## 2     48 -3 3.4692 0.02372 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

0.023 < 0.05 Rechazamos H0; por tanto, los retardos de LRMN determinan o causan a LRY.

4.- BIBLIOGRAFÍA

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