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]
50  REM  14 MAY 74 RKK
52  REM:>PACF
54  REM:15JAN74 VERSION BY WM. WECKER
60  DIM A[41],B[41],R[41],D[41]
61  DIM I$[12]
62  IF Q9>1 THEN 70
63  PRINT "WANT EXPLANATION ";
64  INPUT I$
65  IF I$="N" THEN 70
66  PRINT "'PACF' COMPUTES THE PARTIAL AUTOCORRELATION FUNCTION ESTIMATE"
67  PRINT "VIA THE ITERATIVE METHOD GIVEN IN BOX AND JENKINS (1970),P.497."
68  PRINT "REISSUE 'PACF' TO EXECUTE 'PACF'."
69  GOTO 9998
70  IF Q[1]=0 THEN 9990
78  PRINT "WHICH COLUMN";
80  INPUT Z9
84  IF K=0 THEN 9996
85  IF Z9>0 AND Z9 <= K AND Z9=INT(Z9) THEN 90
86  PRINT "THAT COLUMN NOT DEFINED"
87  GOTO 78
90  PRINT LIN(2);"HOW MANY LAGS";
100  INPUT N6
101  IF N6<41 THEN 110
102  PRINT "MAX NUMBER IS 40"
103  GOTO 90
110  N7=0
115  A1=0
120  FOR I=(X[N9+3,Z9]+1) TO N
130  IF X[I,K9+2]=0 THEN 150
140  A1=A1+X[I,Z9]
141  N7=N7+1
150  NEXT I
160  N6=N6 MIN (N7-3)
170  A1=A1/N7
175  R0=0
180  FOR I=(X[N9+3,Z9]+1) TO N
190  IF X[I,K9+2]=0 THEN 220
200  R0=R0+(X[I,Z9]-A1)^2
220  NEXT I
310  FOR I=1 TO N6
320  R[I]=0
330  FOR J=(X[N9+3,Z9]+1) TO (N-I)
331  IF X[J,K9+2]=0 THEN 350
332  IF X[I+J,K9+2]=0 THEN 350
340  R[I]=R[I]+(X[J,Z9]-A1)*(X[I+J,Z9]-A1)
350  NEXT J
360  NEXT I
370  FOR I=1 TO N6
380  R[I]=R[I]/R0
390  NEXT I
440  MAT A=ZER
450  MAT B=ZER
460  A[1]=R[1]
470  REM
475  D[1]=R[1]
480  FOR L=2 TO N6
490  S1=S2=0
500  FOR J=1 TO L-1
505  B[J]=A[J]
510  S1=S1+B[J]*R[L-J]
520  S2=S2+B[J]*R[J]
530  NEXT J
560  A[L]=(R[L]-S1)/(1-S2)
565  D[L]=A[L]
570  FOR J=1 TO L-1
580  A[J]=B[J]-A[L]*B[L-J]
590  NEXT J
630  NEXT L
640  DEF FNA()=INT(21.5+20*)
650  C0=0
660  FOR I=1 TO N6
670  C0=(C0 MAX ABS(D[I]))
680  NEXT I
690  PRINT LIN(2),TAB(9);"PARTIAL"
700  PRINT "ORDER   AUTO "'21"COR.";
710  PRINT TAB(19);
720  IF C0<1 THEN 840
730  IF C0<2 THEN 810
740  IF C0<4 THEN 780
750  S=8
760  PRINT " -8   -6   -4   -2    0    2    4    6    8"
770  GOTO 900
780  S=4
790  PRINT " -4   -3   -2   -1    0    1    2    3    4"
800  GOTO 900
810  S=2
820  PRINT " -2  -1.5  -1   -.5   0   .5    1   1.5   2"
830  GOTO 900
840  S=1
850  PRINT " -1  -.75 -.50 -.25   0   .25  .50  .75   1"
860  GOTO 900
900  PRINT TAB(20);
910  PRINT "/----/----/----/----/----/----/----/----/"
915  FOR I=1 TO N6
920  D0=D[I]
925  L=I
930  GOSUB 1000
940  NEXT I
950  GOTO 9998
1000  PRINT  USING "#,3D5X";L
1010  PRINT  USING "#,SD.3D";D0
1020  PRINT TAB(19);"-";
1030  D0=FNA(D0/S)
1040  IF D0 >= 21 THEN 1080
1050  PRINT TAB(19+D0)"*";
1060  PRINT TAB(40)"/"
1070  GOTO 1130
1080  IF D0>21 THEN 1110
1090  PRINT TAB(40)"*"
1100  GOTO 1130
1110  PRINT TAB(40)"/";
1120  PRINT TAB(19+D0)"*"
1130  RETURN 
9990  CHAIN "$IDA",9990
9996  PRINT "'PACF' NOT EXECUTED"
9998  CHAIN "$IDA",150
9999  END 
