Parte teórica

Autocorrelación

La autocorrelación es un caso particular del modelo de regresión generalizado que se produce cuando las perturbaciones del modelo presentan correlaciones entre ellas. La autocorrelación supone que la matriz de varianzas y covarianzas de las perturbaciones presentan valores distintos de cero en los elementos que están fuera de la diagonal principal (Gujarati, 2004 Griffiths y Judge, 1993).

En otras palabras más simples la autocorrelación es una medida estadística que evalúa la relación entre una serie de datos o como lo es en este caso en series de tiempo. Además, mide el grado en que los valores de una variable se relacionan consigo mismos en diferentes momentos en el tiempo.

La autocorrelación se mide mediante el coeficiente de autocorrelación, que oscila entre -1 y 1. Un valor de 1 indica una correlación positiva perfecta, lo que significa que los valores de la variable están completamente correlacionados entre sí en diferentes momentos en el tiempo. Un valor de -1 indica una correlación negativa perfecta, lo que significa que los valores de la variable están inversamente correlacionados entre sí en diferentes momentos en el tiempo. Un valor de 0 indica que no hay correlación entre los valores de la variable en diferentes momentos en el tiempo.

Normalidad

El supuesto a normalidad se refiere a la distribución normal de una variable aleatoria. Una distribución normal es una función de densidad de probabilidad que tiene una forma de campana simétrica y se caracteriza por dos parámetros: la media y la desviación estándar.

La normalidad es importante en Econometría porque muchos modelos estadísticos y econométricos asumen que los errores o residuos siguen una distribución normal. Si los errores no siguen una distribución normal, los resultados de los modelos econométricos pueden ser sesgados o inexactos.

En resumen, la normalidad es una propiedad estadística importante que se busca en los residuos de los modelos econométricos para asegurar que los resultados sean confiables y precisos.

Estacionariedad

La estacionariedad es una propiedad estadística importante de una serie temporal, ya que está indica que la serie de tiempo tiene una estructura estadística que no cambia a lo largo del tiempo. Básicamente, una serie temporal se considera estacionaria si su media, varianza y covarianza no cambian con el tiempo. Esto significa que la serie no tiene una tendencia definida, ni una variabilidad que cambie con el tiempo, ni una relación con otros eventos en el tiempo.

La estacionariedad es importante en Econometría porque muchos modelos econométricos asumen que los datos son estacionarios. Si los datos no son estacionarios, los resultados del modelo pueden ser sesgados o inexactos. Además, la estacionariedad puede facilitar la identificación de patrones y la realización de pronósticos precisos en una serie temporal. Si los datos de las series de tiempo no son estacionarios se necesita hacer diferenciaciones para convertirlos en estacionarios.

Homocedasticidad

La palabra homocedasticidad se puede desglosar en dos partes, homo (igual) y cedasticidad (dispersión).La homocedasticidad en econometría se refiere a la suposición de que la varianza del error de un modelo de regresión es constante en todas las observaciones. En otras palabras, la homocedasticidad significa que la dispersión de los errores es la misma para todos los valores de la variable independiente.

Si hay heterocedasticidad en un modelo de regresión, significa que la varianza del error es diferente para diferentes valores de la variable independiente. Esto puede ser un problema para la interpretación y precisión del modelo, ya que los errores pueden ser demasiado grandes o pequeños para ciertos valores de la variable independiente, lo que afecta la capacidad del modelo para predecir con precisión los valores de la variable dependiente.

Multicolinealidad

La multicolinealidad es la relación de dependencia lineal fuerte entre más de dos variables explicativas en una regresión múltiple que incumple el supuesto de Gauss-Markov cuando es exacta.

Resaltamos que la relación lineal (correlación) entre variables explicativas tiene que ser fuerte. Es muy habitual que las variables explicativas de la regresión estén correlacionadas. Entonces, se debe puntualizar que esta relación debe ser fuerte, pero nunca perfecta, para que sea considerada un caso de multicolinealidad. La relación lineal sería perfecta si el coeficiente de correlación fuese 1.

Cuando esta fuerte relación lineal (pero no perfecta) se produce sólo entre dos variables explicativas, decimos que se trata de un caso de colinealidad. Sería multicolinealidad cuando la relación lineal fuerte se produce entre más de dos variables independientes.

Hay varias formas de detectar y abordar la multicolinealidad en un modelo de regresión, tales como la inspección visual de la matriz de correlación, el cálculo del factor de inflación de la varianza (VIF), o la eliminación de variables redundantes del modelo.

Causalidad

La causalidad se refiere a la relación entre una variable independiente (causa) y una variable dependiente (efecto). La causalidad implica que un cambio en la variable independiente provoca un cambio en la variable dependiente.

