Modelos VAR

Víctor Chung

1. ESTIMACION VAR EN R

Se presenta una visión de los comandos var en R a traves de un ejemplo extenso. Para el ejemplo tenemos datos trimestrales sobre el logaritmo del ingreso real personal disponible (denotado Y) y el logaritmo de los gastos reales de consumo personal (indicado como X) para la economía de Estados Unidos durante el periodo 1960:1 a 1999:4. Los datos estan en el archivo fred.csv.

Datos<-read.csv("C:/datos/fred.csv")

Definimos la base de datos como una base con variables de series de tiempo.

series<-ts(Datos,frequency=4,start=1960)

Grafico de las series

El siguiente gráfico representa nuestros datos.

ts.plot(series, xlab="Tiempo",col=c(1,2))

A traves del tiempo las series no tienen un comportamiento estacionario y parece estar estrechamente relacionadas o cointegradas. Despues de realizar la prueba de cointegracion (Ver Modelos VEC) se determinó que ambas series no estan cointegradas. Por lo tanto, no podriamos aplicar un modelo VEC para examinar la relacion dinamica entre el consumo agregado X y el ingreso Y. En su lugar estimaremos un modelo VAR para el conjunto de variables I(0) (\(x_t\),\(y_t\)).

ts.plot(diff(series),xlab="Tiempo", col=c(1,2))

