50 COM A[300],B[300],C[300],D[300],E[300],F[300] 60 COM G[25],N0,M0,I0,I1,I2,I3,I4,I5,I6,Z0 70 COM H[100],I[100],M1,M2,A0 80 COM J[20],K[20],L[20],M[20] 81 COM R$[7],R9 83 COM D0 86 COM I7,I8,I9,L0,Z1,Z2,Z3,A1,N1 87 COM S0,S1,K0,K1,J0,J1,L1,N2 89 COM A$[4],N[4],B$[4],O[4] 90 COM Q$[7],Q9 91 COM N3,N4,N5,N6 93 FILES * 94 DIM I$[3],N$[7] 95 DIM Y$[3] 96 MAT A=ZER 97 MAT B=ZER 98 MAT D=ZER 99 MAT F=ZER 100 MAT E=ZER 101 I3=I4=I5=0 102 MAT L=ZER 103 MAT C=ZER 104 D9=0 120 Y$="YES" 180 J[1]=-1 190 K[1]=-1 200 L[1]=-1 210 M[1]=-1 211 PRINT LIN(2)"IS DATA TO BE ENTERED FROM TERMINAL (Y OR N)" 212 INPUT I$ 213 IF I$[1,1]#"Y" THEN 220 214 D9=1 216 GOTO 340 220 PRINT LIN(1)"NAME OF INPUT FILE" 240 INPUT N$ 250 ASSIGN N$,1,I7 251 IF I7#2 THEN 260 252 PRINT "READ-ONLY FILE -- #1" 253 GOTO 290 260 IF I7=0 THEN 290 270 PRINT "CANNOT ACCESS FILE -- STATUS ";I7 280 GOTO 220 290 PRINT "DELETE FIRST TWO OBSERVATIONS (Y OR N)" 300 INPUT I$ 310 IF I$[1,1]#"Y" THEN 340 320 READ #1;E[101],E[102] 325 PRINT USING 335;E[101] 330 PRINT USING 335;E[102] 335 IMAGE 10D.5D,10X,"HAS BEEN DELETED." 340 PRINT "NUMBER OF OBSERVATIONS (100 MAXIMUM)" 360 INPUT N0 361 IF N0 <= 100 THEN 380 362 PRINT "ONLY 100 OBSERVATIONS ALLOWED" 363 GOTO 220 380 N0=N0+100 381 IF D9#1 THEN 390 382 PRINT "ENTER INPUT DATA (ONE OBSERVATION PER LINE)" 390 FOR I8=101 TO N0 391 IF D9=1 THEN 395 392 READ #1;E[I8] 393 GOTO 400 395 INPUT E[I8] 400 NEXT I8 402 IF D9#1 THEN 416 404 PRINT "DO YOU WISH TO SAVE THE DATA ON A FILE (Y OR N)" 405 INPUT I$ 406 IF I$[1,1]#"Y" THEN 416 407 PRINT "NAME OF OUTPUT FILE " 408 INPUT N$ 409 ASSIGN N$,1,I7 410 IF I7=0 THEN 413 411 PRINT "CANNOT ACCESS FILE -- STATUS ",I7 412 GOTO 407 413 FOR I8=101 TO N0 414 PRINT #1;E[I8] 415 NEXT I8 416 PRINT "CONSTRUCT MODEL ON NATURAL LOGS OF DATA (Y OR N)" 430 L0=0 440 INPUT I$ 450 IF I$[1,1]#"Y" THEN 460 455 L0=1 460 IF (L0#1) THEN 490 470 FOR I8=101 TO N0 480 E[I8]=LOG(E[I8]) 481 NEXT I8 490 MAT A=E 510 PRINT "ENTER P,D,Q" 540 INPUT I0,I1,I2 550 PRINT "SEASONAL PERIOD (0 IF NONSEASONAL)" 570 INPUT Z0 580 IF (Z0=0) THEN 640 590 PRINT "ENTER BP,BD,BQ" 630 INPUT I3,I4,I5 640 Z1=I1 650 Z2=I4 660 IF (Z1=0) THEN 730 670 Z1=Z1-1 680 N0=N0-1 690 FOR I8=1 TO N0 700 Z3=I8+1 710 A[I8]=A[Z3]-A[I8] 711 NEXT I8 720 GOTO 660 730 IF (Z2=0) THEN 800 740 Z2=Z2-1 750 N0=N0-Z0 760 FOR I8=1 TO N0 770 Z3=I8+Z0 780 A[I8]=A[Z3]-A[I8] 781 NEXT I8 790 GOTO 730 800 FOR I8=101 TO N0 810 Z3=101+N0-I8 820 C[Z3]=A[I8] 821 NEXT I8 830 M1=I0+I3*Z0 840 M2=I2+I5*Z0 850 M0=M1 MAX M2 860 A0=0 870 FOR I8=101 TO N0 880 A0=A0+A[I8] 881 NEXT I8 890 A0=A0/(N0-100) 900 A1=A0 910 PRINT "INCLUDE A PARAMETER FOR NON-ZERO SERIES MEAN" 930 I6=1 940 INPUT I$ 950 IF I$[1,1]="Y" THEN 960 955 A0=0 957 I6=0 960 N1=I0+I2+I3+I5+I6 1010 GOSUB 2490 1020 IF I6=0 THEN 1100 1030 G[N1]=A0 1100 PRINT "ESTIMATE PARAMETERS" 1101 PRINT " (AUTOMATIC SEARCH=1)" 1102 PRINT " (MANUAL SEARCH=2)" 1103 INPUT I8 1120 IF I8=2 THEN 1382 1161 R9=1170 1162 R$="$IDA53" 1163 CHAIN "$IDA53D" 1170 PRINT "PARAMETER VALUES" 1180 IF I0=0 THEN 1210 1182 PRINT USING 1205 1195 FOR I8=1 TO I0 1197 PRINT USING 1280;I8,J[I8+1] 1199 NEXT I8 1205 IMAGE 5X,"AUTOREGRESSIVE PARAMETER(S)" 1210 IF I2=0 THEN 1230 1211 PRINT USING 1225 1215 FOR I8=1 TO I2 1217 PRINT USING 1280;I8,L[I8+1] 1219 NEXT I8 1225 IMAGE 5X,"MOVING AVERAGE PARAMETER(S)" 1230 IF I3=0 THEN 1250 1231 PRINT USING 1245 1235 FOR I8=1 TO I3 1237 PRINT USING 1280;I8,K[I8+1] 1239 NEXT I8 1245 IMAGE 5X,"SEASONAL AUTOREGRESSIVE PARAMETER(S)" 1250 IF I5=0 THEN 1270 1252 PRINT USING 1265 1255 FOR I8=1 TO I5 1257 PRINT USING 1280;I8,M[I8+1] 1259 NEXT I8 1265 IMAGE 5X,"SEASONAL MOVING AVERAGE PARAMETER(S)" 1270 IF I6=0 THEN 1290 1275 PRINT " MEAN " 1276 PRINT USING 1282;A0*(1-G[N1+1]) 1280 IMAGE 5X,"*NUMBER ",2D,"=",4D.4D 1282 IMAGE 5X,"*",10X,4D.4D 1290 S0=SQR(S0/(N0-100-N1)) 1300 PRINT USING 1495;S0 1310 PRINT "MANUAL SEARCH" 1330 INPUT I$ 1340 IF I$[1,1]#"Y" THEN 1520 1350 GOSUB 2490 1355 IF I6=0 THEN 1382 1356 A0=0 1357 FOR I8=101 TO N0 1358 A0=A0+A[I8] 1359 NEXT I8 1360 A0=A0/(N0-100) 1361 A1=A0 1362 G[N1]=A0 1382 Q$="$IDA53" 1384 Q9=1480 1386 CHAIN "$IDA53A" 1390 S0=SQR(D0/(N0-100-N1)) 1400 PRINT USING 1495;S0 1410 GOSUB 2490 1440 S1=0 1450 FOR I8=1 TO N1 1460 S1=S1+G[I8] 1461 NEXT I8 1470 IF (S1=0) THEN 1520 1472 Q$="$IDA53" 1474 Q9=1480 1476 CHAIN "$IDA53A" 1480 S0=SQR(D0/(N0-100-N1)) 1490 PRINT USING 1495;S0 1495 IMAGE "STANDARD ERROR = ",6D.6D 1500 PRINT "CONTINUE MANUAL SEARCH (Y OR N)" 1505 INPUT I$ 1510 IF I$[1,1]="Y" THEN 1410 1520 PRINT "THE FINAL MODEL IS" 1540 K0=I4 1550 K1=Z0 1560 IF (K0 <= 0) THEN 1810 1570 J0=M1+K1 1580 IF (M1= 101) THEN 1890 1935 N2=N0 1940 PRINT "FORECAST FUTURE TIME SERIES VALUES" 1960 INPUT I$ 1970 IF I$[1,1]#"Y" THEN 2100 1980 PRINT "HOW MANY PERIODS AHEAD" 2000 INPUT J0 2010 Z3=N0+1 2020 N2=N0 2030 N0=N0+J0 2040 FOR I8=Z3 TO N0 2051 GOSUB 2360 2060 E[I8]=F[I8] 2061 NEXT I8 2070 FOR I8=Z3 TO N0 2080 E[I8]=0 2090 IF L0#1 THEN 2097 2095 F[I8]=EXP(F[I8]) 2097 NEXT I8 2100 IF L0#1 THEN 2250 2110 FOR I8=101 TO N2 2120 E[I8]=EXP(E[I8]) 2130 F[I8]=EXP(F[I8]) 2140 D[I8]=E[I8]-F[I8] 2141 NEXT I8 2238 IMAGE 4X,"PERIOD",11X,"ACTUAL",4X,"FORECAST",7X,"ERROR" 2239 IMAGE 5X,5D,5X,3(8D.3D) 2250 PRINT "LIST ACTUALS,FORECASTS AND ERRORS (Y OR N)" 2252 INPUT I$ 2254 IF I$[1,1]#"Y" THEN 2350 2256 PRINT "FIRST PERIOD TO WRITE" 2270 INPUT Z3 2275 PRINT USING 2238 2280 Z3=Z3+100 2290 FOR I8=Z3 TO N0 2300 J0=I8-100 2310 PRINT USING 2239;J0,E[I8],F[I8],D[I8] 2331 NEXT I8 2350 STOP 2360 S2=0 2370 IF (M1=0) THEN 2420 2380 FOR J2=1 TO M1 2390 K2=I8-J2 2400 S2=S2+I[J2+1]*(E[K2]-A0) 2410 NEXT J2 2420 IF (M2=0) THEN 2470 2430 FOR J2=1 TO M2 2440 K2=I8-J2 2450 S2=S2-H[J2+1]*D[K2] 2460 NEXT J2 2470 F[I8]=S2+A0 2480 RETURN 2490 PRINT "ENTER PARAMETERS IN THE FOLLOWING ORDER" 2495 G[N1+1]=0 2500 IF NOT (I0#0) THEN 2560 2510 PRINT "AUTOREGRESSIVE PARAMETER(S)" 2520 FOR I8=1 TO I0 2530 PRINT USING 2770;I8 2540 INPUT G[I8] 2545 G[N1+1]=G[N1+1]+G[I8] 2550 NEXT I8 2560 IF NOT (I2#0) THEN 2620 2570 PRINT "MOVING AVERAGE PARAMETER(S)" 2580 FOR I8=I0+1 TO I2+I0 2590 PRINT USING 2770;I8-I0 2600 INPUT G[I8] 2610 NEXT I8 2620 IF NOT (I3#0) THEN 2680 2630 PRINT "SEASONAL AUTOREGRESSIVE PARAMETER(S)" 2640 FOR I8=I0+I2+1 TO I0+I2+I3 2650 PRINT USING 2770;I8-(I0+I2) 2660 INPUT G[I8] 2670 NEXT I8 2680 IF I5=0 THEN 2775 2690 PRINT "SEASONAL MOVING AVERAGE PARAMETER(S)" 2700 FOR I8=I0+I2+I3+1 TO I0+I2+I3+I5 2710 PRINT USING 2770;I8-(I0+I2+I3) 2720 INPUT G[I8] 2730 NEXT I8 2770 IMAGE"*NUMBER ",2D,"=" 2775 RETURN 2780 END