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:12JUN74
52  REM:Q1=1 FOR>ALLS;=2 FOR>SUBS
150  DIM A[20],A$[12],C$[12]
160  DIM H[64],I[6]
205  IF Q[1]=0 THEN 9990
240  IF Q[3]=0 THEN 250
242  Q[5]=1
244  Q[6]=35
246  Q[7]=250
248  CHAIN "$IDA38"
250  IF Q9=1 THEN 280
260  PRINT "* DEP. VAR. = ";
270  GOTO 300
280  PRINT "* DEPENDENT VARIABLE (NAME OR COLUMN NUMBER) = ";
300  ENTER 30,Q8,C$
305  PRINT 
310  IF Q8>0 THEN 340
312  PRINT  USING 314
314  IMAGE #,"NEED HELP ";
316  INPUT C$
318  IF C$[1,1]#"Y" THEN 260
320  GOSUB 4000
330  GOTO 260
340  GOSUB 7000
345  IF Z9=0 THEN 320
350  D=Z9
355  IF Q9=1 THEN 380
360  PRINT "HOW MANY INDEP. VAR. ";
370  GOTO 390
380  PRINT "HOW MANY INDEPENDENT VARIABLES ";
390  INPUT K8
392  IF K8 <= 6 THEN 396
393  PRINT "NUMBER OF INDEP. VAR. MUST BE 6 OR LESS"
394  GOTO 360
395  IF K8=0 THEN 9998
396  IF Q3=0 THEN 411
397  FOR I1=1 TO K8
398  PRINT  USING 399;I1
399  IMAGE #,"INDEP. VAR.",XDD,X,"= "
400  INPUT C$
401  GOSUB 7000
402  IF Z9#0 THEN 408
403  PRINT  USING 314
404  INPUT C$
405  IF C$[1,1]#"Y" THEN 398
406  GOSUB 4000
407  GOTO 398
408  A[I1]=Z9
409  NEXT I1
410  GOTO 452
411  IF Q9=3 THEN 440
412  PRINT "GIVE COLUMN NUMBER(S) OF INDEPENDENT VARIABLE(S)"
420  PRINT "SEPARATED BY COMMA(S) :"
430  GOTO 450
440  PRINT "INDEP. VAR(S). = ";
450  MAT  INPUT A[K8]
452  FOR I=1 TO K8
454  V[I]=A[I]
455  NEXT I
456  V[K8+1]=D
500  N8=0
510  FOR I=Q4 TO N
520  N8=N8+X[I,K9+2]
530  NEXT I
540  GOSUB 550
545  GOTO 700
550  FOR I=1 TO K8
560  FOR J=1 TO K8
570  U[I,J]=M[V[I],V[J]]
580  NEXT J
590  NEXT I
600  FOR I=1 TO K8
610  U[I,K8+1]=M[V[I],V[K8+1]]
620  U[K8+1,I]=U[I,K8+1]
630  NEXT I
640  U[K8+1,K8+1]=1
650  RETURN 
700  IF Q1=1 THEN 900
710  GOTO Q9 OF 720,720,760
720  PRINT "DEP. VAR. WILL BE REGRESSED ON ALL"
730  PRINT "POSSIBLE COMBINATIONS OF K INDEP. VARS."
740  PRINT "K = ";
750  GOTO 770
760  PRINT "SUBSET SIZE = ";
770  INPUT Z2
780  IF Z2<K8 THEN 900
790  PRINT  USING 800;K8
800  IMAGE "SUBSET SIZE SHOULD BE LESS THAN",3D
810  GOTO 760
900  REM: HAM VECTOR H
910  MAT H=ZER[2^K8-1]
920  N1=2^K8-1
930  FOR I=1 TO K8
940  I2=2^(I-1)
950  J2=I2*2
960  FOR K2=I2 TO N1 STEP J2
970  H[K2]=I
980  NEXT K2
990  NEXT I
995  MAT I=ZER
996  GOSUB 5000
999  GOSUB 550
1000  FOR L=1 TO N1
1010  I=H[L]
1020  GOSUB 4500
1030  IF I[I]=0 THEN 1060
1040  I[I]=0
1050  GOTO 1100
1060  I[I]=1
1100  K6=0
1110  FOR L1=1 TO K8
1120  K6=K6+I[L1]
1130  NEXT L1
1140  IF Q1=1 THEN 1200
1150  IF K6=Z2 THEN 1200
1160  GOTO 1250
1200  FOR L1=1 TO 20
1210  PRINT "-";
1220  NEXT L1
1230  GOSUB 3000
1240  GOSUB 3500
1250  NEXT L
1255  Q[2]=0
1260  GOTO 9998
3000  T1=(N8-1)*X[N9+2,V[K8+1]]^2
3010  R=U[K8+1,K8+1]*T1
3020  R0=SQR(1-R/T1)
3030  S0=SQR(R/(N8-K6-1))
3040  F=((T1-R)/K6)/(R/(N8-K6-1))
3050  PRINT 
3060  PRINT  USING 3070;R0,S0,F
3070  IMAGE "MULT. R =",XD.4D,2X,"S.E. RES. =",XD.5DE,2X,"F =",3D.2D
3072  J0=((N8-K6+1)/(N8-K6-1))*S0^2
3074  PRINT  USING 3076;(S0^2*(N8-K6-1)/C2-N8+2*(K6+1)),J0
3076  IMAGE "(MALLOW'S CP =",5D.2D," ;    HOCKINGS'S JP =",5D.2D, ")"
3080  RETURN 
3500  PRINT LIN(1),"VARIABLE  B(STD.V)     B      STD.ERROR(B)   T"
3510  PRINT 
3520  B0=0
3530  V0=U[K8+1,K8+1]/(N8-K6-1)
3540  FOR I=1 TO K8
3550  IF I[I]=0 THEN 3680
3560  I1=U[I,K8+1]*X[N9+2,V[K8+1]]/X[N9+2,V[I]]
3570  B0=B0+I1*X[N9+1,V[I]]
3580  I2=SQR(U[I,I]*V0)*X[N9+2,V[K8+1]]/X[N9+2,V[I]]
3590  IF Q3=1 THEN 3630
3600  PRINT  USING 3610;V[I],U[I,K8+1],I1,I2,I1/I2
3610  IMAGE 3X,2D,4X,3D.4D,2(2X,D.4DE),X,3D.3D
3620  GOTO 3680
3630  IF V[I]>10 THEN 3670
3640  PRINT  USING 3650;M$[6*V[I]-5,6*V[I]],U[I,K8+1],I1,I2,I1/I2
3650  IMAGE X,6A,2X,3D.4D,2(2X,D.4DE),X,3D.3D
3660  GOTO 3680
3670  PRINT  USING 3650;N$[6*(V[I]-10)-5,6*(V[I]-10)],U[I,K8+1],I1,I2,I1/I2
3680  NEXT I
3690  B0=X[N9+1,V[K8+1]]-B0
3700  D=0
3710  FOR I=1 TO K8
3720  IF I[I]=0 THEN 3770
3730  FOR J=1 TO K8
3740  IF I[J]=0 THEN 3760
3750  D=D+U[I,J]*(X[N9+1,V[I]]/X[N9+2,V[I]])*X[N9+1,V[J]]/X[N9+2,V[J]]
3760  NEXT J
3770  NEXT I
3780  V1=SQR(V0*X[N9+2,V[K8+1]]^2*(D+1-1/N8))
3790  PRINT  USING 3800;B0,V1,(B0/V1)
3800  IMAGE "CONSTANT",9X,2(2X,D.4DE),X,3D.3D
3810  RETURN 
4000  IF Q3=1 THEN 4100
4010  PRINT LIN(1),"THE FIRST OBSERVATION OF EACH VARIABLE (FOR"
4020  PRINT  USING 4030;Q4
4030  IMAGE "REGRESSION) IS CONTAINED IN ROW",3D," OF THE "
4035  PRINT "DATA MATRIX.  FOR YOUR REFERENCE :"
4040  PRINT LIN(1),"COLUMN  1ST OBSERVATION"
4045  PRINT 
4050  FOR J=1 TO K
4060  PRINT  USING "2X,DD,6X,D.5DE";J,X[Q4,J]
4070  NEXT J
4080  GOTO 4185
4100  PRINT LIN(1),"THESE ARE THE VARIABLES IN THE DATA MATRIX :"
4110  PRINT "COLUMN   NAME"
4115  PRINT 
4120  FOR J=1 TO K
4130  IF J>10 THEN 4170
4140  PRINT  USING 4150;J,M$[6*J-5,6*J]
4150  IMAGE 2X,DD,4X,6A
4160  GOTO 4180
4170  PRINT  USING 4150;J,N$[6*(J-10)-5,6*(J-10)]
4180  NEXT J
4185  PRINT 
4190  RETURN 
4500  C=1/U[I,I]
4510  U[I,I]=C
4520  FOR I1=1 TO K8+1
4530  IF I1=I THEN 4580
4540  FOR J1=1 TO K8+1
4550  IF J1=I THEN 4570
4560  U[I1,J1]=U[I1,J1]-C*U[I1,I]*U[I,J1]
4570  NEXT J1
4580  NEXT I1
4590  FOR I1=1 TO K8+1
4600  IF I1=I THEN 4630
4610  U[I,I1]=U[I,I1]*C
4620  U[I1,I]=-U[I1,I]*C
4630  NEXT I1
4640  RETURN 
5000  FOR I=1 TO K8
5010  GOSUB 4500
5020  NEXT I
5030  R=U[K8+1,K8+1]*(N8-1)*X[N9+2,V[K8+1]]^2
5040  C2=R/(N8-K8-1)
5050  RETURN 
7000  FOR I=1 TO (10 MIN K)
7010  IF M$[6*I-5,6*I]=C$[1,6] THEN 7140
7020  NEXT I
7030  IF K <= 10 THEN 7070
7040  FOR I=1 TO (K-10)
7050  IF N$[6*I-5,6*I]=C$[1,6] THEN 7160
7060  NEXT I
7070  RESTORE 
7080  FOR I=1 TO 21
7090  READ A$
7100  IF A$=C$ THEN 7140
7110  NEXT I
7112  IF C$[1,6]#"FITTED" THEN 7115
7113  Z9=20
7114  GOTO 7170
7115  IF C$[1,6]#"RESIDU" THEN 7120
7116  Z9=21
7117  GOTO 7170
7120  Z9=0
7130  GOTO 7170
7140  Z9=I
7150  GOTO 7170
7160  Z9=10+I
7170  RETURN 
7180  DATA "1","2","3","4","5","6","7","8","9","10","11","12"
7190  DATA "13","14","15","16","17","18","19","20","21"
9990  CHAIN "$IDA",9990
9998  CHAIN "$IDA",150
9999  END 
