Solved – Interpreting Johansen Test in R – Cointegration

cointegrationvector-error-correction-model

I've been trying for hours to figure this out on my own. Unfortunately, it's not working very well, so I decided to come here for help. Other responses to similar questions didn't quite answer my question.

I'm supposed to interpret data from a Johansen test in R. Here is the output:

x = cbind(rt3,rt6)
y=data.frame(x)
cot=ca.jo(y,ecdet="const", type="trace", K=3, spec="transitory")
summary(cot)

Eigenvalues (lambda):
[1] 1.045e-01 7.896e-03 1.38e-18

Values of teststatistic and critical values of test:
          test  10pct 5pct  1pct
r <= 1 |  4.64  7.52  9.24 12.97
r = 0  | 69.17 17.85 19.96 24.60

Eigenvectors, normalised to first column:
(These are the cointegration relations)

          rt3.11   rt6.11    constant
rt3.11    1.0000   1.0000    1.00000
rt6.11    -0.988   -5.933    0.04384
constant  0.1343   26.991    33.9232

Weights W: (This is the loading matrix)

       rt3.11    rt6.11    constant
rt3.d  -0.177    0.00271   8.38e-19
rt6.d  0.1066    0.00263   -9.04e-19

mcr = cajorls(cot)
mcr
$r1m

Call:
lm(formula = substitute(form1, data = data.mat)

Coefficients:
          rt3.d     rt6.d
ect1     -0.177    0.1066
rt3.d11  -0.011    0.1208
rt6.d11   0.174    0.0693
rt3.d12   0.014   -0.0263
rt6.d12  -0.095   -0.0803

$beta

           ect1
rt3.11    1.0000
rt6.11   -0.988
constant  0.1344

What I'm trying to do is to use this information to write the VECM formula based on this data.

I believe that the loading matrix would be alpha, and that beta is the cointegrating vector (1, -0.988).

I'm having trouble realizing how to put the eigenvector matrix into use, that states the cointegration relations. I see that the beta vector is a part of that matrix.

Then I get the coefficients following the cajorls. I realize that d11 d12 must mean t-1 and t-2 lags, but I'm still not quite sure what to do with this and how to plug these coefficients properly into the VECM model.

I've tried and thought, I've read Dr. Tsay multiple times, searched online. But basically I just can't seem to figure out what to do.

TLDR version: I'd appreciate help to put this information to create a VECM formula.

Best Answer

The output of cajorls() gives you exactly this VECM form you are interested in:

  • The ect1 values in $r1m give you the adjustment/speed parameters for each equation (each equation in one column)

  • Thebeta coefficient gives you the cointegrating parameters, i.e. the values used to form the ect1 term.

You could alternatively look at the output of the VECM() function from package tsDyn (note however the definition of lags is different, lag(tsdyn)=lag(urca)-1):

library(tsDyn)
> data(barry)
> VECM(barry, lag=1, estim="ML")
                         ECT   Intercept dolcan -1    cpiUSA -1     cpiCAN -1
Equation dolcan -0.001130982 0.001904987 0.1590566 -0.002905063 -0.0001549718
Equation cpiUSA  0.046105240 0.145721073 0.5267517  0.480576053 -0.0352344706
Equation cpiCAN  0.146594632 0.191714766 0.2393953  0.317390143 -0.0212333484

tsDyn also has functions coefA(), coefB() and coefPI() that help you retrieve matrices of the $\alpha$, $\beta$ and $\Pi$ coefficients from models obtained with either urca:::ca.jo() or tsDyn:::VECM().