La econometría utiliza modelos de regresión para analizar la relación causal entre variables. En estos modelos, se especifica una variable dependiente y una o varias variables independientes que pueden tener un efecto causal sobre la variable dependiente. A través del análisis de la relación entre estas variables, se puede evaluar el grado de causalidad que existe entre ellas.

Sin embargo, es importante tener en cuenta que la causalidad no puede ser establecida de manera definitiva a través de la econometría o la estadística en general. Esto se debe a que hay muchos factores que pueden influir en la relación entre dos variables, y la econometría no puede controlar todas las variables relevantes en un estudio. Además, la causalidad no siempre es unidireccional. En algunos casos, las variables pueden tener un efecto causal recíproco, es decir, que la variable independiente también puede verse afectada por la variable dependiente.

Parte Práctica

Cargamos las librerías que usaremos para está serie de tiempo

library(vars)
## Warning: package 'vars' was built under R version 4.2.3
## Loading required package: MASS
## Loading required package: strucchange
## Warning: package 'strucchange' was built under R version 4.2.3
## 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.3
## Loading required package: urca
## Warning: package 'urca' was built under R version 4.2.3
## Loading required package: lmtest
## Warning: package 'lmtest' was built under R version 4.2.3
library(fpp2)
## Warning: package 'fpp2' was built under R version 4.2.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## ── Attaching packages ────────────────────────────────────────────── fpp2 2.5 ──
## ✔ ggplot2   3.4.1     ✔ fma       2.5  
## ✔ forecast  8.21      ✔ expsmooth 2.3
## Warning: package 'forecast' was built under R version 4.2.3
## Warning: package 'fma' was built under R version 4.2.3
## Warning: package 'expsmooth' was built under R version 4.2.3
## 
library(TSA)
## Warning: package 'TSA' was built under R version 4.2.3
## Registered S3 methods overwritten by 'TSA':
##   method       from    
##   fitted.Arima forecast
##   plot.Arima   forecast
## 
## Attaching package: 'TSA'
## The following objects are masked from 'package:stats':
## 
##     acf, arima
## The following object is masked from 'package:utils':
## 
##     tar

Primero cargaremos los datos de uschange y los almacenaremos en series, después haremos una gráfica seleccionando las variables de la 3 a la 5 que son Unemployment, Savings y Production.

Seguido de cargar los datos haremos una gráfica de la serie de datos con las variables que son de nuestro interés con el objetivo de observar los datos a lo largo de la serie de tiempo.

series<-uschange
autoplot(uschange[,c(3,4,5)])

ts.plot(series[,c(3,4,5)], xlab="Tiempo",col=c(1,2,3))

Buscaremos por medio de la función VARselect para escoger el modelo candidato y tener una idea de que número en P se puede usar. Para este caso por medio de la función a$selection podemos obsrvar que el número más optimo para usar en p es 2.

