13 votos

Imposición de restricciones a los vectores de cointegración, ejemplo de R

El código que se ofrece a continuación estima un modelo VEC con 4 vectores de cointegración. Es un código reproducible, por lo que basta con copiarlo y pegarlo en la consola de R (o en el editor script).

nobs = 200
e = rmvnorm(n=nobs,sigma=diag(c(.5,.5,.5,.5,.5)))
e1.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,1])
e2.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,2])
e3.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,3])
e4.ar1 = arima.sim(model=list(ar=.75),nobs,innov=e[,4])
y5 = cumsum(e[,5])
y1 = y5 + e1.ar1
y2 = y5 + e2.ar1
y3 = y5 + e3.ar1
y4 = y5 + e4.ar1
data = cbind(y1,y2,y3,y4,y5)

jcointt = ca.jo(data,ecdet="const",type="trace",K=2,spec="transitory")
summary(jcointt)

Seguí adelante con cuatro vectores de cointegración y estimé un VECM:

vecm <- cajorls(jcointt,r=4)
summary(vecm$rlm)
print(vecm)

Aquí están los vectores de cointegración estimados:

$beta

           ect1    ect2    ect3    ect4
y1.l1       1        0       0      0
y2.l1       0        1       0      0
y3.l1       0        0       1      0
y4.l1       0        0       0      1
y5.l1      -1.07    -1.05   -0.985 -1.05
constant   -0.16    0.505   -0.05   0.116

Ahora, me gustaría imponer restricciones al primer vector de cointegración (en ect1 parámetros) para poder analizar la relación a largo plazo entre las variables. Esto es lo que quiero obtener después de imponer y reparametrizar los vectores de cointegración:

            ect1   ect2  ect3   ect4
y1.l1        1      0      0     0
y2.l1      b1.1     1      0     0
y3.l1      b2.1     0      1     0
y4.l1      b3.1     0      0     1
y5.l1      b4.1    b4.2   b4.3   b4.4
constant   b0.1    b0.2   b0.3   b0.4

aquí, b1.1 hasta b0.1 son los coeficientes ( $\beta_1,\beta_2,\beta_3,\beta_4$ ) del primer vector de cointegración etiquetado como ect1 que ahora podría escribirse como $y_{1,t-1}=\beta_0-\beta_1y_{2,t-1}-\beta_2y_{3,t-1}-\beta_3y_{4,t-1}-\beta_4y_{5,t-1}$ . Del mismo modo, b4.2 y b0.2 son los coeficientes de la segunda ecuación de cointegración, etc.

Me preguntaba si podría ayudar a seguir imponiendo las restricciones y volver a estimar el VECM con las restricciones. urca tiene un paquete bltest() , bh6lrtest() y bh5lrtest() para probar las restricciones de los vectores de cointegración, sin embargo, necesito alguna orientación sobre cómo construir mi H matriz (matriz de restricciones) Gracias.

6voto

abeger Puntos 111

Sé que esto se preguntó hace casi dos años, pero pensé en responder a la pregunta.

Parece que la H que quiere estimar es idéntica a los valores que recibió de la prueba de Johansen, con la excepción de las filas 1:4 y las columnas 2:4. Sólo tiene que establecer esos valores en ceros y unos, lo que es bastante fácil teniendo en cuenta que la diagonal es (casi) uno y los otros valores son lo suficientemente pequeños como para que puedan ser redondeados a donde tienen que estar.

Código para eso:

# Set H to found cointegrating vectors
H <- vecm$beta 

# Replace needed rows with rounded values
H[1:4, 2:4] <- round(H[1:4, 2:4])

Esto tiene el efecto de crear la matriz de restricción prevista, que tiene el siguiente aspecto:

                  ect1        ect2        ect3      ect4
y1.l1     1.000000e+00  0.00000000  0.00000000  0.000000
y2.l1     6.001737e-17  1.00000000  0.00000000  0.000000
y3.l1    -2.103352e-17  0.00000000  1.00000000  0.000000
y4.l1     3.744563e-17  0.00000000  0.00000000  1.000000
y5.l1    -9.857458e-01 -1.00335472 -1.01229025 -1.066448
constant  5.632217e-02  0.02311308  0.07969588 -0.519249

Ahora, ejecutando el blrtest función:

blrresult <- blrtest(jcointt, H, 4)

Y es el resultado:

> summary(blrresult)

###################### 
# Johansen-Procedure # 
###################### 

Estimation and testing under linear restrictions on beta 

The VECM has been estimated subject to: 
beta=H*phi and/or alpha=A*psi

                  ect1        ect2        ect3      ect4
y1.l1     1.000000e+00  0.00000000  0.00000000  0.000000
y2.l1     6.001737e-17  1.00000000  0.00000000  0.000000
y3.l1    -2.103352e-17  0.00000000  1.00000000  0.000000
y4.l1     3.744563e-17  0.00000000  0.00000000  1.000000
y5.l1    -9.857458e-01 -1.00335472 -1.01229025 -1.066448
constant  5.632217e-02  0.02311308  0.07969588 -0.519249

Eigenvalues of restricted VAR (lambda):
[1] 0.2009 0.1479 0.1410 0.0963

The value of the likelihood ratio test statistic:
0 distributed as chi square with 8 df.
The p-value of the test statistic is: 1 

Eigenvectors, normalised to first column
of the restricted VAR:

            [,1]    [,2]    [,3]    [,4]
y1.l1     1.0000  1.0000  1.0000  1.0000
y2.l1    -0.7020  1.1557 -0.2307 -3.3582
y3.l1     0.5135 -0.3613 -0.2651 -6.0261
y4.l1    -0.2599  0.1480  2.9151 -1.5204
y5.l1    -0.5241 -1.9374 -3.5946 10.1052
constant  0.2160 -0.0226 -1.4838  0.2879

Weights W of the restricted VAR:

        [,1]    [,2]    [,3]   [,4]
y1.d -0.2594 -0.1574  0.0141 0.0035
y2.d  0.1290 -0.1118  0.0467 0.0214
y3.d -0.1813  0.0618  0.0085 0.0302
y4.d  0.0270  0.0014 -0.0560 0.0097
y5.d -0.0629 -0.0009  0.0254 0.0065

Espero que esto te ayude a ti o a alguien más.

0voto

Andrew Lott Puntos 532

Aunque sean dos años, esto podría ayudar. Así que, hasta donde yo sé, blrtest prueba las mismas restricciones en cada vector de cointegración. Por ejemplo, aquí, se puede utilizar para probar la exclusión de la constante de todos los 4 vectores de cointegración.

Por ello, no se identifica tan bien (ya que es la misma restricción en cada vector).

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X