SUB REGRES(NR,NC,IT) DIM #3,B(250,15),Z(250),S$(3) COM (W) W(250,3) H9=.9E-38 IT=0 MAXC=15 AB$="PLEASE TYPE Y OR N" ON ERROR GOTO <> ! <<*DEP>> INPUT "ENTER THE DEPENDENT VARIABLE";IY IF IY<1 OR IY>NC THEN PRINT "YOUR DEPENDENT VARIABLE MUST BE "; & "BETWEEN 1 AND";NC \ PRINT "PLEASE TRY AGAIN" \ GOTO <> ! <<*IND>> INPUT "ENTER THE INDEPENDENT VARIABLE";IX IF IX<1 OR IY>NC THEN PRINT "YOUR INDEPENDENT VARIABLE MUST BE "; & "BETWEEN 1 AND";NC \ PRINT "PLEASE TRY AGAIN" \ GOTO <> IF IX=IY THEN PRINT "YOU HAVE TYPED THE SAME VARIABLE NUMBER FOR "; & "BOTH DEPENDENT AND" \ PRINT "INDEPENDENT VARIABLES. "; & "PLEASE TRY AGAIN" \ GOTO <> ! ! COMPUTE REGRESSION COEFFICINT AND Y INTERCEPT ! XSUM=0. \ YSUM=0. \ SSX=0. \ SSY=0. \ SXY=O. \ N=0 FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 GOTO <> N=N+1 \ XSUM=XSUM+B(I,IX) \ YSUM=YSUM+B(I,IY) IF N=1 GOTO <> Z=N \ Z1=Z/(Z-1.) \ & Y1=B(I,IY)-YSUM/Z \ SSY=SSY+Y1*Y1*Z1 \ & X1=B(I,IX)-XSUM/Z \ SSX=SSX+X1*X1*Z1 \ & SXY=SXY+Y1*X1*Z1 <<*NI1>> NEXT I IF N<2 THEN PRINT "NOT ENOUGH DATA EXISTS TO PERFORM REGRESSION" \ & PRINT \ GOTO <> RC=SXY/SSX \ & YINT=YSUM/Z-RC*XSUM/Z \ & PRINT \ & PRINT USING "Y INTERCEPT = ########.#####",YINT \ & PRINT USING "REGRESSION COEFFICIENT = ########.#####",RC \ PRINT ! ! COMPUTE OTHER REGRESSION STATISTICS ! R=SXY/(SQR(SSX)*SQR(SSY)) IF R>=.9995 OR R<=-.9995 THEN IS=1 \ T=9999999. \ SER=0. \ & SEE=0. \ GOTO <> IS=0 ! ! SUM OF SQUARES ATTRIBUTABLE TO REGRESSION ! S1=SSY*R**2 ! ! SUM OF SQUARES DEVIATIONS FROM REGRESSION ! S2=SSY-S1 SEE=SQR(S2/(Z-2.)) SER=SEE/SQR(SSX) \ & T=RC/SER <<*PRI>> PRINT USING "STD. ERROR OF REG. COEF. = #######.###",SER PRINT USING "COMPUTED T-VALUE = #######.###",T PRINT \ & PRINT USING "CORRELATION COEFFICIENT = #######.###",R PRINT USING "STD. ERROR OF ESTIMATE = #######.###",SEE PRINT IF IS=1 GOTO <> PRINT TAB(18);"ANALYSIS OF VARIANCE FOR THE REGRESSION" \ & PRINT \ & PRINT " SOURCE OF VARIATION D.F . SUM OF SQ. "+ & "MEAN SQ. F VALUE" \ & NDF=1 \ & F=S1/(S2/(Z-2.)) \ & M$="\ \ ### #######.### #######.### "+ & "######.###" PRINT USING M$,"ATTRIBUTABLE TO REGRESSION ",NDF,S1,S1,F PRINT USING M$,"DEVIATION FROM REGRESSION ",N-2,S2,S2/(Z-2.) PRINT USING M$,"TOTAL ",N-1,S1+S2 \ PRINT ! <<*TY1>> INPUT "DO YOU WISH TO PRINT TABLE OF RESIDUALS (Y/N)";A$ A$=LEFT(A$,1) IF A$="N" GOTO <> IF A$<>"Y" THEN PRINT AB$ \ GOTO <> PRINT \ & PRINT "ROW X VALUE Y OBSERVED Y ESTIMATED RESIDUAL "+ & "STD RESID" M$="### #######.#### #######.#### #######.#### #######.#### "+ & "#######.####" L=0 FOR I=1 TO NR IF B(I,IX)<>H9 AND B(I,IY)<>H9 GOTO <> IF NC> ELSE GOTO <> <<*OKK>> Y=YINT+RC*B(I,IX) \ & RES=B(I,IY)-Y \ & L=L+1 \ & Z(L)=RES SR=RES/SEE IF NC> NEXT I IF NC> ON ERROR GOTO <> IF NC=MAXC THEN PRINT "YOU CANNOT SAVE YOUR ESTIMATES. YOUR DATA" \ & PRINT "MATRIX ALREADY CONTAINS";MAXC;" COLUMNS" \ GOTO <> INPUT "DO YOU WISH TO SAVE YOUR ESTIMATES (Y/N)";L$ L$=LEFT(L$,1) IF L$="N" GOTO <> IF L$<>"Y" THEN PRINT AB$ \ GOTO <> IF A$="Y" GOTO <> ! ! NO TABLE OF RESIDUALS SO GET ESTIMATES NOW ! L=0 FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 THEN B(I,NC+1)=H9 \ GOTO <> B(I,NC+1)=YINT+RC*B(I,IY) \ & L=L+1 <<*NI5>> NEXT I B(0,NC+1)=L <<*DON>> NC=NC+1 \ & IT=5 PRINT "YOUR ESTIMATES OF VARIABLE";IY;" ARE NOW COLUMN";NC \ & PRINT "YOUR DATA MATRIX NOW HAS";NR;" ROWS AND";NC;" COLUMNS" \ & PRINT ! <<*PLO>> INPUT "DO YOU WISH TO PLOT Y OBSERVED AND Y ESTIMATED (Y/N)";L$ L$=LEFT(L$,1) IF L$="N" GOTO <> IF L$<>"Y" THEN PRINT AB$ \ GOTO <> ! ! BUILD FILE OF POINTS TO PLOT ! L=0 FOR I=1 TO NR IF B(I,IX)=H9 OR B(I,IY)=H9 GOTO <> L=L+1 W(L,0)=B(I,IX) \ & W(L,1)=B(I,IY) \ & W(L,2)=B(I,IX)*RC+YINT <<*NI3>> NEXT I ! ! SET UP SYMBOLS AND PLOT ! S$(1)="O" S$(2)="E" CALL PLOTER(S$(),L,2) ! <<*MOR>> INPUT "DO YOU WISH TO COMPUTE MORE REGRESSION (Y/N)";L$ L$=LEFT(L$,1) IF L$="Y" GOTO <> IF L$<>"N" THEN PRINT AB$ \ GOTO <> GOTO <> ! ! ERROR RECOVERY FOR FIRST PART OF PROGRAM ! <<*ERR>> IF ERL=<> OR ERL=<> THEN & PRINT "YOU TYPED CHARACTERS THAT CANNOT BE INTERPRETED. SEPARATE "+ & "TWO OR MORE" \ PRINT "NUMBERS WITH A COMMA, BUT DO NOT END A "+ & "LINE WITH A COMMA" \ PRINT "PLEASE TRY AGAIN" \ PRINT IF ERL=<> THEN RESUME <> IF ERL=<> THEN RESUME <> PRINT \ PRINT "CALCULATIONS CANNOT BE COMPLETED BECAUSE COMPUTATION"+ & " CREATED NUMBERS" \ PRINT "OUTSIDE THE RANGE OF THIS COMPUTER" \ & PRINT \I=ERR \ PRINT ERT$(I) \ & PRINT "REGRES ERROR";ERR;" AT LINE";ERL \ PRINT \ & PRINT "PLEASE RECORD THE ABOVE LINE AND CONTACT JOHN PENN IN BR "+ & "AT 3886" \ PRINT RESUME <> <<*REN>> SUBEND