Compucolor.org – Virtual Media

Listing of file='RGRESS.BAS;01' on disk='vmedia/taylor_4-sector.ccvf'

10 DIM X(20),Y(20),XT(20),YT(20)
20 FG =  0
100 PLOT 12,14,29,17,30,16
110 PRINT "LINEAR LEAST SQUARES REGRESSION"
120 PRINT
130 PRINT "FOUR DIFFERENT TYPES OF CURVE FIT ARE POSSIBLE:"
140 PRINT "1. LINEAR         Y = A * X + B"
150 PRINT "2. LOGARITHMIC    Y = A * LN(X) + B"
160 PRINT "3. EXPONENTIAL    Y = A * EXP(B*X)"
170 PRINT "4. POWER LAW      Y = A * X**B"
180 PRINT
190 INPUT "TYPE OF CURVE TO FIT (1-4) ? ";TY
195 IF (TY< 1)OR (TY> 4)GOTO 190
200 INPUT "NUMBER OF DATA POINTS = ";N
201 INPUT "INVERT X-VALUES (I.E. 1/X) (Y/N) ? ";IX$
202 INPUT "INVERT Y-VALUES (Y/N) ? ";IY$
210 PLOT 12
220 PRINT "ENTER DATA POINTS AS X,Y WHEN REQUESTED"
230 FOR I= 1TO N
240 PRINT "DATA POINT ";I;" = ";
250 INPUT  " ";X(I),Y(I)
252 XT(I) =  X(I): YT(I) =  Y(I)
255 IF  IX$ =  "Y" THEN  XT(I) =  1/ XT(I)
257 IF  IY$ =  "Y" THEN  YT(I) =  1/ YT(I)
260 NEXT I
270 IF TY< 3GOTO 310
280 FOR I= 1TO N
290 YT(I)= LOG (YT(I))
300 NEXT I
310 IF (TY= 1)OR (TY= 3)GOTO 350
320 FOR I= 1TO N
330 XT(I)= LOG (XT(I))
340 NEXT I
350 SX= 0:SY= 0:XY= 0
360 XX= 0:YY= 0:
365 PLOT  12:PRINT  TAB( 5);"X",TAB( 15);"Y"
370 FOR I= 1TO N
380 SX= SX+ XT(I)
390 SY= SY+ YT(I)
400 XY= XY+ XT(I)* YT(I)
410 XX= XX+ XT(I)^ 2
420 YY= YY+ YT(I)^ 2
425 PRINT  XT(I),TAB( 10);YT(I)
430 NEXT I
435 INPUT  "TYPE <RETURN> TO CONTINUE";A$
440 XM= SX/ N
450 YM= SY/ N
460 A= (N* XY- SX* SY)/ (N* XX- SX^ 2)
470 B= YM- A* XM
480 R= (XY- SX* SY/ N)/ SQR ((XX- SX^ 2/ N)* (YY- SY^ 2/ N))
500 IF TY< 3GOTO 520
510 B =  EXP (B)
520 PLOT 12: PRINT "FOR THE REGRESSION LINE: ";
521 ON  TY GOTO  522,524,526,528
522 PRINT "Y = A * X + B"
523 GOTO  530
524 PRINT "Y = A * LN(X) + B"
525 GOTO  530
526 PRINT "Y = B * EXP(A*X)"
527 GOTO  530
528 PRINT "Y = B * X^A"
530 PRINT "A = ";A
540 PRINT "B = ";B
550 PRINT :PRINT "CORRELATION COEFFICIENT = ";R
560 PRINT :INPUT "PLOT THE DATA (Y/N) ? ";A$
570 IF  A$ < >  "Y" THEN  END
600 M =  N- 1
610 FOR  J =  1 TO  M
620 K =  J+ 1
630 FOR  I= K TO  N
640 IF  X(J) < =  X(I) GOTO  710
650 T =  X(J)
660 X(J) =  X(I)
670 X(I) =  T
680 T =  Y(J)
690 Y(J) =  Y(I)
700 Y(I) =  T
710 NEXT  I
720 NEXT  J
730 X1 =  X(1)
740 X2 =  X(N)
750 Y1 =  Y(1)
760 Y2 =  Y(1)
770 FOR  I= 2 TO  N
780 IF  Y(I) <  Y1 THEN  Y1 =  Y(I)
790 IF  Y(I) >  Y2 THEN  Y2 =  Y(I)
800 NEXT  I
805 IF  (X1- INT (X1)) =  0 GOTO  820
810 IF  X1 <  0 THEN  X1 =  X1- 1
815 X1 =  INT (X1)
820 IF  (Y1- INT (Y1)) =  0 GOTO  835
825 IF  Y1 <  0 THEN  Y1 =  Y1- 1
830 Y1 =  INT (Y1)
835 IF  (X2- INT (X2)) =  0 GOTO  850
840 IF  X2 >  0 THEN  X2 =  X2+ 1
845 X2 =  INT (X2)
850 IF  (Y2- INT (Y2)) =  0 GOTO  865
855 IF  Y2 >  0 THEN  Y2 =  Y2+ 1
860 Y2 =  INT (Y2)
865 XS =  (X2- X1)/ 20
990 PLOT  12
1000 GOSUB  50000
1010 GOSUB  51000
1020 FOR  X= X1 TO  X2 STEP  XS
1030 ON  TY GOTO  1032,1034,1036,1038
1032 Y =  A* X+ B
1033 GOTO  1040
1034 Y =  A* LOG (X)+ B
1035 GOTO  1040
1036 Y =  B* EXP (A* X)
1037 GOTO  1040
1038 Y =  B* X^ A
1040 GOSUB  52000
1050 NEXT  X
1090 PLOT  29,20
1100 FOR  I= 1 TO  N
1110 X =  X(I)
1120 Y =  Y(I)
1130 ST =  1
1140 GOSUB  52000
1150 NEXT  I
1160 PLOT  29,18,3,0,0: INPUT "TYPE <RETURN>";A$
5000 END
50000 X0 =  10: Y0 =  10
50010 I1 =  100: I2 =  100
50020 GX =  100: GY =  100
50030 IF (FG< > 0) GOTO  50040
50035 GX =  2: GY =  2
50040 X3= I1/ (X2- X1)
50050 Y3= I2/ (Y2- Y1)
50100 ST= 1
50110 RETURN
51000 PLOT 15,29,17,2,250
51010 PLOT X0,Y0,X0+ I1
51020 PLOT 255,29,22,2,250,X0
51030 FOR  I= 1 TO  10:PLOT  Y0+ I* 10:PLOT  X0+ GX: NEXT  I
51040 PLOT 255,29,17,2
51050 PLOT 246
51060 PLOT Y0,X0,Y0+ I2
51070 PLOT 255,29,22,2,246,Y0
51080 FOR  I= 1 TO  10:PLOT  X0+ I* 10: PLOT  Y0+ GY: NEXT  I
51090 PLOT 255,29,19
51100 PLOT 3,3,30:PRINT X1
51110 PLOT 3,25,30:PRINT "X - AXIS"
51120 PLOT 3,53,30:PRINT X2
51130 PLOT 3,20,31:PRINT "X INCREMENT = ";(X2- X1)/ 10;
51140 PLOT 3,0,29:PRINT Y1
51150 D$ =  STR$ ((Y2- Y1)/ 10)
51160 PLOT 3,0,10,27,10:PRINT "Y - AXIS";
51170 PLOT 3,2,7:PRINT "Y INCREMENT =";D$;:PLOT 27,11
51180 PLOT 3,0,4:PRINT Y2
51190 PLOT 3,25,0:PRINT "X - Y PLOT";
51200 PLOT 8,29,18
51210 RETURN
52000 PLOT 2,242
52010 IF ST< > 0THEN PLOT 253
52020 X4= (X- X1)* X3+ X0
52030 IF X4> X0+ I1GOTO 52200
52040 IF X4< X0GOTO 52200
52050 Y4= (Y- Y1)* Y3+ Y0
52060 IF Y4> Y0+ I2GOTO 52200
52070 IF Y4< Y0GOTO 52200
52080 PLOT X4,Y4
52090 ST= 0
52100 PLOT 255
52110 RETURN
52200 ST= 1
52210 GOTO 52100