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:7MAY74 52 REM:ARG1 AND ARMA IN >RAND 150 DIM D$[10],B$[10] 160 DIM Z[60],W[10],F$[6],G[10],T[10],F[10],C[10],B[10],L$[6] 200 GOTO Q[8] OF 5000,6000 5000 REM : AR(1) 5020 J=I4 5030 GOSUB 5050 5040 GOTO 5212 5050 GOTO Q9 OF 5060,5060,5190 5060 PRINT "MEAN, STANDARD DEVIATION, BETA1, BETA2 ="; 5070 INPUT M,S,B1,B2 5150 IF S>0 THEN 5210 5160 PRINT "STANDARD DEVIATION MUST BE POSITIVE. STANDARD DEVIATION = "; 5170 INPUT S 5180 GOTO 5150 5190 PRINT "M,S,BETA1,BETA2 = "; 5200 GOTO 5070 5210 RETURN 5212 M1=B1/(1-B2) 5214 S1=S/SQR(1-B2*B2) 5215 PRINT "PROCESS MEAN=";M1;"PROCESS S.D.=";S1 5217 PRINT "GIVE FIRST OBSERVATION"; 5218 INPUT M2 5219 X[1,J]=M2 5220 FOR I=2 TO N 5230 Z1=RND(0) 5240 Z2=RND(0) 5250 Z=SQR(-2*LOG(Z1))*COS(6.28318*Z2) 5260 X[I,J]=B1+B2*X[I-1,J]+M+Z*S 5270 NEXT I 5280 GOTO 9000 6000 REM:ARMA 6002 REM:2FEB74 BY WM.WECKER 6004 REM 6006 REM VARIABLE LIST 6008 REM A = CUMULATIVE SUM OF AUTOREGRESSIVE TERMS FOR AN OBSERVATION 6010 REM B = FACTORIALS (VECTOR) 6012 REM C = DIFFERENCING COEFFICIENTS 6014 REM D = NUMBER OF DIFFERENCES 6016 REM D0 = DELTA 6018 REM F = PHI VECTOR OF UNDIFFERENCED SERIES 6020 REM F0 = COLUMN OF DATA MATRIX WHICH CONTAINS THE SERIES 6022 REM F$ = DATA FILE 6024 REM G = PHI VECTOR OF DIFFERENCED SERIES 6026 REM M0 = CUMULATIVE SUM OF MOVING AVERAGE TERMS FOR AN OBSERVATION 6028 REM N0 = NUMBER OF OBSERVATIONS 6030 REM P0 = NUMBER OF AUTOREGRESSIVE TERMS IN DIFFERENCED SERIES 6032 REM Q0 = NUMBER OF MOVING AVERAGE TERMS IN DIFFERENCED SERIES 6034 REM S = VARIANCE OF WHITE NOISE 6036 REM T = THETA VECTOR OF DIFFERENCED SERIES 6038 REM W = WHITE NOISE (LAST Q0 VALUES) 6040 REM W9 = CURRENT WHITE NOISE DISTURBANCE 6042 REM Z = INITIAL P0+D+50 DATA VALUES 6044 REM 6046 REM 6052 REM 6054 REM INPUT PARAMETERS 6056 REM 6080 F0=I4 6090 N0=N 6092 PRINT "P,D,Q="; 6094 INPUT P0,D,Q0 6096 IF P0+D <= 10 AND Q0 <= 10 THEN 6101 6098 PRINT "PROBLEM TOO BIG--P+D AND Q CAN BE AT MOST 10" 6100 GOTO 6092 6101 G0=0 6102 IF P0=0 THEN 6114 6104 FOR I=1 TO P0 6106 PRINT "PHI(";I;")="; 6108 INPUT G[I] 6109 G0=G0+G[I] 6110 NEXT I 6111 IF G0#1 THEN 6114 6112 PRINT "THE SUM OF THE PHI'S CANNOT EQUAL 1. TRY AGAIN." 6113 GOTO 6092 6114 IF Q0=0 THEN 6122 6115 FOR I=1 TO Q0 6116 PRINT "THETA(";I;")="; 6118 INPUT T[I] 6120 NEXT I 6122 PRINT "DELTA="; 6124 INPUT D0 6126 PRINT "SIGMA-SQUARED="; 6128 INPUT S 6130 REM 6132 REM COMPUTE BINOMIAL COEFFICIENTS 6134 REM OF DIFFERENCE FORMULA 6136 REM 6138 B[1]=C[1]=C[D+1]=1 6140 IF D=0 THEN 6154 6142 FOR I=2 TO D 6144 B[I]=B[I-1]*I 6146 NEXT I 6148 FOR I=2 TO D 6150 C[I]=B[D]/(B[I-1]*B[D-I+1]) 6152 NEXT I 6154 FOR I=1 TO D+1 6156 C[D-I+2]=(-1)^(I+1)*C[D-I+2] 6158 NEXT I 6160 REM 6162 REM IF P0= D THEN 6180 6168 FOR I=P0+1 TO D 6170 G[I]=0 6172 NEXT I 6174 REM 6176 REM COMPUTE FIRST D AUTOREGRESSIVE PARAMETERS 6178 REM 6180 IF D=0 THEN 6200 6182 FOR I=1 TO D 6184 F[I]=-C[D-I+1] 6186 FOR J=1 TO I 6188 F[I]=F[I]+C[D-I+J+1]*G[J] 6190 NEXT J 6192 NEXT I 6194 REM 6196 REM COMPUTE AUTOREGRESSIVE PARAMETERS D+1 THROUGH P0 6198 REM 6200 IF P0 <= D THEN 6226 6202 FOR I=D+1 TO P0 6204 K0=I-D-1 6206 F[I]=0 6208 FOR J=1 TO D+1 6210 F[I]=F[I]+C[J]*G[K0+J] 6212 NEXT J 6214 NEXT I 6216 REM 6218 REM COMPUTE FINAL AUTOREGRESSIVE PARAMETERS [START WITH LARGER 6220 REM OF P0+1 AND D+1 TO AVOID REPEATING PARAMETERS CALCULATED 6222 REM PREVIOUSLY] 6224 REM 6226 L=(P0 MAX D)+1 6228 IF L>P0+D THEN 6244 6230 FOR I=L TO P0+D 6232 K0=I-P0-1 6234 F[I]=0 6236 FOR J=1 TO D-K0 6238 F[I]=F[I]+C[J]*G[I-D+J-1] 6240 NEXT J 6242 NEXT I 6244 PRINT '10'10"DATA GENERATION NOW IN PROGRESS..."; 6246 REM 6248 REM INITIALIZE FIRST OBSERVATIONS 6250 REM 6252 W0=(P0+D) MAX Q0 6254 IF P0+D=0 THEN 6270 6255 R=D0/(1-G0) 6256 FOR I=1 TO W0 6258 X[I,F0]=R 6260 Z[I]=R 6262 NEXT I 6264 REM 6266 REM GENERATE FIRST Q0 VALUES OF WHITE NOISE 6268 REM 6270 IF Q0=0 THEN 6290 6272 FOR T0=1 TO Q0 6274 Z1=RND(27) 6276 Z2=RND(27) 6278 Z0=SQR(-2*LOG(Z1))*COS(6.28318*Z2) 6280 W[T0]=Z0*SQR(S) 6282 NEXT T0 6284 REM 6286 REM ACTUAL DATA GENERATION 6288 REM 6290 FOR T0=W0+1 TO N0+50 6292 A=M0=0 6294 REM 6296 REM GENERATE CURRENT DISTURBANCE 6298 REM 6300 Z1=RND(27) 6302 Z2=RND(27) 6304 Z0=SQR(-2*LOG(Z1))*COS(6.28318*Z2) 6306 W9=Z0*SQR(S) 6308 REM 6310 REM DOES PROCESS HAVE AUTOREGRESSIVE TERMS? 6312 REM 6314 IF P0+D=0 THEN 6340 6316 REM 6318 REM ADD AUTOREGRESSIVE TERMS 6320 REM 6322 FOR I=1 TO P0+D 6324 IF T0>50+P0+D THEN 6330 6326 A=A+F[I]*Z[T0-I] 6328 GOTO 6332 6330 A=A+F[I]*X[T0-50-I,F0] 6332 NEXT I 6334 REM 6336 REM DOES PROCESS HAVE MOVING AVERAGE TERMS? 6338 REM 6340 IF Q0=0 THEN 6364 6342 REM 6344 REM ADD MOVING AVERAGE TERMS 6346 REM 6348 FOR I=1 TO Q0 6350 M0=M0-T[I]*W[I] 6352 NEXT I 6354 REM 6356 REM DATA OBSERVATION IS SUM OF AR TERMS, MA TERMS, 6358 REM DELTA, AND CURRENT DISTURBANCE 6360 REM 6362 REM 6364 L0=A+M0+D0+W9 6366 REM 6368 REM UPDATE WHITE NOISE VECTOR 6370 REM 6372 IF Q0=1 THEN 6382 6374 IF Q0=0 THEN 6392 6376 FOR I=Q0 TO 2 STEP -1 6378 W[Q0]=W[Q0-1] 6380 NEXT I 6382 W[1]=W9 6384 REM 6386 REM FIRST 50 OBSERVATIONS THROWN OUT TO REDUCE INITIALIZATION 6388 REM EFFECTS 6390 REM 6392 IF T0 <= 50 THEN 6402 6394 X[T0-50,F0]=L0 6396 IF Q[1]=1 THEN 6400 6398 X[T0-50,K9+2]=1 6400 IF T0>50+P0+D THEN 6404 6402 Z[T0]=L0 6404 NEXT T0 6410 J=F0 6420 GOTO 9000 8999 REM:CHAIN TO IDA912 FOR UPDATING 9000 I4=J 9002 X[N9+3,J]=0 9004 Q[8]=Q[6]=45 9912 CHAIN "$IDA912" 9998 CHAIN "$IDA",150 9999 END