a <- VARselect(uschange[,c(3,4,5)], lag.max=15,type="trend") 
a$selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      2      1      2
modelo1<-VAR(uschange[,c(3,4,5)],p=2,type=c("trend"))
modelo_s<-summary(modelo1);modelo_s
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: Production, Savings, Unemployment 
## Deterministic variables: trend 
## Sample size: 185 
## Log Likelihood: -1007.567 
## Roots of the characteristic polynomial:
## 0.6793 0.4399 0.3944 0.3944 0.3135 0.3135
## Call:
## VAR(y = uschange[, c(3, 4, 5)], p = 2, type = c("trend"))
## 
## 
## Estimation results for equation Production: 
## =========================================== 
## Production = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                  Estimate Std. Error t value Pr(>|t|)    
## Production.l1    0.521553   0.096594   5.399 2.12e-07 ***
## Savings.l1      -0.008047   0.007005  -1.149  0.25218    
## Unemployment.l1 -1.013815   0.388383  -2.610  0.00982 ** 
## Production.l2    0.013462   0.094932   0.142  0.88739    
## Savings.l2      -0.008686   0.006966  -1.247  0.21406    
## Unemployment.l2  0.843452   0.388851   2.169  0.03140 *  
## trend            0.001724   0.000893   1.931  0.05504 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 1.221 on 178 degrees of freedom
## Multiple R-Squared: 0.4538,  Adjusted R-squared: 0.4324 
## F-statistic: 21.13 on 7 and 178 DF,  p-value: < 2.2e-16 
## 
## 
## Estimation results for equation Savings: 
## ======================================== 
## Savings = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                  Estimate Std. Error t value Pr(>|t|)    
## Production.l1   -1.718665   1.031415  -1.666 0.097409 .  
## Savings.l1      -0.289000   0.074794  -3.864 0.000156 ***
## Unemployment.l1 -5.764295   4.147096  -1.390 0.166277    
## Production.l2    2.079754   1.013665   2.052 0.041662 *  
## Savings.l2      -0.018796   0.074382  -0.253 0.800798    
## Unemployment.l2  9.349039   4.152097   2.252 0.025567 *  
## trend            0.010075   0.009535   1.057 0.292087    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 13.04 on 178 degrees of freedom
## Multiple R-Squared: 0.1343,  Adjusted R-squared: 0.1003 
## F-statistic: 3.946 on 7 and 178 DF,  p-value: 0.0004976 
## 
## 
## Estimation results for equation Unemployment: 
## ============================================= 
## Unemployment = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                   Estimate Std. Error t value Pr(>|t|)    
## Production.l1   -3.594e-02  2.459e-02  -1.461 0.145664    
## Savings.l1       2.486e-03  1.783e-03   1.394 0.165010    
## Unemployment.l1  3.398e-01  9.888e-02   3.437 0.000733 ***
## Production.l2    2.664e-02  2.417e-02   1.102 0.271894    
## Savings.l2       1.675e-03  1.774e-03   0.944 0.346273    
## Unemployment.l2  2.011e-01  9.900e-02   2.032 0.043668 *  
## trend           -6.512e-05  2.273e-04  -0.286 0.774888    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.3109 on 178 degrees of freedom
## Multiple R-Squared: 0.3158,  Adjusted R-squared: 0.2889 
## F-statistic: 11.74 on 7 and 178 DF,  p-value: 3.001e-12 
## 
## 
## 
## Covariance matrix of residuals:
##              Production  Savings Unemployment
## Production       1.4798  -1.3930     -0.26751
## Savings         -1.3930 169.8267      0.55620
## Unemployment    -0.2675   0.5562      0.09661
## 
## Correlation matrix of residuals:
##              Production  Savings Unemployment
## Production      1.00000 -0.08787      -0.7075
## Savings        -0.08787  1.00000       0.1373
## Unemployment   -0.70747  0.13731       1.0000

Posterior a encontrar el modelo candidato que almacenamos en al variable que creamos llamada “modelo1” y en la raviable “modelo_s” guardaremos el resumen del modelo1.

