1  REM   REGRESSION PACKAGE TO ACCOMPANY THE FALLON CASE
2  REM   PROGRAMMED BY PIET VANDEN ABEELE   8/28/73
3  REM   CASE2:  36841A, 2/74  (FALLON, PART 3  OF 8)
10  FILES $FALFIL
20  DIM A[10],X[38,5],T[5,38],Y[38,1],D[5,5],P[5,5],E[38,1],H[38,1]
21  DIM F[5,1],G[5,1],B[10],V[38,1],A$[3],C[38,5],W[5,38],Q[5,5]
22  DIM M[5],S[5],B$[3],R[5,5],L[5,1],N[5,1],K[38,10],L$[70]
60  READ L$[1,42]
61  DIM C$[70]
70  DATA "TOT ADVMAL ADVTOT SALMAL SALCHANGE %TV HOM"
80  PRINT "DO YOU WANT INSTRUCTIONS";
90  INPUT B$
100  IF B$="YES" THEN 120
110  GOTO 1000
120  PRINT "THIS PROGRAM CONTAINS THE DATA APPEARING IN THE CASE"
121  PRINT "YOU CAN BUILD UP TO 4 VARIABLES OF YOUR OWN BY COMBINING"
122  PRINT "UP TO THREE VARIABLES FROM THE CASE INTO A NEW ONE"
123  PRINT "THE FOLLOWING STEPS SHOULD BE GONE THROUGH"
124  PRINT "    1 AFTER THESE INSTRUCTIONS THE PROGRAM WILL TERMINATE"
125  PRINT "    2 SPECIFY THE FUNCTIONAL EXPRESSION OF YOUR NEW VARIABLES"
126  PRINT "      (D) AS A FUNCTION OF THE ARGUMENTS A,B AND C IN LINES"
127  PRINT "      1410,1420,1430 AND 1440. WHEN RUNNING THE PROGRAM YOU"
128  PRINT "      WILL BE ASKED TO GIVE A NAME TO D AND TO SPECIFY WHICH"
129  PRINT "      VARIABLES A,B AND C ARE."
130  PRINT "EXAMPLE"
131  PRINT "-------"
132  PRINT "    YOU WANT TO CREATE TWO NEW VARIABLES"
133  PRINT "          TOTAL SALES - TOTAL ADVERTISING"
134  PRINT "    AND"
135  PRINT "          TOTAL SALES * % CHANGE /% TV HOMES"
136  PRINT "    THE APPROPRIATE STATEMENTS ARE"
137  PRINT "          1410 D=A-B"
138  PRINT "          1420 D=A*B/C"
140  GOTO 9999
1000  PRINT "DO YOU WANT TO CREATE NEW VARIABLES";
1010  INPUT B$
1020  IF B$="YES" THEN 1040
1030  I1=0
1035  GOTO 1045
1040  PRINT "HOW MANY";
1041  INPUT I1
1045  MAT K=ZER[38,6+I1]
1050  FOR I=1 TO 6
1060  FOR J=1 TO 38
1070  READ #1;K[J,I]
1080  NEXT J
1090  NEXT I
1100  IF I1=0 THEN 2000
1110  PRINT "AVAILABLE VARIABLES ARE"
1120  FOR I=1 TO 6
1121  PRINT "#";I;L$[(I-1)*7+1,I*7]
1122  NEXT I
1150  FOR I=1 TO I1
1160  PRINT "INPUT THE NAME OF YOUR VARIABLE#";6+I;"(7 CHARACTERS)"
1170  INPUT L$[(6+I-1)*7+1,(6+I)*7]
1171  IF I1>1 THEN 1190
1180  PRINT "INPUT THE #'S CORRESPONDING TO A, B AND C FOR ";L$[(5+I)*7+1,(6+I)*7]
1181  PRINT "      (INPUT 0 IF YOU DON'T USE ONE)"
1190  PRINT "A---#";
1200  INPUT K1
1210  PRINT "B---#";
1220  INPUT K2
1230  PRINT "C---#";
1240  INPUT K3
1250  FOR J=1 TO 38
1260  IF K1=0 THEN 1280
1270  A=K[J,K1]
1280  IF K2=0 THEN 1300
1290  B=K[J,K2]
1300  IF K3=0 THEN 1320
1310  C=K[J,K3]
1320  GOTO I OF 1410,1420,1430,1440
1410  REM
1411  K[J,6+I]=D
1412  GOTO 1450
1420  REM
1421  K[J,6+I]=D
1422  GOTO 1450
1430  REM
1431  K[J,6+I]=D
1432  GOTO 1450
1440  REM
1441  K[J,6+I]=D
1450  NEXT J
1460  NEXT I
2000  K8=6+I1
2010  PRINT "THE FOLLOWING VARIABLES ARE NOW AVAILABLE"
2020  FOR I=1 TO K8
2030  PRINT "#";I;L$[(I-1)*7+1,I*7]
2040  NEXT I
2041  PRINT "DO YOU WANT LINEAR REGRESSION (0) OR LOG-LINEAR(1)";
2042  INPUT I1
2043  PRINT "HOW MANY INDEPENDENT VARIABLES(EXCLUDING INTERCEPT)";
2044  INPUT I2
2045  N=38
2050  MAT X=ZER[N,I2+1]
2060  MAT T=ZER[I2+1,N]
2070  MAT Y=ZER[N,1]
2080  MAT D=ZER[I2+1,I2+1]
2090  MAT P=ZER[I2+1,I2+1]
2100  MAT E=ZER[N,1]
2110  MAT H=ZER[N,1]
2120  MAT F=ZER[I2+1,1]
2130  MAT G=ZER[I2+1,1]
2140  PRINT "INPUT THE # OF YOUR INDEPENDENT VARIABLES"
2150  FOR I3=1 TO I2
2160  PRINT "#";I3;"--?";
2170  INPUT A[I3]
2171  C$[(I3-1)*7+1,I3*7]=L$[(A[I3]-1)*7+1,A[I3]*7]
2180  NEXT I3
2190  FOR I3=1 TO N
2200  LET X[I3,1]=1
2210  FOR J=1 TO I2
2220  IF I1=1 THEN 2250
2230  X[I3,J+1]=K[I3,A[J]]
2240  GOTO 2260
2250  IF K[I3,A[J]]>0 THEN 2258
2251  PRINT "CANNOT TAKE LOG OF NEGATIVE QUANTITY"
2252  GOTO 2850
2258  X[I3,J+1]=LOG(K[I3,A[J]])
2260  NEXT J
2320  NEXT I3
2330  PRINT "WHICH IS YOUR DEPENDENT VARIABLE?";
2340  INPUT I5
2350  FOR I=1 TO N
2360  IF I1=1 THEN 2380
2370  Y[I,1]=K[I,I5]
2375  GOTO 2420
2380  IF K[I,I5]>0 THEN 2388
2381  GOTO 2251
2388  Y[I,1]=LOG(K[I,I5])
2420  NEXT I
2430  PRINT "DO YOU WANT THE CORRELATION MATRIX"
2440  INPUT B$
2450  GOTO 2890
2460  MAT T=TRN(X)
2470  MAT D=T*X
2480  MAT P=INV(D)
2490  MAT F=T*Y
2500  MAT G=P*F
2510  MAT H=X*G
2520  MAT E=Y-H
2530  LET D6=D7=0
2540  LET D9=0
2550  FOR I6=1 TO N
2560  LET D6=D6+E[I6,1]^2
2570  NEXT I6
2580  LET D7=D6/(N-I2-1)
2590  LET D8=0
2600  FOR I6=1 TO N
2610  LET D8=D8+Y[I6,1]^2
2620  LET D9=D9+Y[I6,1]
2630  NEXT I6
2640  LET D8=D8-((D9)^2)/N
2650  LET R2=1-D6/D8
2660  PRINT 
2670  PRINT 
2680  PRINT "**********************************************************************"
2690  PRINT 
2700  PRINT "VARIABLE","COEFFICIENT","B=VALUE","S-ERROR","T-VALUE"
2710  PRINT "--------","-----------","-------","--------","------"
2720  PRINT 
2730  PRINT  USING 2764;G[1,1],SQR(D7*P[1,1]),G[1,1]/SQR(D7*P[1,1])
2740  FOR I6=1 TO I2
2741  O1=SQR(D7*P[I6+1,I6+1])
2750  PRINT  USING 2765;C$[(I6-1)*7+1,I6*7],G[I6+1,1],N[I6,1],O1,G[I6+1,1]/O1
2760  NEXT I6
2764  IMAGE "INTCEPT",10X,3D.3D,21X,3D.3D,8X,3D.3D
2765  IMAGE7A,10X,3D.3D,6X,3D.3D,8X,3D.3D,8X,3D.2D
2770  PRINT 
2780  PRINT 
2790  PRINT  USING 2791;R2
2791  IMAGE "R2.................",3D.3D
2800  R3=1-(1-R2)*((N-1)/(N-I2-1))
2801  PRINT  USING 2802;R3
2802  IMAGE  "ADJUSTED R2 .......",3D.3D
2809  R4=(R2/(I2))/((1-R2)/(N-I2-1))
2810  PRINT  USING 2811;I2,N-I2-1,R4
2811  IMAGE "F(",D,",",2D,")","............",3D.3D
2820  PRINT  USING 2821;D7
2821  IMAGE"ERROR VARIANCE.....",3D.3D
2830  PRINT 
2840  PRINT "......................................................................."
2850  PRINT "DO YOU WANT ANOTHER RUN"
2860  INPUT A$
2870  IF A$="YES" THEN 2041
2880  GOTO 3480
2890  MAT C=ZER[N,I2]
2900  MAT W=ZER[I2,N]
2910  MAT Q=ZER[I2,I2]
2920  MAT M=ZER[I2]
2930  MAT S=ZER[I2]
2940  FOR J=1 TO I2
2950  LET M[J]=0
2960  LET S[J]=0
2970  FOR I=1 TO N
2980  LET M[J]=M[J]+X[I,J+1]/N
2990  NEXT I
3000  LET S[J]=0
3010  FOR I=1 TO N
3020  LET S[J]=S[J]+((X[I,J+1]-M[J])^2)/N
3030  NEXT I
3040  LET S[J]=SQR(S[J])
3050  NEXT J
3060  FOR J=1 TO I2
3070  FOR I=1 TO N
3080  LET C[I,J]=(X[I,J+1]-M[J])/S[J]
3090  NEXT I
3100  NEXT J
3110  MAT W=TRN(C)
3120  MAT Q=W*C
3130  MAT R=ZER[I2,I2]
3140  MAT R=INV(Q)
3150  LET T1=T2=0
3160  MAT L=ZER[I2,1]
3170  FOR I=1 TO N
3180  LET T1=T1+Y[I,1]
3190  LET T2=T2+(Y[I,1]^2)
3200  NEXT I
3210  LET T2=SQR((T2-((T1)^2)/N)/N)
3220  LET T1=T1/N
3230  MAT V=ZER[N,1]
3240  FOR I=1 TO N
3250  LET V[I,1]=(Y[I,1]-T1)/T2
3260  NEXT I
3270  MAT L=W*V
3280  MAT N=ZER[I2,1]
3290  MAT N=R*L
3300  IF B$="YES" THEN 3320
3310  GOTO 2460
3320  PRINT 
3330  PRINT 
3340  PRINT "CORRELATION MATRIX"
3350  FOR I=1 TO I2
3360  PRINT  USING 3371;C$[(I-1)*7+1,I*7]
3370  NEXT I
3371  IMAGE#,7A,8X
3380  PRINT 
3390  FOR I=1 TO I2
3400  FOR J=1 TO I2
3410  LET Q[I,J]=Q[I,J]/N
3420  NEXT J
3430  NEXT I
3440  PRINT 
3450  MAT  PRINT Q
3460  PRINT 
3470  GOTO 2460
3480  END 
9999  END 
