2
$\begingroup$

I am trying to get the p-values of my cointegrating vector. I read many questions about it and most of the answers relies on ca.jo funtion from urca package (Bernhard Pfaff´s book -page 156- is one reference). So, I decided to try it (I am using exogenous variables for the short run so tsDyn package was my best choice since user can set up this easily).

The following is the function I used in VECM (tsDyn). Please, note I excluded exogenous variables:

X = VECM(sub_target_1, lag=3, r=1, include="const", estim="ML", LRinclude="const") 

these are my results:

#############
###Model VECM 
#############
Full sample size: 431   End sample size: 427
Number of variables: 4  Number of estimated slope parameters 52
AIC -15665.99   BIC -15442.86   SSR 1.146335
Cointegrating vector (estimated by ML):
   Clp_Fx_Nom      Copper       Oil    Ratio     const
r1          1 -0.03725038 0.1276867 1.018937 -8.932703


                    ECT                Clp_Fx_Nom -1       Copper -1          
Equation Clp_Fx_Nom 0.0042(0.0173)     -0.0316(0.0568)     -0.0427(0.0258).   
Equation Copper     0.0249(0.0379)     -0.2829(0.1244)*    -0.1045(0.0565).   

This is the function ca.jo (urca):

test=ca.jo(sub_target_1, type="trace",K=3,ecdet="const", spec="longrun")

and these were the results:

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

Test type: trace statistic , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1]  9.466481e-02  2.847656e-02  1.536945e-02  9.699295e-03 -2.795648e-18

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 3 |  4.17  7.52  9.24 12.97
r <= 2 | 10.80 17.85 19.96 24.60
r <= 1 | 23.17 32.00 34.91 41.07
r = 0  | 65.73 49.65 53.12 60.16

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

              Clp_Fx_Nom.l3   Copper.l3     Oil.l3   Ratio.l3   constant
Clp_Fx_Nom.l3    1.00000000   1.0000000  1.0000000   1.000000   1.000000
Copper.l3       -0.03333813   0.5059200  0.3900929  12.301568   2.931141
Oil.l3           0.11958746  -0.2209898  0.2773398   2.166322  -1.252026
Ratio.l3         1.03753074   1.2162162 -0.2086412 -17.503155 -10.584605
constant        -8.96705858 -11.0296017 -9.3375875 -45.202912   6.269255

As you can see, the results are slightly different. I would like to understand why is that. Am I missing something when I set up one of them?

Additionaly, how I can find the p-values using inputs just from VECM (tsDyn package)?

$\endgroup$

1 Answer 1

0
$\begingroup$

In VECM you must specify the order of the VEC, that is, lag = p-1 where p is the order of the VAR.(You can get the order of the VAR by information criteria using the VARselect function)

In ca.jo you must enter K = p (order of the VAR)

test=ca.jo(sub_target_1, type="trace",K=3,ecdet="const", spec="longrun")

cajorls(test,r=1)

X = VECM(sub_target_1, lag=3-1, r=1, include="const", estim="ML", LRinclude="const") 

With these specs you should have the same results.

$\endgroup$

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.