A continuación, veremos todos los posibles modelos para identificar
summary(modelo1,equation="Savings")
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: Production, Savings, Unemployment 
## Deterministic variables: trend 
## Sample size: 185 
## Log Likelihood: -1007.567 
## Roots of the characteristic polynomial:
## 0.6793 0.4399 0.3944 0.3944 0.3135 0.3135
## Call:
## VAR(y = uschange[, c(3, 4, 5)], p = 2, type = c("trend"))
## 
## 
## Estimation results for equation Savings: 
## ======================================== 
## Savings = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                  Estimate Std. Error t value Pr(>|t|)    
## Production.l1   -1.718665   1.031415  -1.666 0.097409 .  
## Savings.l1      -0.289000   0.074794  -3.864 0.000156 ***
## Unemployment.l1 -5.764295   4.147096  -1.390 0.166277    
## Production.l2    2.079754   1.013665   2.052 0.041662 *  
## Savings.l2      -0.018796   0.074382  -0.253 0.800798    
## Unemployment.l2  9.349039   4.152097   2.252 0.025567 *  
## trend            0.010075   0.009535   1.057 0.292087    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 13.04 on 178 degrees of freedom
## Multiple R-Squared: 0.1343,  Adjusted R-squared: 0.1003 
## F-statistic: 3.946 on 7 and 178 DF,  p-value: 0.0004976 
## 
## 
## 
## Covariance matrix of residuals:
##              Production  Savings Unemployment
## Production       1.4798  -1.3930     -0.26751
## Savings         -1.3930 169.8267      0.55620
## Unemployment    -0.2675   0.5562      0.09661
## 
## Correlation matrix of residuals:
##              Production  Savings Unemployment
## Production      1.00000 -0.08787      -0.7075
## Savings        -0.08787  1.00000       0.1373
## Unemployment   -0.70747  0.13731       1.0000
summary(modelo1,equation="Unemployment")
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: Production, Savings, Unemployment 
## Deterministic variables: trend 
## Sample size: 185 
## Log Likelihood: -1007.567 
## Roots of the characteristic polynomial:
## 0.6793 0.4399 0.3944 0.3944 0.3135 0.3135
## Call:
## VAR(y = uschange[, c(3, 4, 5)], p = 2, type = c("trend"))
## 
## 
## Estimation results for equation Unemployment: 
## ============================================= 
## Unemployment = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                   Estimate Std. Error t value Pr(>|t|)    
## Production.l1   -3.594e-02  2.459e-02  -1.461 0.145664    
## Savings.l1       2.486e-03  1.783e-03   1.394 0.165010    
## Unemployment.l1  3.398e-01  9.888e-02   3.437 0.000733 ***
## Production.l2    2.664e-02  2.417e-02   1.102 0.271894    
## Savings.l2       1.675e-03  1.774e-03   0.944 0.346273    
## Unemployment.l2  2.011e-01  9.900e-02   2.032 0.043668 *  
## trend           -6.512e-05  2.273e-04  -0.286 0.774888    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.3109 on 178 degrees of freedom
## Multiple R-Squared: 0.3158,  Adjusted R-squared: 0.2889 
## F-statistic: 11.74 on 7 and 178 DF,  p-value: 3.001e-12 
## 
## 
## 
## Covariance matrix of residuals:
##              Production  Savings Unemployment
## Production       1.4798  -1.3930     -0.26751
## Savings         -1.3930 169.8267      0.55620
## Unemployment    -0.2675   0.5562      0.09661
## 
## Correlation matrix of residuals:
##              Production  Savings Unemployment
## Production      1.00000 -0.08787      -0.7075
## Savings        -0.08787  1.00000       0.1373
## Unemployment   -0.70747  0.13731       1.0000
summary(modelo1,equation="Production")
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: Production, Savings, Unemployment 
## Deterministic variables: trend 
## Sample size: 185 
## Log Likelihood: -1007.567 
## Roots of the characteristic polynomial:
## 0.6793 0.4399 0.3944 0.3944 0.3135 0.3135
## Call:
## VAR(y = uschange[, c(3, 4, 5)], p = 2, type = c("trend"))
## 
## 
## Estimation results for equation Production: 
## =========================================== 
## Production = Production.l1 + Savings.l1 + Unemployment.l1 + Production.l2 + Savings.l2 + Unemployment.l2 + trend 
## 
##                  Estimate Std. Error t value Pr(>|t|)    
## Production.l1    0.521553   0.096594   5.399 2.12e-07 ***
## Savings.l1      -0.008047   0.007005  -1.149  0.25218    
## Unemployment.l1 -1.013815   0.388383  -2.610  0.00982 ** 
## Production.l2    0.013462   0.094932   0.142  0.88739    
## Savings.l2      -0.008686   0.006966  -1.247  0.21406    
## Unemployment.l2  0.843452   0.388851   2.169  0.03140 *  
## trend            0.001724   0.000893   1.931  0.05504 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 1.221 on 178 degrees of freedom
## Multiple R-Squared: 0.4538,  Adjusted R-squared: 0.4324 
## F-statistic: 21.13 on 7 and 178 DF,  p-value: < 2.2e-16 
## 
## 
## 
## Covariance matrix of residuals:
##              Production  Savings Unemployment
## Production       1.4798  -1.3930     -0.26751
## Savings         -1.3930 169.8267      0.55620
## Unemployment    -0.2675   0.5562      0.09661
## 
## Correlation matrix of residuals:
##              Production  Savings Unemployment
## Production      1.00000 -0.08787      -0.7075
## Savings        -0.08787  1.00000       0.1373
## Unemployment   -0.70747  0.13731       1.0000

Validación del modelo

PortManteu Test > 0.05 Autocorrelación

El P-value tiene que ser mayor para pasar la prueba, en este caso en P-value es de 0.001831, por ende los datos no presentan autocorrelación.

serial.test(modelo1, lags.pt=10, type="PT.asymptotic")
## 
##  Portmanteau Test (asymptotic)
## 
## data:  Residuals of VAR object modelo1
## Chi-squared = 111.86, df = 72, p-value = 0.001831

Raíz unitaria, estacionariedad.

Todas las raíces deben de ser menor a 1 para pasar la prueba, en este caso el modelo presenta raíces unitarias, por lo tanto, es estacionaria.

roots(modelo1)
## [1] 0.6793211 0.4399079 0.3943893 0.3943893 0.3135234 0.3135234

Normalidad Jarque Bera

La prueba de Jarque Bera, sirve para revisar si existe normalidad en los residuales del modelo. Si el P-value es menor a 0.05 existe normalidad en los residuales, en este caso el es de 2.2e-16 por lo tanto si existe normalidad.

