I read the posts, How to interpret results of Johansen Test? and How to interpret the eigenmatrix from a Johansen cointegration test? But still I am quite confused by the output. I have a project with two series: I don't reject both H0, therefore I'd say there is no cointegration.

Johansen Procedure:

  • Test type: trace statistic, with linear trend.
  • Eigenvalues (lambda):
    [1] 0.0189039550 0.0008903665
  • Values of test statistic and critical values of test:
             test 10pct  5pct  1pct
    r <= 1 | 0.39  6.50  8.18 11.65
    r = 0  | 8.65 15.66 17.95 23.52
  • Eigenvectors, normalised to first column (these are the cointegration relations):
               Oil.l1  Fuel.l1
    Oil.l1   1.000000   1.0000
    Fuel.l1 -1.484484 -11.1973
  • Weights W (this is the loading matrix):
                 Oil.l1      Fuel.l1
    Oil.d  -0.049059881 0.0002693549
    Fuel.d  0.002111537 0.0002467205

However, I'd like to impose one. Thus, I want to read alpha and beta. From what I understand these are the vectors below the largest eigenvalue? i.e. here, beta is (1, -1.48) and alpha is (-0.049, 0.002). But, if I want to build a cointegrating relationship, then are there two of them (below), or only one (the upper one)? I believe that lower one is very unrealistic due to low eigenvalue (first one too but we impose its not):

Oil.l1 - 1.48*Fuel.l1 
Oil.l1 - 11.19*Fuel.l1

Also, to get the Gamma(j) matrices for differenced data for Vector Error Correction Form, I do the following:

ECF = ca.jo(ldata, type="trace", spec="transitory", K=14)
vec2var(ECF,r=1) #r = 1 for cointegration rank

According to theory there should be (p-1) matrices, i.e. 13 but I get 14. Should I simply ignore the last one?

I'd be extremely thankful for help!


1 Answer 1


The two eigenvectors are are ordered by maximum likelihood. The eigenvector is the cointegrating relationship and the weight is their coefficient, if they are used, in for example a VECM.

To get the VECM-form, you need to to use the command cajorls()(restricted) or cajoorls()(unrestricted). The vec2var() gives you a level (undifferenced) representation of the VECM. In a VECM you'll have 13 $(p-1)$ lags per variable. I think you will find the help on the commands, ca.jo, vec2var, cajorls and cajools very helpful.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.