Un VAR de forma reducida coloca algunas restricciones a los datos, ofrece una caracterización útil de la distribucion de \(Y_t\), y genera pronósticos conjuntos de los elementos de \(Y_t\). Vamos a ver como llevar a cabo estos pasos en R. Recordemos que cuando se ajusta un modelo ARIMA univariado comenzamos examinando las autocorrelaciones de la serie para evaluar la estacionariedad. Si la serie no es estacionaria tomamos la primera diferencia para inducir estacionariedad y ajustar un modelo para la serie diferenciada. VARs debe obedecer condiciones mas restrictivas. Un VAR es estacionario si su primer y segundo momento [\(E(Y_t)\) y \(E(Y_tY'_{t-j})\)], respectivamente] son independientes de t. Estas condiciones implican que cada uno de los elementos de \(Y_t\) son estacionarios. Ademas, la estacionariedad de un VAR requiere una condición de estabilidad que ponemos a prueba solo despues de estimar el VAR. En consecuencia, vamos a aplazar el chequeo para estacionariedad.

1.1. Paso 1: Identificacion del Numero de Retardos a Incluir en el VAR
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
VARselect(diff(series),lag.max=10,type="const")
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      1      1      1      1 
## 
## $criteria
##                    1             2             3             4
## AIC(n) -1.967736e+01 -1.966205e+01 -1.967129e+01 -1.965630e+01
## HQ(n)  -1.962822e+01 -1.958015e+01 -1.955661e+01 -1.950886e+01
## SC(n)  -1.955640e+01 -1.946045e+01 -1.938904e+01 -1.929340e+01
## FPE(n)  2.846001e-09  2.890014e-09  2.863704e-09  2.907414e-09
##                    5             6             7             8
## AIC(n) -1.966197e+01 -1.962330e+01 -1.960410e+01 -1.957896e+01
## HQ(n)  -1.948177e+01 -1.941034e+01 -1.935837e+01 -1.930046e+01
## SC(n)  -1.921844e+01 -1.909912e+01 -1.899928e+01 -1.889349e+01
## FPE(n)  2.891658e-09  3.006729e-09  3.066501e-09  3.146546e-09
##                    9            10
## AIC(n) -1.955635e+01 -1.952896e+01
## HQ(n)  -1.924509e+01 -1.918494e+01
## SC(n)  -1.879024e+01 -1.868221e+01
## FPE(n)  3.221062e-09  3.313748e-09

Para cada longitud de rezago, la tabla reporta (de arriba hacia abajo), el Criterio de información de Akaike (AIC), Criterio de informacion de Hannan y Quinn (HQ), el criterio información bayesiana de Schwarz (SC) y el error de predicción final de Akaike (FPE). Los cuatro criterios de información se basan en la teoria de la información y se supone que indican la información relativa perdida cuando los datos se ajustan usando diferentes especificaciones. La longitud de rezago que produce el valor mínimo del estadístico de la información es la especificación elegida. En este ejemplo, los cuatro criterios eligen 1 rezago. Puede ser el caso que este conjunto de pruebas estadisticas nos dejen sin una direccion clara. Segun Lutkepohl (2005), el SC y HQ proporcionan estimaciones consistentes del verdadero orden del retardo, mientras que el FPE y AIC sobreestiman el orden del retardo con probabilidad positiva.

1.2. Paso 2: Estimación del Modelo VAR

Estimaremos una forma VAR simple reducida (sin variables exogenas) y proporcionaremos las características mas usadas en la estimacion y analisis de un VAR.

modelo<-VAR(diff(series),p=1,type=c("const"))
modelo
## 
## VAR Estimation Results:
## ======================= 
## 
## Estimated coefficients for equation x: 
## ====================================== 
## Call:
## x = x.l1 + y.l1 + const 
## 
##        x.l1        y.l1       const 
## 0.156636672 0.153157754 0.006223824 
## 
## 
## Estimated coefficients for equation y: 
## ====================================== 
## Call:
## y = x.l1 + y.l1 + const 
## 
##         x.l1         y.l1        const 
##  0.386250850 -0.115006668  0.006338043

A continuacion solicitaremos un resumen de cada ecuación por separado:

summary(modelo,equation="x")
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: x, y 
## Deterministic variables: const 
## Sample size: 158 
## Log Likelihood: 1115.038 
## Roots of the characteristic polynomial:
## 0.2994 0.2578
## Call:
## VAR(y = diff(series), p = 1, type = c("const"))
## 
## 
## Estimation results for equation x: 
## ================================== 
## x = x.l1 + y.l1 + const 
## 
##        Estimate Std. Error t value Pr(>|t|)    
## x.l1  0.1566367  0.0874175   1.792   0.0751 .  
## y.l1  0.1531578  0.0728624   2.102   0.0372 *  
## const 0.0062238  0.0009216   6.753 2.74e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.006957 on 155 degrees of freedom
## Multiple R-Squared: 0.08559, Adjusted R-squared: 0.07379 
## F-statistic: 7.254 on 2 and 155 DF,  p-value: 0.000974 
## 
## 
## 
## Covariance matrix of residuals:
##          x         y
## x 4.84e-05 2.740e-05
## y 2.74e-05 7.009e-05
## 
## Correlation matrix of residuals:
##        x      y
## x 1.0000 0.4704
## y 0.4704 1.0000
summary(modelo,equation="y")
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: x, y 
## Deterministic variables: const 
## Sample size: 158 
## Log Likelihood: 1115.038 
## Roots of the characteristic polynomial:
## 0.2994 0.2578
## Call:
## VAR(y = diff(series), p = 1, type = c("const"))
## 
## 
## Estimation results for equation y: 
## ================================== 
## y = x.l1 + y.l1 + const 
## 
##        Estimate Std. Error t value Pr(>|t|)    
## x.l1   0.386251   0.105198   3.672 0.000331 ***
## y.l1  -0.115007   0.087683  -1.312 0.191586    
## const  0.006338   0.001109   5.715 5.47e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.008372 on 155 degrees of freedom
## Multiple R-Squared: 0.08136, Adjusted R-squared: 0.06951 
## F-statistic: 6.864 on 2 and 155 DF,  p-value: 0.001392 
## 
## 
## 
## Covariance matrix of residuals:
##          x         y
## x 4.84e-05 2.740e-05
## y 2.74e-05 7.009e-05
## 
## Correlation matrix of residuals:
##        x      y
## x 1.0000 0.4704
## y 0.4704 1.0000

Notamos que este VAR de tamaño modesto (dos variables, un rezago) contiene seis coeficientes. Vamos a empezar por mirar las estadisticas reportadas en la parte superior de cada salida, antes de la lista de coeficientes. Se informa el numero de observaciones en la muestra. Observe que hay 160 trimestres en el periodo comprendido entre el primer trimestre de 1960 y el cuarto trimestre de 1999, pero se informa solo 158 observaciones. ¿Dónde están las dos observaciones desaparecidas? Como suele suceder, los VAR se calculan sobre la base de la función de verosimilitud condicional, es decir, la funcion de verosimilitud condicional a las primeras p observaciones (Hamilton 1994, 291). En nuestro ejemplo, hay un rezago (p es igual a uno), por lo que la primera observación comprende la información condicionada (Cabe indicar que el numero mínimo de observaciones que debe comprender la información condicionada debe ser dos). Para simplificar, el término “condicional” por lo general se elimina, y nos referimos a la función de verosimilitud condicional simplemente como la función de verosimilitud y la estimación en base a esta función como la estimación de máxima verosimilitud. Las siguientes filas reportan el logaritmo de la función de verosimilitud (log-likelihood) y las raices del polinomio característico. El log-likelihood se utiliza para construir la prueba de razon de verosimilitud de las restricciones posibles. Mientras que las raices indican estabilidad en el modelo dado que son menores a uno. Se presentan la significancia de cada coeficiente en cada ecuación. También informa del error cuadrático medio o error estándar de los residuales y el coeficiente de determinación para cada ecuación. En este ejemplo, estos estadísticos indican un ajuste sensiblemente pobre para ambas ecuaciones. El último estadístico es la prueba F para los coeficientes de regresión (aparte de la constante) y el valor p para la prueba. Por último se presentan las matrices de covarianza y correlación de los residuales.

1.3. Paso 3: Evaluación del Modelo

1.3.1. Prueba de Estacionariedad (Condición de Estabilidad de los Estimadores)

Ahora que hemos estimado un VAR candidato, vamos a ver si cumple la condición de estabilidad (prueba de estacionariedad de múltiple variables que mencionamos anteriormente). Recordemos que un proceso autorregresivo univariado es estacionario si todas las raices de \(\phi(z)=0\) se encuentran fuera del círculo unitario. Una condición similar se aplica a los VAR. Un VAR es estacionario si todas las raices de \(|\phi(z)|=0\) se encuentran fuera del círculo unitario. Equivalentemente, todos los valores propios de la matriz companera deben estar dentro del círculo unitario. ¿Qué es la matriz companera? Resulta que un VAR de orden p siempre se puede reescribir como un VAR de primer orden, y la matriz de coeficientes de retardo en la representación de primer orden se llama matriz compañera.

roots(modelo)
## [1] 0.2993915 0.2577614

La comprobación de la estabilidad no indica que nuestro modelo este mal.

1.3.2. Analisis de Autocorrelacion en los Residuales

Graficos

plot(modelo, names="y")

plot(modelo, names="x")

acf(residuals(modelo)[,1])

Los gráficos muestran claramente la no presencia de correlación serial en los residuos.

Prueba Portmanteau Multivariada

serial.test(modelo,lags.pt=10)
## 
##  Portmanteau Test (asymptotic)
## 
## data:  Residuals of VAR object modelo
## Chi-squared = 50.958, df = 36, p-value = 0.05039

Prueba de Breusch-Godfrey

serial.test(modelo,lags.bg=10)
## 
##  Portmanteau Test (asymptotic)
## 
## data:  Residuals of VAR object modelo
## Chi-squared = 69.128, df = 60, p-value = 0.1964

Las pruebas confirman la no presencia de autocorrelación en los residuales.

1.3.3. Prueba de Normalidad de los Residuales

normality.test(modelo, multivariate.only=FALSE)
## $x
## 
##  JB-Test (univariate)
## 
## data:  Residual of x equation
## Chi-squared = 32.078, df = 2, p-value = 1.082e-07
## 
## 
## $y
## 
##  JB-Test (univariate)
## 
## data:  Residual of y equation
## Chi-squared = 44.95, df = 2, p-value = 1.735e-10
## 
## 
## $JB
## 
##  JB-Test (multivariate)
## 
## data:  Residuals of VAR object modelo
## Chi-squared = 64.184, df = 4, p-value = 3.821e-13
## 
## 
## $Skewness
## 
##  Skewness only (multivariate)
## 
## data:  Residuals of VAR object modelo
## Chi-squared = 11.936, df = 2, p-value = 0.00256
## 
## 
## $Kurtosis
## 
##  Kurtosis only (multivariate)
## 
## data:  Residuals of VAR object modelo
## Chi-squared = 52.249, df = 2, p-value = 4.512e-12

Las pruebas de Jarque-Bera, Asimetria y Curtosis son presentadas. En nuestro ejemplo, la hipótesis nula de disturbios normales es claramente rechazada para el crecimiento trimestral de los ingresos pero no para el crecimiento trimestral del consumo.

El modelo estimado puede ser escrito como:

\[\triangle y_{t}= 0.006338-0.1150 \triangle y_{t-1} + 0.3862 \triangle x_{t-1}\]

\[\triangle x_{t}= 0.062238-0.1532 \triangle y_{t-1} + 0.1566 \triangle x_{t-1}\]

La primera ecuación muestra que crecimiento trimestral de los ingresos \(\triangle y_{t}\) esta significativamente relacionado en forma negativa con su propio valor pasado \(\triangle y_{t-1}\) pero relacionada significativamente en forma positiva con el cambio del consumo en el ultimo periodo \(\triangle x_{t-1}\). La segunda ecuación muestra que el crecimiento trimestral del consumo \(\triangle x_t\) esta significativamente relacionado con su propio valor pasado \(\triangle x_{t-1}\) y tambien significativamente relacionada con el crecimiento trimestral de los ingresos en el último periodo \(\triangle y_{t-1}\). Los terminos constantes capturan el elemento fijo en el cambio en el logaritmo del consumo y el cambio en el logaritmo del ingreso.

Habiendo estimado estos modelos, ¿podemos inferir algo mas? Si el sistema se somete a un shock de los ingresos, ¿cuál es el efecto de la conmoción en la trayectoria dinamica del crecimiento trimestral en el consumo y los ingresos? ¿Van a subir?, y si es asi, ¿por cuánto? Si el sistema también esta sometido a un shock de consumo, ¿cual es la contribución de los ingresos frente a un shock de consumo en la variación de los ingresos? Pasaremos ahora a un análisis adecuado para abordar estas cuestiones.

2. Resumiendo Relaciones Temporales en un VAR

2.1. Prueba de Causalidad Granger

grangertest(diff(y) ~ diff(x),order=1,data=Datos)
## Granger causality test
## 
## Model 1: diff(y) ~ Lags(diff(y), 1:1) + Lags(diff(x), 1:1)
## Model 2: diff(y) ~ Lags(diff(y), 1:1)
##   Res.Df Df      F    Pr(>F)    
## 1    155                        
## 2    156 -1 13.481 0.0003312 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
grangertest(diff(x) ~ diff(y),order=1,data=Datos)
## Granger causality test
## 
## Model 1: diff(x) ~ Lags(diff(x), 1:1) + Lags(diff(y), 1:1)
## Model 2: diff(x) ~ Lags(diff(x), 1:1)
##   Res.Df Df      F  Pr(>F)  
## 1    155                    
## 2    156 -1 4.4185 0.03717 *
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Segun los resultados el crecimiento trimestral del consumo causa Granger el crecimiento trimestral de los ingresos, al menos en nuestro periodo de estimación. Asi mismo, el crecimiento trimestral de los ingresos causa Granger el crecimiento trimestral del consumo.

2.2. Funcion de Impulso - Respuesta

Las funciones de impulso respuesta muestran los efectos de los shock en la trayectoria de ajuste de las variables.

modelo.irf<-irf(modelo,impulse="x", response="y")
modelo.irf2<-irf(modelo,impulse="x", response="x")
plot(modelo.irf)

plot(modelo.irf2)

Los dos gráficos en la fila superior muestran los impactos de los impulsos del crecimiento trimestral del consumo \(\triangle x_t\). Los gráficos en la fila inferior muestran los impactos de los impulsos del crecimiento trimestral de los ingresos \(\triangle y_t\). De izquierda a derecha, las columnas muestran las respuestas crecimiento trimestral del consumo y crecimiento trimestral de los ingresos, respectivamente. El impacto del crecimiento trimestral del consumo \(\triangle x_t\) induce a un aumento de corta duracion en el crecimiento trimestral de los ingresos \(\triangle y_t\). El efecto se ve reflejado un trimestre despues del shock y se estabilizara en el tercer trimestre. Por otro lado, El impacto del crecimiento trimestral de los ingresos \(\triangle y_t\) induce a un aumento inmediato y de corta duracion en el crecimiento trimestral del consumo \(\triangle x_t\).