TEORÍA

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

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

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

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

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

5. 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 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 la relación es fuerte y 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.

6. 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. En la econometría se utilizan 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.

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.

library(vars)
## Loading required package: MASS
## Loading required package: strucchange
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: urca
## Loading required package: lmtest
library(fpp2)
## 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
## 
library(TSA)
## 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
series<-uschange
autoplot(uschange[,c(3,4,5)])

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

Se buscará por medio de la función VARselect para la selección del modelo candidato y tener una idea sobre que valor de P se puede usar. Para este caso por medio de la función a$selection podemos ver que el valor optimo para el modelo es P = 2.

Se usara la función VARselect para la eleccion del modelo y poseer una idea sobre el valor de P que se podra evaluar en el modelo.

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

Luego de encontrar el modelo candidato que almacenamos en la variable que creada “modelo1” y en la variable “modelo_s” se guardara el resumen del modelo de estudio.

Se puede obvservar la variedad de posibles modelos.

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-valor debe de ser mayor para pasar la prueba, en este caso en P-valor es de 0.001831. 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.

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, tiene la función de verificar si existe normalidad en los residuales del modelo. Si el P-valor es menor a 0.05 existe normalidad en los residuales, en este caso en especifico el P-valor de 2.2e-16 por lo tanto si existe normalidad en el modelo.

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-valor es mayor a 0.05 no hay heterocedasticidad pero si hay homocedasticidad. Para este caso el p-valor 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.

La variable Savings no presenta causalidad.

La variable Unemploymente si presenta causalidad.

La variable Production tampoco presenta causalidad.

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

La visualización de una variable si otra variable recibe un “shock”.

Es posible observar graficamente el comportamiento ante 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.

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

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

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