1  REM -- NEWB   BASIC PROGRAM TO ACCOMPANY NEWFOOD (B) 7/25/73
2  REM -- PERFORMS MULTIPLE REGRESSIONS
3  REM -- PROGRAMMED BY PROF. DEMSKI AND PROF. FELTHAM
4  REM  CASE2, HP 36841A, 2/74  (NEWB, PART 5 OF 8)
10  DIM X[100,10],C[10,100],D[10,10],E[10,10],F[10]
11  DIM Y[1,100],W[100,1],A[10],B[10],T[1],G[1,10]
14  DIM A$[10]
15  PRINT "HAVE YOU ENTERED YOUR DATA ALREADY";
16  INPUT A$
17  IF A$[1,1]="N" THEN 1200
18  PRINT 
20  PRINT "HOW MANY VARIABLES DO YOU HAVE DATA ON";
30  INPUT M1
40  PRINT "HOW MANY OBSERVATIONS DO YOU HAVE";
50  INPUT N
80  PRINT 
90  PRINT 
100  PRINT "HOW MANY INDEPENDENT VARIABLES DO YOU HAVE";
110  INPUT M
150  FOR I=1 TO M
155  PRINT "VARIABLE";
160  INPUT B[I]
170  NEXT I
180  PRINT "WHICH VARIABLE IS YOUR DEPENDENT VARIABLE";
190  INPUT B[M+1]
191  PRINT 
192  FOR I=1 TO M+1
193  IF B[I] <> INT(B[I]) THEN 196
194  IF B[I] <= 0 THEN 196
195  IF B[I] <= M1 THEN 198
196  PRINT "VARIABLE "B[I]" DOES NOT EXIST. TRY AGAIN."
197  GOTO 80
198  NEXT I
220  MAT X=ZER[N,M+1]
230  MAT C=ZER[M+1,N]
240  MAT D=ZER[M+1,M+1]
250  MAT E=ZER[M+1,M+1]
260  MAT F=ZER[M+1]
270  MAT Y=ZER[1,N]
280  MAT W=ZER[N,1]
290  MAT A=ZER[M+1]
295  MAT G=ZER[1,M+1]
300  FOR I=1 TO M1
310  MAT  READ W
320  IF B[M+1] <> I THEN 370
330  FOR J=1 TO N
340  Y[1,J]=W[J,1]
350  NEXT J
360  GOTO 440
370  FOR K=1 TO M
380  IF B[K] <> I THEN 430
390  FOR J=1 TO N
400  X[J,K+1]=W[J,1]
410  NEXT J
420  GOTO 440
430  NEXT K
440  NEXT I
450  FOR J=1 TO N
460  X[J,1]=1
470  NEXT J
900  MAT C=TRN(X)
910  MAT D=C*X
920  MAT E=INV(D)
925  MAT W=TRN(Y)
930  MAT F=C*W
940  MAT A=E*F
960  MAT T=Y*W
970  U=T[1]
980  V=T[1]
985  MAT G=TRN(A)
990  MAT T=G*F
1000  U=U-T[1]
1010  V=V-F[1]*F[1]/N
1020  R2=1-U/V
1030  U1=U/(N-M-1)
1040  FOR I=1 TO M+1
1042  E[I,I]=SQR(E[I,I]*U1)
1044  NEXT I
1050  PRINT "VARIABLE","COEFFICIENT","STD.ERROR","T-VALUE"
1051  PRINT "--------","-----------","---------","-------"
1070  PRINT "CONSTANT",A[1],E[1,1],A[1]/E[1,1]
1080  FOR I=2 TO M+1
1090  PRINT B[I-1],A[I],E[I,I],A[I]/E[I,I]
1100  NEXT I
1104  PRINT 
1105  PRINT "THE VALUE OF R-SQUARE IS",R2
1106  GOSUB 1300
1110  RESTORE 
1115  PRINT "DONE";
1116  INPUT A$
1117  IF A$[1,1]="N" THEN 80
1120  STOP 
1200  REM -- GIVE INSTRUCTIONS
1210  PRINT "DATA SHOULD BE ENTERED IN DATA STATEMENTS BETWEEN LINES"
1212  PRINT "2000 AND 3000."
1214  PRINT "USE THE FOLLOWING FORMAT:"
1216  PRINT "   VARIABLE 1: OBSERVATION 1, OBSERVATION 2, ETC."
1218  PRINT "   VARIABLE 2: OBSERVATION 1, OBSERVATION 2, ETC."
1220  PRINT "   AND SO ON."
1222  PRINT "WHEN YOU HAVE ENTERED YOUR DATA STATEMENTS, RUN THE"
1224  PRINT "PROGRAM AGAIN."
1230  STOP 
1300  REM*****SUBROUTINE TO CALCULATE RESIDUALS*****
1301  DIM S[90,1],R[90,1]
1305  PRINT 
1306  PRINT 
1310  PRINT "DO YOU WANT RESIDUALS";
1315  INPUT A$
1320  IF A$[1,1]="N" THEN 1450
1325  MAT S=ZER[N,1]
1330  MAT R=ZER[N,1]
1335  D=W=0
1340  MAT S=X*A
1350  MAT R=W-S
1355  PRINT 
1360  PRINT "OBSERVATION","OBSERVED","PREDICTED","RESIDUAL"
1370  PRINT "-----------","--------","---------","--------"
1380  FOR I=1 TO N
1390  PRINT I,W[I,1],S[I,1],R[I,1]
1400  IF I=1 THEN 1420
1410  D=D+(R[I,1]-R[I-1,1])^2
1420  W=W+(R[I,1])^2
1430  NEXT I
1435  PRINT 
1450  RETURN 
2000  DATA 225,323,424,268,224,331,254,492,167,226,210,289
2001  DATA 204,288,245,161,161,246,128,154,163,151,180,150
2005  DATA 190,210,275,200,199,178,157,351,163,148,134,212
2006  DATA 200,171,120,116,141,126,83,122,116,112,100,122
2010  DATA 205,241,256,201,209,267,185,365,145,170,128,200
2011  DATA 175,247,117,111,111,184,83,102,116,119,75,101
2015  DATA 24,24,24,24,24,24,24,24,29,29,29,29
2016  DATA 29,29,29,29,34,34,34,34,34,34,34,34
2020  DATA 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1
2025  DATA 0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1
2030  DATA 7.3,8.3,6.9,6.5,7.3,8.3,6.9,6.5,6.5,8.4,6.5,6.2
2031  DATA 6.5,8.4,6.5,6.2,7.2,8.1,6.6,6.1,7.2,8.1,6.6,6.1
2035  DATA 34,41,32,28,34,41,23,37,33,39,30,27
2036  DATA 37,43,30,19,32,42,29,24,32,36,29,24
2040  DATA 0,0,24,24,0,0,24,24,0,0,29,29
2041  DATA 0,0,29,29,0,0,34,34,0,0,34,34
9999  END 
