1
$\begingroup$

I am trying to model some data for a VECM in R. I have confirmed that all the variables are I(1), and I have 73 observations for each variable. My understanding is that to check for cointegration, you run a line like this on the levels data:

jo.eigen <- ca.jo(data, type = "eigen", ecdet = "const", K = 2)

However, I get an error back:

Error in solve.default(M11) : 
  system is computationally singular: reciprocal condition number = 3.8303e-22

I'm not entirely sure where to go from here. Is this happening because some of my coefficients are highly correlated? The correlation matrix is:

            gdp        emp         csi        eur
gdp  1.00000000  0.6576867 -0.09380039 -0.3140209
emp  0.65768675  1.0000000 -0.36025862 -0.5978277
csi -0.09380039 -0.3602586  1.00000000  0.6251111
eur -0.31402088 -0.5978277  0.62511111  1.0000000

Running a VAR in differences doesn't seem like the correct way forward as I have a gut feeling these variables are cointegrated. However, I can't move forward with VECM unless I have a ca.jo object.

Does anyone have any recommendations about how to move forward?

EDIT: for reference here are my data:

              s01           s02        s03         s04
01/01/1999  3.00E+10    121.8628    1.94E+12    1.457384
01/04/1999  3.01E+10    126.09073   1.95E+12    1.520934
01/07/1999  3.13E+10    125.06515   1.97E+12    1.527138
01/10/1999  3.21E+10    126.99142   2.00E+12    1.571251
01/01/2000  3.27E+10    126.9887    2.02E+12    1.628555
01/04/2000  3.35E+10    124.37588   2.04E+12    1.639844
01/07/2000  3.44E+10    119.11178   2.05E+12    1.633594
01/10/2000  3.49E+10    113.61613   2.06E+12    1.667029
01/01/2001  3.53E+10    106.50717   2.13E+12    1.581423
01/04/2001  3.57E+10    102.98313   2.13E+12    1.628003
01/07/2001  3.58E+10    87.99769    2.13E+12    1.615208
01/10/2001  3.64E+10    81.14929    2.14E+12    1.611063
01/01/2002  3.74E+10    87.58887    2.14E+12    1.626313
01/04/2002  3.76E+10    91.04958    2.15E+12    1.592302
01/07/2002  3.85E+10    73.95882    2.16E+12    1.574734
01/10/2002  3.88E+10    65.37162    2.16E+12    1.571639
01/01/2003  3.83E+10    63.21862    2.16E+12    1.493654
01/04/2003  3.85E+10    66.92185    2.16E+12    1.425593
01/07/2003  3.91E+10    63.98062    2.17E+12    1.430009
01/10/2003  4.12E+10    75.31742    2.18E+12    1.433381
01/01/2004  4.11E+10    86.14754    2.20E+12    1.470845
01/04/2004  4.19E+10    90.64507    2.21E+12    1.499202
01/07/2004  4.19E+10    95.21745    2.21E+12    1.487668
01/10/2004  4.28E+10    98.69023    2.22E+12    1.438778
01/01/2005  4.34E+10    103.51991   2.23E+12    1.442369
01/04/2005  4.43E+10    98.09163    2.24E+12    1.474367
01/07/2005  4.45E+10    89.34391    2.26E+12    1.463475
01/10/2005  4.57E+10    92.3905     2.27E+12    1.470589
01/01/2006  4.61E+10    100.46526   2.29E+12    1.456973
01/04/2006  4.64E+10    93.49614    2.31E+12    1.454008
01/07/2006  4.75E+10    87.41035    2.33E+12    1.471341
01/10/2006  4.76E+10    88.11269    2.35E+12    1.485422
01/01/2007  4.98E+10    85.51956    2.38E+12    1.491547
01/04/2007  4.92E+10    83.95523    2.39E+12    1.473238
01/07/2007  4.81E+10    73.64344    2.40E+12    1.470523
01/10/2007  5.02E+10    65.87211    2.42E+12    1.412875
01/01/2008  4.87E+10    64.58933    2.44E+12    1.321165
01/04/2008  4.77E+10    49.00284    2.43E+12    1.261533
01/07/2008  4.75E+10    42.66211    2.41E+12    1.258634
01/10/2008  4.57E+10    45.64976    2.37E+12    1.195684
01/01/2009  4.55E+10    45.97453    2.32E+12    1.101032
01/04/2009  4.55E+10    48.54799    2.31E+12    1.13892
01/07/2009  4.49E+10    49.28164    2.32E+12    1.147522
01/10/2009  4.49E+10    53.70312    2.33E+12    1.105827
01/01/2010  4.55E+10    61.94103    2.34E+12    1.126911
01/04/2010  4.59E+10    66.2847     2.37E+12    1.174664
01/07/2010  4.63E+10    60.00519    2.38E+12    1.19952
01/10/2010  4.63E+10    46.94403    2.39E+12    1.16393
01/01/2011  4.73E+10    52.82631    2.41E+12    1.171049
01/04/2011  4.75E+10    57.85739    2.41E+12    1.132937
01/07/2011  4.73E+10    55          2.41E+12    1.140152
01/10/2011  4.73E+10    57.66075    2.40E+12    1.166011
01/01/2012  4.72E+10    58.06121    2.40E+12    1.19852
01/04/2012  4.76E+10    61.93385    2.39E+12    1.234437
01/07/2012  4.70E+10    65.9692     2.39E+12    1.263261
01/10/2012  4.76E+10    58.12565    2.38E+12    1.23845
01/01/2013  4.68E+10    61.19564    2.37E+12    1.175077
01/04/2013  4.77E+10    63.54526    2.38E+12    1.175606
01/07/2013  4.92E+10    69.36935    2.39E+12    1.17076
01/10/2013  4.88E+10    75.67541    2.40E+12    1.189011
01/01/2014  5.06E+10    84.37443    2.41E+12    1.207956
01/04/2014  5.20E+10    82.55904    2.41E+12    1.22783
01/07/2014  5.26E+10    89.75978    2.42E+12    1.259912
01/10/2014  5.33E+10    87.11057    2.43E+12    1.267081
01/01/2015  6.47E+10    98.34575    2.46E+12    1.346294
01/04/2015  6.34E+10    100.01053   2.47E+12    1.386315
01/07/2015  6.67E+10    100.4896    2.48E+12    1.393723
01/10/2015  6.69E+10    102.76665   2.49E+12    1.386148
01/01/2016  6.65E+10    104.98214   2.50E+12    1.298074
01/04/2016  6.69E+10    101.38637   2.51E+12    1.270157
01/07/2016  6.88E+10    101.43875   2.52E+12    1.176277
01/10/2016  7.28E+10    97.10191    2.54E+12    1.151544
01/01/2017  7.09E+10    101.9       2.55E+12    1.162719
$\endgroup$
  • 2
    $\begingroup$ You can trace back the error by inspecting the source code. Type ca.jo and hit "Enter" to get the code. There you can find the definition of M11 which is causing the trouble when attempting to invert it. It is defined in terms of Z1 which is defined in terms of Z which is a matrix formed from columns of the first-differenced data and its K lags. By looking carefully at the code you should understand what is wrong with data. Perhaps the variables are perfectly collinear in their first differences. I have not checked the details thoroughly, but it should not be too complicated. $\endgroup$ – Richard Hardy Aug 31 '17 at 12:27
  • $\begingroup$ Looking through the source code definitely helps me understand the error, but regardless I am having issues with the data. I think they data themselves are at fault here unfortunately! $\endgroup$ – hoaxasaurusrex Aug 31 '17 at 15:58
  • $\begingroup$ What is the fault precisely? Are the data perfectly collinear? $\endgroup$ – Richard Hardy Aug 31 '17 at 16:02
  • $\begingroup$ I don't think they're perfectly collinear, but looking at my pacf chart from the data the first lag is always somewhere between 0.8 and 1.0 for nearly all the series. Since VARselect suggests building models with lags = 2, I think this must be causing an issue. For reference I am following these steps: stats.stackexchange.com/questions/191851/… $\endgroup$ – hoaxasaurusrex Sep 5 '17 at 11:20
  • 2
    $\begingroup$ Your data is on very different scales. Try standardizing the different columns to get rid of the error. $\endgroup$ – Richard Hardy Sep 5 '17 at 11:58
2
$\begingroup$

I recently encountered a similar frustrating error with ca.jo(). The problem is numerical, not statistical. Very large numbers cause problems for solve(), and when you take the cross-product of a series where all the numbers are on the scale of 10^12 you get very large numbers.

I reproduced the error on the data you posted, and the error is alleviated simply by dividing s01 and s03 by 10^9.

| cite | improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ Just encountered the same error and the reason was the same. Incredibly frustrating... $\endgroup$ – Moritz Schwarz Aug 13 at 3:50
0
$\begingroup$

Add a negligible value (1.e-5 for instance) to your diagonal elements, this usually fixes this kind of problem.

| cite | improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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