I am trying to use urca library to do cointegration test, and its function ca.jo, which conducts the Johansen procedure on a given data set.

I think a lag order of 1 is possible for a cointegrated VECM, which means it does not have short term error correction. For example, we have VAR(1)

$$ X_t=\Pi_1X_{t-1} + \epsilon_t $$ and its VECM is $$ \Delta X_t = \Pi X_{t-1} + \epsilon_t $$ where $\Pi=\Pi_1-I_2$

Why does ca.jo specify the minimum lag order to be 2? Is there a reason behind it?

  • 1
    $\begingroup$ Maybe this can help. You can find the detailed explanation in the link. $\endgroup$ Commented Dec 5, 2021 at 21:09

2 Answers 2


I updated the package tsDyn (version 0.9-40 submitted to CRAN), so that its VECM() function can handle your case of lag=1. Note that:

  • With function VECM(), use lag=0 for the case you described as lag=1
  • A warning will be printed, as fevd(), irf(), predict() et al are not guaranteed to work
  • If you want no intercept, use: include="none"


summary(VECM(barry, lag=0, estim="ML"))

###Model VECM 
Full sample size: 324   End sample size: 323
Number of variables: 3  Number of estimated slope parameters 6
AIC -4871.5     BIC -4848.83    SSR 29.3275
Cointegrating vector (estimated by ML):
   dolcan    cpiUSA    cpiCAN
r1      1 -0.021234 0.0402079

            ECT                 Intercept         
Equation dolcan -0.0004(0.0011)     0.0024(0.0030)    
Equation cpiUSA -0.0436(0.0155)**   0.3685(0.0413)*** 
Equation cpiCAN -0.0824(0.0214)***  0.4649(0.0572)***
  • 1
    $\begingroup$ @Michael hope this answer is useful to you? $\endgroup$
    – Matifou
    Commented Aug 27, 2014 at 10:29
  • $\begingroup$ Thanks @Matifou, really appreciate your help! I missed your comment. My deepest apologies for replying 7 years later! $\endgroup$
    – Michael
    Commented Dec 11, 2021 at 4:32
  • $\begingroup$ haha no worries, you are good! $\endgroup$
    – Matifou
    Commented Dec 11, 2021 at 9:21

Well I guess the reason is simply code simplicity and time... You are right that such a VECM can be estimated, but allowing it would have required to add several exceptions in the code, eventually skipping the "short term parameters concentration" step in the case lag=1, which maybe the author was not keen to do.

But with the code at hand, you can easily adapt it for your case ;-)


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.