10  COM X[103,22],M[19,19],U[19,19],Q[20],V[20],P[78]
30  COM M$[60],N$[72]
40  COM N,K,N8,K8,N9,K9,Q9,Q7,Q5,Q4,Q3,Q2,Q1
45  COM I3,I4,U9,X$[20]
46  DIM R[81],B$[42]
50  REM:29MAY74
52  REM:>CROS
60  REM  23 MAY 74  BY R.K.KNOWLES
65  REM
70  REM: ************************************
75  REM  CROSS CORRELATION
76  REM
77  PRINT "WANT EXPLANATION";
78  INPUT B$[1,5]
79  IF B$[1,1]="N" THEN 84
80  PRINT "'CRCF' COMPUTES THE CROSS CORRELATION FUNCTION BETWEEN"
81  PRINT "TWO SERIES VIA METHOD GIVEN IN BOX AND JENKINS (1970),P.374."
82  PRINT "THE COEFFICIENTS ARE R(I,J) WHERE I REFERS TO FIRST SERIES"
83  PRINT "AND J TO THE SECOND."
84  IF Q[1]=0 THEN 9990
90  PRINT LIN(1)
100  PRINT "WHICH COLUMN CONTAINS FIRST SERIES";
110  INPUT W1
120  IF W1>0 AND W1 <= K AND W1=INT(W1) THEN 150
130  PRINT "THAT COLUMN NOT DEFINED"
140  GOTO 9998
150  W3=N
160  W2=X[N9+3,W1]+1
200  PRINT LIN(1),"WHICH COLUMN CONTAINS SECOND SERIES";
210  INPUT V1
220  IF V1>0 AND V1 <= K AND V1=INT(V1) THEN 250
230  PRINT "THAT COLUMN NOT DEFINED"
240  GOTO 9998
250  V3=N
260  V2=X[N9+3,V1]+1
325  PRINT LIN(1),"HOW MANY LAGS ( <40 )";
330  INPUT L1
335  IF L1<41 AND L1<(N-1) THEN 350
340  PRINT "TOO MANY"
345  GOTO 325
350  N1=N2=F1=F2=S1=S2=0
355  REM
360  REM  COMPUTE MEANS AND STD DEVS
365  REM
370  W2=(W2 MAX V2)
375  V2=W2
380  FOR I=W2 TO W3
390  IF X[I,K9+2]=0 THEN 430
400  F1=F1+X[I,W1]
410  F2=F2+X[I,W1]*X[I,W1]
420  N1=N1+1
430  NEXT I
440  M1=F1/N1
450  D1=SQR(F2-M1*F1)
460  FOR I=V2 TO V3
470  IF X[I,K9+2]=0 THEN 510
480  S1=S1+X[I,V1]
490  S2=S2+X[I,V1]*X[I,V1]
500  N2=N2+1
510  NEXT I
520  M2=S1/N2
530  D2=SQR(S2-M2*S1)
570  MAT R=ZER
580  PRINT LIN(1),"COMPUTING..."
585  REM
590  REM  COMPUTE CROSS COVARIANCE
595  REM
600  V4=V2-1
610  FOR W4=W2 TO W3
620  V4=V4+1
630  IF X[W4,K9+2]=0 OR X[V4,K9+2]=0 THEN 650
640  R[L1+1]=R[L1+1]+(X[W4,W1]-M1)*(X[V4,V1]-M2)
650  NEXT W4
700  FOR I=1 TO L1
710  V4=V2-1
720  FOR W4=W2 TO (W3-I)
730  V4=V4+1
740  IF X[W4,K9+2]=0 OR X[V4+I,K9+2]=0 THEN 760
750  R[L1+1+I]=R[L1+1+I]+(X[W4,W1]-M1)*(X[V4+I,V1]-M2)
760  IF X[V4,K9+2]=0 OR X[W4+I,K9+2]=0 THEN 780
770  R[L1+1-I]=R[L1+1-I]+(X[V4,V1]-M2)*(X[W4+I,W1]-M1)
780  NEXT W4
790  NEXT I
885  REM
890  REM  COMPUTE CROSS CORRELATION
895  REM
900  FOR I=1 TO (2*L1+1)
910  R[I]=R[I]/(D1*D2)
920  NEXT I
1000  DEF FNA()=INT(21.5+20*)
1010  C0=0
1020  FOR I=1 TO (2*L1+1)
1030  C0=(C0 MAX ABS(R[I]))
1040  NEXT I
1050  IF C0 <= 1.1 THEN 1100
1060  PRINT "SOMETHING IS WRONG"
1070  GOTO 2000
1100  PRINT LIN(2),TAB(7);"CROSS"
1110  PRINT "ORDER  CORRELATION";
1130  PRINT  USING 2910
1140  PRINT TAB(20);
1150  PRINT  USING 2810
1160  FOR I=1 TO L1
1170  R0=R[I]
1180  L=-(L1-I+1)
1190  GOSUB 3000
1200  NEXT I
1205  B$[1,42]="-'----'----'----'----'----'----'----'----'"
1210  R0=R[L1+1]
1220  L=0
1223  D0=FNA(R0)
1225  B$[D0+1,D0+1]="*"
1226  PRINT  USING "3D,5X,SD.3D,5X,42A";L,R0,B$
1300  FOR I=1 TO L1
1310  R0=R[L1+1+I]
1320  L=I
1330  GOSUB 3000
1340  NEXT I
1390  PRINT TAB(20);
1400  PRINT  USING 2810
1410  PRINT TAB(18);
1420  PRINT  USING 2910
1430  PRINT LIN(0)
1440  GOTO 9998
2000  FOR I=1 TO 80 STEP 5
2010  PRINT R[I],R[I+1],R[I+2],R[I+3]
2020  NEXT I
2030  GOTO 9998
2810  IMAGE "'----'----'----'----'----'----'----'----'"
2910  IMAGE " -1  -.75 -.50 -.25   0   .25  .50  .75   1"
3000  PRINT  USING "#,3D5X";L
3010  PRINT  USING "#,SD.3D";R0
3020  PRINT TAB(19);"-";
3030  R0=FNA(R0)
3040  IF R0 >= 21 THEN 3080
3050  PRINT TAB(19+R0)"*";
3060  PRINT TAB(40)"'"
3070  GOTO 3130
3080  IF R0>21 THEN 3110
3090  PRINT TAB(40)"*"
3100  GOTO 3130
3110  PRINT TAB(40)"'";
3120  PRINT TAB(19+R0)"*"
3130  RETURN 
9990  CHAIN "$IDA",9990
9998  CHAIN "$IDA",150
9999  END 
