PROGRAM MAIN CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC THIS PROGRAM COMPUTES THE SB AND MT TESTS FOR DURATION DEPENDENCE CC CC CC CC LARRY W. TAYLOR, DEPARTMENT OF ECONOMICS, LEHIGH UNIVERSITY CC CC CC CC DECEMBER 2000 EDITORIAL COMMENTS, NOVEMBER 2004 CC CC CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT DOUBLE PRECISION (A-H,Q-Z) INTEGER N DIMENSION XC(250),XH(250),Y(250),Z3Z3(20,20), & BLOGL(20),BLOG2(2) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC INPUT FILE CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC OPEN(5,FILE='INPUT') CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC OUTPUT FILES CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC OPEN(3,FILE='OUTPUT') OPEN(4,FILE='OUTPUT2') CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC SPECIFY THE NUMBER OF OBSERVED DURATIONS. FOR BUSINESS CYCLES, CC CC THE DURATIONS ARE EITHER CONTRACTIONS OR EXPANSIONS. CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC THE FIRST LINE OF THE FILE 'INPUT' IS THE SAMPLE SIZE. THE REST CC CC OF THE DATA SET CONSISTS OF THE DURATIONS, ONE OBS. PER LINE. CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC READ(5,*)N DO 35 I = 1,N READ(5,*)Y(I) 35 CONTINUE XN = N YBAR = 0.0 DO J = 1,N CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC THE PROGRAM SUBTRACTS UNITY FROM EACH OBSERVATION. THE SUPPORT CC CC FOR Y FALLS FROM ONE TO ZERO. A MINIMUM PHASE, M, OF MORE THAN CC CC ONE PERIOD IS ENFORCED BY SUBTRACTING M-1 FROM EACH OF THE Y'S CC CC IN THE ABOVE LIST. CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC Y(J) = Y(J) - 1.0 XY = Y(J) YBAR = YBAR + XY/XN 100 END DO XPHAT = 1.0 / (YBAR + 1.0) SIG2 = 0.0 XNUM = 0.0 XDEN = 0.0 DO JJ = 1,N XY = Y(JJ) XH(JJ) = (YBAR - XY)*(1.0 + (1.0/YBAR)) XC(JJ) = (XY - (1.0-XPHAT)/XPHAT)**2 - (1.0-XPHAT)/XPHAT**2 XNUM = XNUM + XH(JJ)*XC(JJ) XDEN = XDEN + XH(JJ)*XH(JJ) SIG2 = SIG2 + (1/XN)*(Y(JJ) - YBAR)**2 120 END DO CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC COMPUTE THE MT TEST STATISTIC CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC BHAT = XNUM/XDEN ROOTN = XN**0.5 XGMM = SIG2 - YBAR**2 - YBAR XSIG2 = 0.0 DO JJ = 1,N XSIG2 = ((XC(JJ)-XGMM-BHAT*XH(JJ))**2)/(XN-2.0) + XSIG2 200 END DO XSIG = (XSIG2**0.5)/ROOTN Z3 = XGMM/XSIG XMT = Z3 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC COMPUTE THE SB TEST STATISTIC CC CC CC CC REGRESS ST ON A CONSTANT ON DT, WHERE ST IS 0 IF THE CYCLE ENDS, CC CC AND 1 OTHERWISE. DT IS THE LAGGED DURATION OF THE CYCLE. CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC XX1 = 1.0D0 DO 510 JJ = 1,2 BLOGL(JJ) = 0.0D0 DO 505 III = 1,2 Z3Z3(JJ,III) = 0.0D0 505 CONTINUE 510 CONTINUE XNOB = 0.0D0 DO 47 JJ = 1,N NOB = Y(JJ) + 1 XX2 = 0.0D0 DO 45 IT = 1,NOB XNOB = XNOB + 1.0D0 YS = 1.0D0 XX2 = XX2 + 1.0D0 IF(IT.EQ.NOB)YS = 0.0D0 Z3Z3(1,1) = Z3Z3(1,1) + XX1*XX1 Z3Z3(1,2) = Z3Z3(1,2) + XX1*XX2 Z3Z3(2,1) = Z3Z3(1,2) Z3Z3(2,2) = Z3Z3(2,2) + XX2*XX2 BLOGL(1) = BLOGL(1) + XX1*YS BLOGL(2) = BLOGL(2) + XX2*YS 45 CONTINUE 47 CONTINUE NNN = 2 CALL DMATEQ(Z3Z3,NNN,BLOG2,DET) XAY2 = Z3Z3(1,1)*BLOGL(1) + Z3Z3(1,2)*BLOGL(2) XBY2 = Z3Z3(2,1)*BLOGL(1) + Z3Z3(2,2)*BLOGL(2) 48 SIG11 = 0.0D0 DO 67 JJ = 1,N NOB = Y(JJ) + 1 XX2 = 0.0D0 DO 65 IT = 1,NOB YS = 1.0D0 XX2 = XX2 + 1.0D0 IF(IT.EQ.NOB)YS = 0.0D0 E1 = YS - XAY2*XX1 - XBY2*XX2 SIG11 = SIG11 + (E1**2)/(XNOB-2.0D0) 65 CONTINUE 67 CONTINUE SB = XBY2 / ( (SIG11*Z3Z3(2,2))**0.5 ) CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC CC OUTPUT CC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC WRITE(3,16)N WRITE(3,17)SB,XMT WRITE(3,18)XPHAT 16 FORMAT(1H ,'THE SAMPLE SIZE IS ',I3/) 17 FORMAT(1H ,'SB = ',F8.4,' MT = ',F8.4/) 18 FORMAT(1H ,'P = ',F8.7,' UNDER THE CONSTANT HAZARD ASSUMPTION'/) YBAR = YBAR + 1 WRITE(3,19)YBAR 19 FORMAT(1H ,' THE MEAN DURATION IS ',F10.4/) WRITE(4,9035)N,SB,XMT,XPHAT 9035 FORMAT(I3,1X,F8.4,1X,F8.4,1X,F8.7) STOP END SUBROUTINE DMATEQ (A,N,Y,DET) TOB11970 IMPLICIT DOUBLE PRECISION(A-H,O-Z) TOB11980 DIMENSION A(20,20),Y(20) TOB11990 DOUBLE PRECISION DABS TOB12000 C DMATEQ SUBROUTINE (/360 FILE NO. 310.4.501) TOB12010 C /360 REAL*8 VERSION OF MATEQ (7074 FILE NO. 10.4.502) TOB12020 C A = REAL*8 MATRIX TO BE INVERTED TOB12030 C N = INTEGER*4 VARIALBLE FOR ROW SIZE OF MATRIX A TOB12040 C Y = REAL*8 VECTOR TO SOLVE AX=Y TOB12050 C DET = REAL*8 VARIABLE FOR DETERMINANT OF A TOB12060 C USER SHOULD CHECK DET IMMEDIATELY FOR SINGULARITY TOB12070 C A BECOMES AINVERSE, YOFAX=Y BECOMES X, DET IS DET A TOB12080 C DMATEQ SOLVES AX=Y FOR X, COMPUTES A INVERSE, AND CALCULATES THE TOB12090 C DETERMINANT USING A VARIATION OF GAUSSIAN ELIMINATION. TOB12100 C P J EBERLEIN, REVISED BY E C REINEMAN FOR /360 TOB12110 C UNIVERSITY OF ROCHESTER COMPUTING CENTER TOB12120 C AUGUST 3, 1967 TOB12130 C KEYPUNCH IS 029 TOB12140 DIMENSION ICHG(20) TOB12150 DET=1.0D0 TOB12160 DO 118 K=1,N TOB12170 AMX=DABS(A(K,K)) TOB12180 IMX=K TOB12190 DO 100 I=K,N TOB12200 IF (DABS(A(I,K)).LE.AMX) GO TO 100 TOB12210 AMX=DABS(A(I,K)) TOB12220 IMX=I TOB12230 100 CONTINUE TOB12240 IF (DABS(AMX).GT.0.1D-70) GO TO 102 TOB12250 DET=0.0D0 TOB12260 GO TO 124 TOB12270 102 IF (IMX.EQ.K) GO TO 106 TOB12280 DO 104 J=1,N TOB12290 TEMP=A(K,J) TOB12300 A(K,J)=A(IMX,J) TOB12310 104 A(IMX,J)=TEMP TOB12320 ICHG(K)=IMX TOB12330 TEMP=Y(K) TOB12340 Y(K)= Y(IMX) TOB12350 Y(IMX)= TEMP TOB12360 DET=-DET TOB12370 GO TO 108 TOB12380 106 ICHG(K)=K TOB12390 108 DET=DET*A(K,K) TOB12400 A(K,K)=1.0D0/A(K,K) TOB12410 DO 110 J=1,N TOB12420 IF (J.NE.K) A(K,J)=A(K,J)*A(K,K) TOB12430 110 CONTINUE TOB12440 Y(K) = Y(K)*A(K,K) TOB12450 DO 114 I=1,N TOB12460 DO 112 J=1,N TOB12470 IF (I.EQ.K) GO TO 114 TOB12480 IF (K.NE.J) A(I,J)=A(I,J)-A(I,K)*A(K,J) TOB12490 112 CONTINUE TOB12500 Y(I) = Y(I)-A(I,K)*Y(K) TOB12510 114 CONTINUE TOB12520 DO 116 I=1,N TOB12530 IF (I.NE.K) A(I,K)=-A(I,K)*A(K,K) TOB12540 116 CONTINUE TOB12550 118 CONTINUE TOB12560 DO 122 K=1,N TOB12570 L=N+1-K TOB12580 KI=ICHG(L) TOB12590 IF (L.EQ.KI) GO TO 122 TOB12600 DO 120 I=1,N TOB12610 TEMP = A(I,L) TOB12620 A(I,L) = A(I,KI) TOB12630 120 A(I,KI) = TEMP TOB12640 122 CONTINUE TOB12650 124 RETURN TOB12660 END TOB12670