# Why does ca.jo has a minimum lag order of 2?

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?

• Maybe this can help. You can find the detailed explanation in the link. Dec 5, 2021 at 21:09

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"

Example:

library(tsDyn)
data(barry)
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)***

• @Michael hope this answer is useful to you? Aug 27, 2014 at 10:29
• Thanks @Matifou, really appreciate your help! I missed your comment. My deepest apologies for replying 7 years later! Dec 11, 2021 at 4:32
• haha no worries, you are good! 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 ;-)