*@TAR_COINT start end * # list of endogenous variables * * Computes the Momentum-TAR Cointegration test. References: * Enders, W. and Siklos, P. L. (2001), "Cointegration and Threshold Adjustment", Journal of Business and Economic Statistics, * April 2001,Vol. 19, No.2 * * * Options: * Model=[MTAR]/TAR; This determines whether the Threshold Autoregressive or Momentum-TAR cointegration * test is computed * LAGS=number of additional lags [0] ; LAGS indicates the degree of AR polynomial on the differences * to include in the regressions * Method=[CONSISTENT]/ZERO; These determine whether a consistent estimate as of Chan's method (1993) * or the zero value are used for estimation of the threshold. * * * * November 2005, Written by: Walter Enders and Razvan Pascalau, University of Alabama * rpascala@cba.ua.edu * * * * procedure TAR_COINT start end type integer start end * option choice model 1 MTAR TAR option choice method 1 consistent zero option integer lags 0 * local vect[int] datavec rhs local integer m local series u du uu duu local integer i v1 v2 nobs local rect cv1 cv2 cv3 cv4 dim cv1(15,3) cv2(15,3) cv3(15,3) cv4(15,3) compute cv1 = || 5.09 , 6.20 , 8.78 $ | 5.01 , 5.98 , 8.24 $ | 4.94 , 5.91 , 8.08 $ | 6.52 , 7.80 , 10.58 $ | 6.36 , 7.48 , 9.99 $ | 6.26 , 7.34 , 9.76 $ | 8.03 , 9.44 , 12.57 $ | 7.75 , 9.06 , 11.73 $ | 7.54 , 8.71 , 11.36 $ | 9.53 , 11.07 , 14.79 $ | 9.07 , 10.47 , 13.33 $ | 8.92 , 10.26 , 13.15 $ | 11.03 , 12.81 , 16.6 $ | 10.46 , 11.97 , 15.28 $ | 10.18 , 11.54 , 14.62 $ || compute cv2 = || 5.59 , 6.73 , 9.50 $ | 5.45 , 6.51 , 8.78 $ | 5.38 , 6.42 , 8.61 $ | 7.02 , 8.31 , 11.14 $ | 6.86 , 8.00 , 10.65 $ | 6.70 , 7.84 , 10.40 $ | 8.51 , 9.93 , 13.29 $ | 8.22 , 9.56 , 12.30 $ | 7.98 , 9.25 , 11.79 $ | 9.99 , 11.57 , 15.28 $ | 9.51 , 10.96 , 13.92 $ | 9.38 , 10.74 , 13.78 $ | 11.49 , 13.27 , 17.19 $ | 10.92 , 12.44 , 15.77 $ | 10.63 , 12.02 , 15.10 $ || compute cv3 = || 6.05 , 7.24 , 9.90 $ | 5.95 , 6.95 , 9.27 $ | 5.93 , 6.93 , 9.15 $ | 7.41 , 8.74 , 11.80 $ | 7.19 , 8.34 , 11.09 $ | 7.13 , 8.28 , 10.71 $ | 8.85 , 10.32 , 13.69 $ | 8.52 , 9.85 , 12.61 $ | 8.34 , 9.55 , 12.20 $ | 10.29 , 11.93 , 15.69 $ | 9.79 , 11.24 , 14.17 $ | 9.66 , 10.98 , 14.03 $ | 11.79 , 13.60 , 17.59 $ | 11.17 , 12.72 , 16.04 $ | 10.86 , 12.26 , 15.31 $ || compute cv4 = || 5.97 , 7.12 , 9.96 $ | 5.73 , 6.78 , 9.14 $ | 5.58 , 6.62 , 8.82 $ | 7.44 , 8.76 , 11.79 $ | 7.12 , 8.31 , 11.00 $ | 6.91 , 8.07 , 10.59 $ | 8.85 , 10.34 , 13.77 $ | 8.47 , 9.82 , 12.65 $ | 8.15 , 9.41 , 11.97 $ | 10.35 , 12.02 , 15.85 $ | 9.75 , 11.20 , 14.25 $ | 9.52 , 10.89 , 13.95 $ | 11.91 , 13.74 , 17.74 $ | 11.13 , 12.69 , 16.10 $ | 10.76 , 12.16 , 15.29 $ || enter(varying) datavec compute m=%rows(datavec)-1 dim rhs(m) ewise rhs(i)=datavec(i+1) inquire(reglist) v1<6 { display 'NVAR must be >=2 and <=6' return } * linreg(entries=2,print) datavec(1) v1 v2 u ; # rhs constant ; dif u v1+1 v2 du * compute nobs = %nobs + 1 * if nobs<100 ; com x = 0 if nobs>100.and.nobs<250 ; com x = 1 if nobs>250 ; com x = 2 * if model.eq.2 { * if method.eq.2 { set flag = %if(u{1}<0,0,1) set uplus = flag*u{1} set uminus = (1-flag)*u{1} * if lags { linreg(entries=2+6*(lags>0)) du v1+lags+1 v2 resids ; # uplus uminus du{1 to lags} } else { linreg(entries=2) du v1+1 v2 resids ; # uplus uminus } display display 'TAR COINTEGRATION Test' display 'Regression Run From' %datelabel(v1+lags+1) 'to' %datelabel(v2) * exclude # uplus uminus display '---------------------------------------------------------' display ' With zero threshold ' display '---------------------------------------------------------' compute f = %cdstat *compute nobs = %nobs + 1 display 'critical values at' @28 '90%' @36 '95%' @44 '99%' display @3 'Nobs =' nobs @27 #.## cv1(-5+3*(m+1)+x,1) @36 #.## cv1(-5+3*(m+1)+x,2) @44 #.## cv1(-5+3*(m+1)+x,3) * * now test rho1 = rho2 display '---------------------------------------------------------' display 'Perform the test for symmetric adjustment(rho1=rho2)' restrict 1 # 1 2 # 1 -1 0 } else if method.eq.1 { compute rss_test = 1000000.0 set thresh_test = u order thresh_test compute low = v1 + fix(%nobs*.15), high = v2 - fix(%nobs*0.15) * compute thresh = thresh_test(low) do ii = low,high set uu = u - thresh_test(ii) dif uu v1+1 v2 duu set flag = %if(uu{1}<0,0,1) set u_plus = flag*uu{1} set u_minus = (1-flag)*uu{1} linreg(noprint) duu v1+1 v2 # u_plus u_minus if %rss < rss_test { compute rss_test = %rss compute thresh = thresh_test(ii) } end do ii dis 'Threshold = ' thresh * set uu = u - thresh set flag = %if(uu{1}<0,0,1) set u_plus = flag*uu{1} set u_minus = (1-flag)*uu{1} * dif uu v1+1 v2 duu if lags { linreg(entries=2+6*(lags>0)) duu v1+lags+1 v2 resids ; # u_plus u_minus duu{1 to lags} } else { linreg(entries=2) duu v1+1 v2 resids ; # u_plus u_minus } display display 'TAR COINTEGRATION test' display 'Regression Run From' %datelabel(v1+lags+1) 'to' %datelabel(v2) exclude # u_plus u_minus display '---------------------------------------------------------' display ' With consistent threshold ' display '---------------------------------------------------------' compute f = %cdstat display 'critical values at' @28 '90%' @36 '95%' @44 '99%' display @3 'Nobs =' nobs @27 #.## cv3(-5+3*(m+1)+x,1) @36 #.## cv3(-5+3*(m+1)+x,2) @44 #.## cv3(-5+3*(m+1)+x,3) * *now test rho1 = rho2 display '---------------------------------------------------------' disply 'Perform the test for symmetric adjustment(rho1=rho2)' restrict 1 # 1 2 # 1 -1 0 } } else if model.eq.1 { if method.eq.2 { set flag = %if(du{1}<0,0,1) set uplus = flag*u{1} set uminus = (1-flag)*u{1} * if lags { linreg(entries=2+6*(lags>0)) du v1+lags+1 v2 resids ; # uplus uminus du{1 to lags} } else { linreg(entries=2) du v1+1 v2 resids ; # uplus uminus } display 'M-TAR COINTEGRATION Test' display 'Regression Run From' %datelabel(v1+lags+1) 'to' %datelabel(v2) * exclude # uplus uminus display '---------------------------------------------------------' display ' With zero threshold ' display '---------------------------------------------------------' compute f = %cdstat display 'critical values at' @28 '90%' @36 '95%' @44 '99%' display @3 'Nobs = ' nobs @27 #.## cv2(-5+3*(m+1)+x,1) @36 #.## cv2(-5+3*(m+1)+x,2) @44 #.## cv2(-5+3*(m+1)+x,3) * * now test rho1 = rho2 display '---------------------------------------------------------' disply 'Perform the test for symmetric adjustment(rho1=rho2)' restrict 1 # 1 2 # 1 -1 0 } else if method.eq.1 { compute rss_test = 1000000.0 set thresh_test = u order thresh_test compute low = v1 + fix(%nobs*.15), high = v2 - fix(%nobs*0.15) * compute thresh = thresh_test(low) do ii = low,high set uu = u - thresh_test(ii) dif uu v1+1 v2 duu set flag = %if(duu{1}<0,0,1) set u_plus = flag*uu{1} set u_minus = (1-flag)*uu{1} linreg(noprint) duu v1+1 v2 # u_plus u_minus if %rss < rss_test { compute rss_test = %rss compute thresh = thresh_test(ii) } end do ii dis 'Threshold = ' thresh * set uu = u - thresh dif uu v1+1 v2 duu set flag = %if(duu{1}<0,0,1) set u_plus = flag*uu{1} set u_minus = (1-flag)*uu{1} * if lags { linreg(entries=2+6*(lags>0)) duu v1+lags+1 v2 resids ; # u_plus u_minus duu{1 to lags} } else { linreg(entries=2) duu v1+1 v2 resids ; # u_plus u_minus } display display 'M-TAR COINTEGRATION Test' display 'Regression Run From' %datelabel(v1+lags+1) 'to' %datelabel(v2) exclude # u_plus u_minus display '---------------------------------------------------------' display ' With consistent threshold ' display '---------------------------------------------------------' compute f = %cdstat display 'critical values at' @28 '90%' @36 '95%' @44 '99%' display @3 'Nobs =' nobs @27 #.## cv4(-5+3*(m+1)+x,1) @36 #.## cv4(-5+3*(m+1)+x,2) @44 #.## cv4(-5+3*(m+1)+x,3) * * now test rho1 = rho2 display '---------------------------------------------------------' disply 'Perform the test for symmetric adjustment(rho1=rho2)' restrict 1 # 1 2 # 1 -1 0 } } end