some new features
This commit is contained in:
@ -0,0 +1,225 @@
|
||||
"""
|
||||
Created on Thu Aug 30 12:26:38 2012
|
||||
Author: Josef Perktold
|
||||
|
||||
|
||||
function jc = c_sja(n,p)
|
||||
% PURPOSE: find critical values for Johansen maximum eigenvalue statistic
|
||||
% ------------------------------------------------------------
|
||||
% USAGE: jc = c_sja(n,p)
|
||||
% where: n = dimension of the VAR system
|
||||
% p = order of time polynomial in the null-hypothesis
|
||||
% p = -1, no deterministic part
|
||||
% p = 0, for constant term
|
||||
% p = 1, for constant plus time-trend
|
||||
% p > 1 returns no critical values
|
||||
% ------------------------------------------------------------
|
||||
% RETURNS: a (3x1) vector of percentiles for the maximum eigenvalue
|
||||
% statistic for: [90% 95% 99%]
|
||||
% ------------------------------------------------------------
|
||||
% NOTES: for n > 12, the function returns a (3x1) vector of zeros.
|
||||
% The values returned by the function were generated using
|
||||
% a method described in MacKinnon (1996), using his FORTRAN
|
||||
% program johdist.f
|
||||
% ------------------------------------------------------------
|
||||
% SEE ALSO: johansen()
|
||||
% ------------------------------------------------------------
|
||||
% References: MacKinnon, Haug, Michelis (1996) 'Numerical distribution
|
||||
% functions of likelihood ratio tests for cointegration',
|
||||
% Queen's University Institute for Economic Research Discussion paper.
|
||||
% -------------------------------------------------------
|
||||
% written by:
|
||||
% James P. LeSage, Dept of Economics
|
||||
% University of Toledo
|
||||
% 2801 W. Bancroft St,
|
||||
% Toledo, OH 43606
|
||||
% jlesage@spatial-econometrics.com
|
||||
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
|
||||
ss_ejcp0 = '''\
|
||||
2.9762 4.1296 6.9406
|
||||
9.4748 11.2246 15.0923
|
||||
15.7175 17.7961 22.2519
|
||||
21.8370 24.1592 29.0609
|
||||
27.9160 30.4428 35.7359
|
||||
33.9271 36.6301 42.2333
|
||||
39.9085 42.7679 48.6606
|
||||
45.8930 48.8795 55.0335
|
||||
51.8528 54.9629 61.3449
|
||||
57.7954 61.0404 67.6415
|
||||
63.7248 67.0756 73.8856
|
||||
69.6513 73.0946 80.0937'''
|
||||
|
||||
ss_ejcp1 = '''\
|
||||
2.7055 3.8415 6.6349
|
||||
12.2971 14.2639 18.5200
|
||||
18.8928 21.1314 25.8650
|
||||
25.1236 27.5858 32.7172
|
||||
31.2379 33.8777 39.3693
|
||||
37.2786 40.0763 45.8662
|
||||
43.2947 46.2299 52.3069
|
||||
49.2855 52.3622 58.6634
|
||||
55.2412 58.4332 64.9960
|
||||
61.2041 64.5040 71.2525
|
||||
67.1307 70.5392 77.4877
|
||||
73.0563 76.5734 83.7105'''
|
||||
|
||||
ss_ejcp2 = '''\
|
||||
2.7055 3.8415 6.6349
|
||||
15.0006 17.1481 21.7465
|
||||
21.8731 24.2522 29.2631
|
||||
28.2398 30.8151 36.1930
|
||||
34.4202 37.1646 42.8612
|
||||
40.5244 43.4183 49.4095
|
||||
46.5583 49.5875 55.8171
|
||||
52.5858 55.7302 62.1741
|
||||
58.5316 61.8051 68.5030
|
||||
64.5292 67.9040 74.7434
|
||||
70.4630 73.9355 81.0678
|
||||
76.4081 79.9878 87.2395'''
|
||||
|
||||
ejcp0 = np.array(ss_ejcp0.split(),float).reshape(-1,3)
|
||||
ejcp1 = np.array(ss_ejcp1.split(),float).reshape(-1,3)
|
||||
ejcp2 = np.array(ss_ejcp2.split(),float).reshape(-1,3)
|
||||
|
||||
|
||||
def c_sja(n, p):
|
||||
if ((p > 1) or (p < -1)):
|
||||
jc = np.full(3, np.nan)
|
||||
elif ((n > 12) or (n < 1)):
|
||||
jc = np.full(3, np.nan)
|
||||
elif p == -1:
|
||||
jc = ejcp0[n-1,:]
|
||||
elif p == 0:
|
||||
jc = ejcp1[n-1,:]
|
||||
elif p == 1:
|
||||
jc = ejcp2[n-1,:]
|
||||
|
||||
return jc
|
||||
|
||||
|
||||
'''
|
||||
function jc = c_sjt(n,p)
|
||||
% PURPOSE: find critical values for Johansen trace statistic
|
||||
% ------------------------------------------------------------
|
||||
% USAGE: jc = c_sjt(n,p)
|
||||
% where: n = dimension of the VAR system
|
||||
% NOTE: routine does not work for n > 12
|
||||
% p = order of time polynomial in the null-hypothesis
|
||||
% p = -1, no deterministic part
|
||||
% p = 0, for constant term
|
||||
% p = 1, for constant plus time-trend
|
||||
% p > 1 returns no critical values
|
||||
% ------------------------------------------------------------
|
||||
% RETURNS: a (3x1) vector of percentiles for the trace
|
||||
% statistic for [90% 95% 99%]
|
||||
% ------------------------------------------------------------
|
||||
% NOTES: for n > 12, the function returns a (3x1) vector of zeros.
|
||||
% The values returned by the function were generated using
|
||||
% a method described in MacKinnon (1996), using his FORTRAN
|
||||
% program johdist.f
|
||||
% ------------------------------------------------------------
|
||||
% SEE ALSO: johansen()
|
||||
% ------------------------------------------------------------
|
||||
% % References: MacKinnon, Haug, Michelis (1996) 'Numerical distribution
|
||||
% functions of likelihood ratio tests for cointegration',
|
||||
% Queen's University Institute for Economic Research Discussion paper.
|
||||
% -------------------------------------------------------
|
||||
% written by:
|
||||
% James P. LeSage, Dept of Economics
|
||||
% University of Toledo
|
||||
% 2801 W. Bancroft St,
|
||||
% Toledo, OH 43606
|
||||
% jlesage@spatial-econometrics.com
|
||||
% these are the values from Johansen's 1995 book
|
||||
% for comparison to the MacKinnon values
|
||||
%jcp0 = [ 2.98 4.14 7.02
|
||||
% 10.35 12.21 16.16
|
||||
% 21.58 24.08 29.19
|
||||
% 36.58 39.71 46.00
|
||||
% 55.54 59.24 66.71
|
||||
% 78.30 86.36 91.12
|
||||
% 104.93 109.93 119.58
|
||||
% 135.16 140.74 151.70
|
||||
% 169.30 175.47 187.82
|
||||
% 207.21 214.07 226.95
|
||||
% 248.77 256.23 270.47
|
||||
% 293.83 301.95 318.14];
|
||||
%
|
||||
'''
|
||||
|
||||
|
||||
ss_tjcp0 = '''\
|
||||
2.9762 4.1296 6.9406
|
||||
10.4741 12.3212 16.3640
|
||||
21.7781 24.2761 29.5147
|
||||
37.0339 40.1749 46.5716
|
||||
56.2839 60.0627 67.6367
|
||||
79.5329 83.9383 92.7136
|
||||
106.7351 111.7797 121.7375
|
||||
137.9954 143.6691 154.7977
|
||||
173.2292 179.5199 191.8122
|
||||
212.4721 219.4051 232.8291
|
||||
255.6732 263.2603 277.9962
|
||||
302.9054 311.1288 326.9716'''
|
||||
|
||||
|
||||
ss_tjcp1 = '''\
|
||||
2.7055 3.8415 6.6349
|
||||
13.4294 15.4943 19.9349
|
||||
27.0669 29.7961 35.4628
|
||||
44.4929 47.8545 54.6815
|
||||
65.8202 69.8189 77.8202
|
||||
91.1090 95.7542 104.9637
|
||||
120.3673 125.6185 135.9825
|
||||
153.6341 159.5290 171.0905
|
||||
190.8714 197.3772 210.0366
|
||||
232.1030 239.2468 253.2526
|
||||
277.3740 285.1402 300.2821
|
||||
326.5354 334.9795 351.2150'''
|
||||
|
||||
ss_tjcp2 = '''\
|
||||
2.7055 3.8415 6.6349
|
||||
16.1619 18.3985 23.1485
|
||||
32.0645 35.0116 41.0815
|
||||
51.6492 55.2459 62.5202
|
||||
75.1027 79.3422 87.7748
|
||||
102.4674 107.3429 116.9829
|
||||
133.7852 139.2780 150.0778
|
||||
169.0618 175.1584 187.1891
|
||||
208.3582 215.1268 228.2226
|
||||
251.6293 259.0267 273.3838
|
||||
298.8836 306.8988 322.4264
|
||||
350.1125 358.7190 375.3203'''
|
||||
|
||||
tjcp0 = np.array(ss_tjcp0.split(),float).reshape(-1,3)
|
||||
tjcp1 = np.array(ss_tjcp1.split(),float).reshape(-1,3)
|
||||
tjcp2 = np.array(ss_tjcp2.split(),float).reshape(-1,3)
|
||||
|
||||
|
||||
def c_sjt(n, p):
|
||||
if ((p > 1) or (p < -1)):
|
||||
jc = np.full(3, np.nan)
|
||||
elif ((n > 12) or (n < 1)):
|
||||
jc = np.full(3, np.nan)
|
||||
elif p == -1:
|
||||
jc = tjcp0[n-1,:]
|
||||
elif p == 0:
|
||||
jc = tjcp1[n-1,:]
|
||||
elif p == 1:
|
||||
jc = tjcp2[n-1,:]
|
||||
else:
|
||||
raise ValueError('invalid p')
|
||||
|
||||
return jc
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
for p in range(-2, 3, 1):
|
||||
for n in range(12):
|
||||
print(n, p)
|
||||
print(c_sja(n, p))
|
||||
print(c_sjt(n, p))
|
||||
Reference in New Issue
Block a user