normality.test(modelo1, multivariate.only=FALSE)
## $Production
## 
##  JB-Test (univariate)
## 
## data:  Residual of Production equation
## Chi-squared = 45.644, df = 2, p-value = 1.226e-10
## 
## 
## $Savings
## 
##  JB-Test (univariate)
## 
## data:  Residual of Savings equation
## Chi-squared = 145.11, df = 2, p-value < 2.2e-16
## 
## 
## $Unemployment
## 
##  JB-Test (univariate)
## 
## data:  Residual of Unemployment equation
## Chi-squared = 33.373, df = 2, p-value = 5.664e-08
## 
## 
## $JB
## 
##  JB-Test (multivariate)
## 
## data:  Residuals of VAR object modelo1
## Chi-squared = 184.61, df = 6, p-value < 2.2e-16
## 
## 
## $Skewness
## 
##  Skewness only (multivariate)
## 
## data:  Residuals of VAR object modelo1
## Chi-squared = 3.0467, df = 3, p-value = 0.3845
## 
## 
## $Kurtosis
## 
##  Kurtosis only (multivariate)
## 
## data:  Residuals of VAR object modelo1
## Chi-squared = 181.56, df = 3, p-value < 2.2e-16

Hetorocedasticidad

Si el p-value es mayor a 0.05 no hay heterocedasticidad pero si hay homocedasticidad. Para este caso el p-value es de 0.328, por lo tanto, el modelo1 presenta Homocedasticidad.

arch<-arch.test(modelo1, lags.multi = 12, multivariate.only = TRUE)
arch
## 
##  ARCH (multivariate)
## 
## data:  Residuals of VAR object modelo1
## Chi-squared = 444.55, df = 432, p-value = 0.328

Causalidad de granger

granger < 0.05 para que exista causalidad o que tiene relación. Para este ejercicio la variable Savings no presenta causalidad. La variable Unemploymente si presenta causalidad y la variable Production tampoco presenta causalidad.

GrangerSavings <-causality(modelo1, cause = 'Savings') 

GrangerUnemployment <-causality(modelo1, cause = 'Unemployment') 
GrangerUnemployment
## $Granger
## 
##  Granger causality H0: Unemployment do not Granger-cause Production
##  Savings
## 
## data:  VAR object modelo1
## F-Test = 3.9411, df1 = 4, df2 = 534, p-value = 0.003662
## 
## 
## $Instant
## 
##  H0: No instantaneous causality between: Unemployment and Production
##  Savings
## 
## data:  VAR object modelo1
## Chi-squared = 61.782, df = 2, p-value = 3.841e-14
GrangerProduction <-causality(modelo1, cause = 'Production')
GrangerProduction
## $Granger
## 
##  Granger causality H0: Production do not Granger-cause Savings
##  Unemployment
## 
## data:  VAR object modelo1
## F-Test = 1.6932, df1 = 4, df2 = 534, p-value = 0.1501
## 
## 
## $Instant
## 
##  H0: No instantaneous causality between: Production and Savings
##  Unemployment
## 
## data:  VAR object modelo1
## Chi-squared = 61.293, df = 2, p-value = 4.907e-14

Respuesta de impulso

Como se comporta una variable si la otra variable recibe un “shock”

En las gráficas se tiene que observar como se comporta un impulso de una variable con respuesta de otra variable. se debe de entender que cuando la curva se acerca más a cero es porque más reacción tiene esa variable cuando ocurren cambios en la otra.

##### Unemployment
UnemploymentIRF <- irf(modelo1,  impulse = "Savings", response="Unemployment", n.ahead = 20, boot = T )
plot(UnemploymentIRF, ylab = "Unemployment", main = "Shock desde Savings")

UnemploymentIRF2 <- irf(modelo1,  impulse = "Production", response="Unemployment", n.ahead = 20, boot = T )
plot(UnemploymentIRF2, ylab = "Unemployment", main = "Shock desde Production")

###### Savings
SavingsIRF <- irf(modelo1,  impulse = "Unemployment", response="Savings", n.ahead = 20, boot = T )
plot(SavingsIRF, ylab = "Savings", main = "Shock desde Unemployment")

SavingsIRF2 <- irf(modelo1,  impulse = "Production", response="Savings", n.ahead = 20, boot = T )
plot(SavingsIRF2, ylab = "Savings", main = "Shock desde Production")

#### Production 
ProductionIRF <- irf(modelo1,  impulse = "Unemployment", response="Production", n.ahead = 20, boot = T )
plot(ProductionIRF, ylab = "Production", main = "Shock desde Unemployment")

ProductionIRF2 <- irf(modelo1,  impulse = "Savings", response="Production", n.ahead = 20, boot = T )
plot(ProductionIRF2, ylab = "Production", main = "Shock desde Savings")