Scientific statistical analysis.
Appears on
Library tape from the Sinclair Computer Users Society (SINCUS).
Source Code
10 REM STATISTICS PROGRAM 21 BEEP .9,28: PAPER 0: BORDER 0: INK 6: CLS : PRINT INVERSE 1;AT 10,5;" STATISTICAL ANALYSIS " 25 POKE 23658,8: LET CPY=0 30 BEEP .8,30: PRINT INK 7'''" WOULD YOU LIKE INSTRUCTIONS?"''TAB 12;"(Y/N)" 40 PAUSE 0: IF INKEY$="Y" THEN CLS : GO TO 8000 50 IF INKEY$="N" THEN GO TO 70 60 GO TO 40 70 REM DATA INPUT, STORAGE, PRINTING, READ GRAPHICS. 75 POKE 26564,35: PAPER 6: INK 1: BORDER 6: CLS 80 RESTORE : FOR f=0 TO 2: FOR g=0 TO 7: READ a: POKE USR CHR$ (144+f)+g,a: NEXT g: NEXT f 90 BEEP .7,25: PRINT INK 1;" STATISTICAL ANALYSIS OF DATA BY GREG TURNBULL 1983."; OVER 1;AT 0,0;"________________________________"; OVER 1;AT 1,0;"________________________________"'' 95 PRINT AT 5,0;"DO YOU WISH TO LOAD IN OLD DATA THAT WAS SAVED? (Y/N)": PAUSE 0: IF INKEY$="Y" THEN GO TO 175 100 PRINT AT 5,0;"TYPE IN YOUR TOTAL NUMBER OF DATA PAIRS (N) ": INPUT r: PRINT "N=";r'': LET A=r 120 PRINT INK 1;"TYPE IN YOUR X AND Y VALUES (ENTER EACH ONE):"'' 130 PRINT INK 3;"NOTE:IF YOU MAKE A MISTAKE WRITE IT DOWN AND YOU WILL BE ABLE TO ALTER IT LATER." 150 DIM X(A,2): PRINT : FOR N=1 TO A: INPUT "x: ";x;" y: ";y: LET X(N,1)=x: LET X(n,2)=y: GO SUB 160: NEXT N: GO TO 180 160 PRINT INK 1;"N:";n;TAB 6;"x:";X(n,1),"y:";X(n,2): RETURN 175 CLS : PRINT AT 10,0;"PRESS ENTER AND PLAY DATA TAPE": PAUSE 0: LOAD "S.A. DATA" DATA X() 180 ON ERR GO TO 190: FOR N=1 TO 999: LET A=X(N,1): NEXT N 190 ON ERR RESET : PAUSE 90: CLS : PRINT "DATA"'': LET A=N-1: DIM B(A): DIM C(A): FOR N=1 TO A: LET B(N)=X(N,1): LET C(N)=X(N,2): GO SUB 160: NEXT N 200 REM CHOICE OF ALTERING DATA 210 BEEP .3,30: PRINT INK 2;"WOULD YOU LIKE TO ALTER ANY DATA? (Y/N):": INPUT Q$: CLS 220 IF Q$="Y" THEN GO TO 250 230 IF Q$="N" THEN GO TO 700 240 GO TO 210 250 PRINT "WOULD YOU LIKE TO CHANGE x OR y VALUES? (x/y):": INPUT V$: CLS 260 IF V$="Y" THEN GO TO 410 270 IF V$="X" THEN GO TO 290 280 GO TO 250 290 BEEP .3,30: PRINT INK 1;"CHANGE AN x VALUE:"; OVER 1;AT 0,0;" "'' 300 PRINT "INPUT THE DATA ROW NUMBER FOR THE CHANGE (N):": INPUT N: CLS 305 IF N>A THEN GO TO 300 310 PRINT "INPUT THE x VALUE YOU WANT FOR THIS ROW (x):": INPUT W: CLS 320 LET X(N,1)=W: LET B(N)=W 330 PRINT "DO YOU WANT TO ALTER ANY MORE x VALUES? (Y/N):": INPUT Q$: CLS 340 IF Q$="Y" THEN GO TO 290 350 IF Q$="N" THEN GO TO 370 360 GO TO 330 370 PRINT "DO YOU WANT TO ALTER ANY y VALUES?(Y/N):": INPUT Q$: CLS 380 IF Q$="Y" THEN GO TO 410 390 IF Q$="N" THEN GO TO 530 400 GO TO 370 410 BEEP .3,30: PRINT INK 1;"CHANGE A y VALUE:"; OVER 1;AT 0,0;"________________"'' 420 PRINT "INPUT THE DATA ROW NUMBER FOR THE CHANGE (N):": INPUT N: CLS 425 IF N>A THEN GO TO 420 430 PRINT "INPUT THE y VALUE YOU WANT FOR THIS ROW (y):": INPUT V: CLS 440 LET X(N,2)=V: LET C(N)=V 450 PRINT "DO YOU WANT TO ALTER ANY MORE y VALUES? (Y/N):": INPUT Q$: CLS 460 IF Q$="Y" THEN GO TO 410 470 IF Q$="N" THEN GO TO 490 480 GO TO 450 490 PRINT "DO YOU WANT TO ALTER ANY x VALUES? (Y/N):": INPUT Q$: CLS 500 IF Q$="Y" THEN GO TO 290 510 IF Q$="N" THEN GO TO 530 520 GO TO 490 530 PRINT INK 3;"NEW DATA VALUES:"; OVER 1;AT 0,0;"_______________"'' 540 FOR N=1 TO A 550 PRINT "N:";n;" ";"x:";X(n,1),"y:";X(n,2) 560 NEXT n 570 PRINT : PRINT INK 2;"WOULD YOU LIKE TO ALTER ANY FURTHER DATA? (Y/N):": INPUT Q$: CLS 580 IF Q$="Y" THEN GO TO 250 590 IF Q$="N" THEN GO TO 700 595 GO TO 570 600 REM DATA FOR GRAPHICS. 610 DATA 0,126,66,32,24,32,66,126 620 DATA 255,0,195,102,60,60,102,195 630 DATA 255,0,195,102,60,24,48,224 650 REM COPY DATA TO PRINTER. 655 IF CPY=1 THEN COPY : CLS : RETURN 660 INPUT "ENTER TO CONTINUE, Z TO COPY";W$ 670 IF W$="z" THEN COPY : CLS : RETURN 680 IF W$="" THEN CLS : RETURN 690 GO TO 650 700 PRINT PAPER 1; INK 6; FLASH 1;"PLEASE WAIT."'': PRINT PAPER 6; INK 1; FLASH 0;"THE COMPUTER IS CALCULATING THE STATISTICAL VALUES."'' 710 GO SUB 7000: CLS 720 REM MENU OF CHOICES. 730 CLS : BEEP .3,30: PRINT INK 1;"WHICH TYPE OF ANALYSIS WOULD YOU LIKE?"'' 740 PRINT INK 2;"A) DESCRIPTIVE STATISTICS:"'': PRINT INK 1;"TYPE IN '1' FOR MEAN,SD,CV(%), SEM & F-TEST:": PRINT "TYPE IN '2' TO PRINT THE DATA": PRINT "TYPE IN '3' FOR MIN,MAX & MEDIAN"'' 750 PRINT INK 2;"B) STATISTICAL ANALYSIS:"'': PRINT INK 1;"TYPE IN '4' FOR REGRESSION AND CORRELATION": PRINT "TYPE IN '5' FOR 2-SAMPLE t-TEST"'' 760 PRINT INK 2;"C) GRAPHS:"'': INK 1: PRINT "TYPE IN '6' FOR A LINE GRAPH"'"TYPE IN '7' FOR A BAR CHART"'': PRINT INK 3;"TYPE IN '0' TO SAVE DATA/RESTART" 770 INPUT W$: IF W$="" THEN GO TO 720 780 LET W=VAL W$: CLS 790 IF W=0 THEN GO TO 6000 800 IF W>0 AND W<4 THEN GO TO 800+W*100 810 IF W>4 AND W<7 THEN GO TO 1000+W*100 820 IF W=4 THEN GO TO 1300 830 IF W=7 THEN GO TO 2000 840 IF W>7 THEN GO TO 720 900 REM START OF DESCRIPTIVE STATISTICS 910 REM MEANS SD. CV(%) SEM F-TEST. 915 BEEP .3,30: PRINT INK 3;"DESCRIPTIVE STATISTICS:"; OVER 1;AT 0,0;"______________________"'' 920 LET s3=INT (s3*10^5+.5)/(10^5): LET s4=INT (s4*10^5+.5)/(10^5) 930 LET v1=INT (v1*10^3+.5)/(10^3): LET v2=INT (v2*10^3+.5)/(10^3) 940 LET s5=INT (s5*10^5+.5)/(10^5): LET s6=INT (s6*10^5+.5)/(10^5) 950 LET h1=s3^2: LET h2=s4^2 955 IF h1>h2 OR h1=h2 THEN LET h3=h1/h2 960 IF h2>h1 THEN LET h3=h2/h1 965 LET h3=INT (h3*10^4+.5)/(10^4): LET h4=A-1 970 PRINT "N=";A;" \b=";P;" \c=";q: PRINT '"S.D. of x=";s3: PRINT "CV(%) of x=";v1: PRINT "S.E.M for x=";s5 975 PRINT '"S.D. of y=";s4: PRINT "CV(%) of y=";v2: PRINT "S.E.M for y=";s6'' 980 PRINT INK 3;AT 12,0;"F-TEST:"; OVER 1;AT 12,0;"______"'': PRINT INK 1;"A TEST TO COMPARE THE PRECISION OF x WITH THAT OF y.": PRINT "THE F VALUE=";h3: PRINT "FOR DF1 & DF2 OF:";h4: PRINT "THIS VALUE CAN BE LOOKED UP IN F-TABLES TO FIND A PROBABILITY (P) VALUE FOR SIGNIFICANCE TESTING." 990 GO SUB 650: GO TO 720 1000 REM PRINT DATA 1010 BEEP .3,30: PRINT INK 2;"DATA:"; OVER 1;AT 0,0;" "'' 1020 IF A<21 THEN GO TO 1060 1030 LPRINT "DATA."; OVER 1;AT 0,0;" "'': FOR n=1 TO A 1040 LPRINT "N:";n;TAB 6;"x:";X(n,1),"y:";X(n,2) 1050 NEXT n: GO TO 1090 1060 FOR n=1 TO A 1070 PRINT "N:";n;TAB 6;"x:";X(n,1),"y:";X(n,2) 1080 NEXT n 1090 GO SUB 650: GO TO 720 1100 REM DATA SORTING INTO DESCENDING ORDER . PRINT RANKED DATA. 1110 PRINT PAPER 1; INK 7; FLASH 1;"PLEASE WAIT."'': PRINT PAPER 6; INK 1; FLASH 0;"THE COMPUTER IS RANKING THE DATA" 1112 LET mm=A 1113 LET mm=INT (mm/2) 1114 IF mm=0 THEN GO TO 1130 1115 LET kk=A-mm 1116 LET jj=1 1117 LET ii=jj 1118 LET ll=ii+mm 1119 IF B(ii)>=B(ll) THEN GO TO 1124 1120 LET tt=B(ll): LET B(ll)=B(ii): LET B(ii)=tt 1121 LET ii=ii-mm 1122 IF ii<1 THEN GO TO 1124 1123 IF NOT ii<1 THEN GO TO 1118 1124 LET jj=jj+1 1125 IF jj>kk THEN GO TO 1113 1126 GO TO 1117 1130 REM SORT Y VALUES 1131 LET mm=A 1132 LET mm=INT (mm/2) 1133 IF mm=0 THEN GO TO 1160 1134 LET kk=A-mm 1135 LET jj=1 1136 LET ii=jj 1137 LET ll=ii+mm 1138 IF C(ii)>=C(ll) THEN GO TO 1143 1139 LET tt=C(ll): LET C(ll)=C(ii): LET C(ii)=tt 1140 LET ii=ii-mm 1141 IF ii<1 THEN GO TO 1143 1142 IF NOT ii<1 THEN GO TO 1137 1143 LET jj=jj+1 1144 IF jj>kk THEN GO TO 1132 1145 GO TO 1136 1150 REM PRINT SORTED DATA 1160 CLS : BEEP .3,30: PRINT INK 3;"RANKED DATA:"; OVER 1;AT 0,0;"___________"'' 1165 FOR l=1 TO A 1170 PRINT "n:";l;TAB 6;"x:";B(l),"y:";C(l) 1180 NEXT l 1190 GO SUB 650 1200 REM MIN,MAX AND MEDIANS. 1205 PRINT INK 3;"MIN, MAX, MEDIANS:"; OVER 1;AT 0,0;"_________________"'' 1210 LET s=A/2: IF s=INT s THEN GO TO 1230 1220 LET M1=B(s): LET M2=C(s): GO TO 1240 1230 LET w=A/2: LET v=A/2+1: LET M1=(B(w)+B(v))/2: LET M2=(C(w)+C(v))/2 1240 PRINT "MEDIAN OF x=";M1: PRINT "MINIMUM VALUE OF x IS ";B(A): PRINT "MAXIMUM VALUE OF x IS ";B(1)'' 1250 PRINT "MEDIAN OF y=";M2'"MINIMUM VALUE OF y=";C(A)'"MAXIMUM VALUE OF y IS ";C(1)'' 1260 LET M1=INT (M1*10+.5)/10: IF M1=INT (p*10+.5)/10 OR M1-.1=INT (p*10+.5)/10 OR M1-.1=INT (p*10+.5)/10 THEN PRINT "median of x approx' equal to mean of x indicating normally distributed x data."'' 1270 LET M2=INT (M2*10+.5)/10: IF M2=INT (q*10+.5)/10 OR M2+.1=INT (q*10+.5)/10 OR M2-.1=INT (q*10+.5)/10 THEN PRINT "median of y approx' equal to mean of y indicating normally distributed y data."'' 1280 GO SUB 650: GO TO 720 1300 REM START OF STATISTICAL ANALYSIS. 1310 REM REGRESSION AND CORRELATION. 1320 BEEP .3,30: PRINT INK 3;"REGRESSION AND CORRELATION:"'' 1330 LET E=INT (E*10^5+.5)/(10^5): LET D=INT (D*10^5)/(10^5): LET U=INT (U*10^5)/(10^5) 1340 PRINT "\ax=";t1,"\ax*x=";t3,"\ay=";t2,"\ay*y=";t4,"\ax*y=";t5 1350 PRINT "n=";A;" \b=";p;" \c=";q'': PRINT INK 0;"FOR y=b*x+c"'': PRINT "b=";D,"","c=";E: PRINT '' INK 3;"COR. COEFF'"; INK 1''"r=";U'' 1360 IF D>.75 AND U>.75 THEN PRINT "b and r are >.75 indicating a strong positive linear correlation between x and y."'' 1370 IF D<-.75 AND U<-.75 THEN PRINT "b and r are <-.75 indicating a strong negative linear correlation between x and y."'' 1375 IF D<.75 AND U>.75 THEN PRINT "correlation coefficient (r)<.75 indicating a strong positive relationship between x and y." 1380 IF U=0 THEN PRINT "r=0 this indicates that x and y are totally uncorrelated." 1390 GO SUB 650: GO TO 720 1500 REM t-TEST AND DF. 1510 BEEP .3,30: PRINT INK 3;"2-SAMPLE t-TEST:"'' 1515 LET T=INT (T*10^5+.5)/(10^5) 1520 PRINT INK 0;"for DF=";U2'' 1530 PRINT INK 0;"THE VALUE OF t=";T'' 1540 PRINT INK 1;"LOOK UP YOUR t VALUE IN t-TABLESFOR THE ABOVE DF, AND FIND THE PROBABILITY VALUE (P) FOR SIGNIFICANCE TESTING."'' 1550 GO SUB 650: GO TO 720 1600 REM START OF GRAPHICAL SECTION. 1605 REM DRAW LINE GRAPH. 1610 BEEP .3,32: PRINT INK 3;"A LINE GRAPH OF x,y:"; OVER 1;AT 0,0;" "'' 1620 PRINT INK 1;"HAVE YOU BEEN VIA THE MEDIANS ROUTINE? (Y/N)"''"THIS IS BECAUSE THE MAXIMUM AND MINIMUM VALUES ARE NEEDED FOR THE BARCHART."'': PAUSE 0 1625 IF INKEY$="N" THEN GO TO 720 1630 IF NOT INKEY$="Y" THEN CLS : GO TO 1600 1635 FOR N=1 TO 20: NEXT N 1640 PRINT ''"TYPE IN THE NAME OF THE x-AXIS": INPUT A$ 1650 PRINT '"TYPE IN THE NAME OF THE y-AXIS": INPUT B$: CLS 1660 LET F=B(1): LET G=C(1) 1670 IF F>26 THEN LET F=26 1680 IF G>18 THEN LET G=18 1690 FOR O=17 TO (8*F+40): PLOT O,9: NEXT O 1700 FOR M=9 TO (8*G+22): PLOT 17,M: NEXT M 1710 PRINT AT 21,3;A$: PRINT AT 18-G,2;B$: PRINT AT 19-G,0;G: PRINT AT 21,2.5+F;F: PRINT AT 21,1;"0" 1720 FOR n=1 TO A 1730 IF X(n,1)>=26 OR X(n,2)>=18 THEN PRINT AT 19,3;"DATA IS TOO LARGE": GO SUB 650: GO TO 720 1735 BEEP .02,12: INK 2: OVER 0: CIRCLE 8*X(n,1)+17,8*X(n,2)+9,2 1740 NEXT n 1750 IF p>10 OR q>10 THEN PRINT AT 19,3;"MEAN VALUES ARE TOO LARGE": GO SUB 650: GO TO 720 1760 FOR Z=1 TO 20: BEEP .05,50-z: NEXT z: INK 1: PLOT 17,8*E: DRAW p+16*p,q+16*p: PAUSE 200 1770 GO SUB 650: GO TO 720 2000 REM BAR CHART. 2010 BEEP .3,30: PRINT INK 3;"BAR CHART."; OVER 1;AT 0,0;"_________"'' 2020 PRINT INK 1;"HAVE YOU BEEN VIA THE MEDIANS ROUTINE? (Y/N)"''"THIS IS BECAUSE THE MAXIMUM AND MINIMUM VALUES ARE NEEDED FOR THE BARCHART."'': PAUSE 0 2040 IF INKEY$<>"Y" THEN GO TO 720 2060 PRINT INK 1;"WOULD YOU LIKE A BAR CHART OF THE x OR y DATA? TYPE IN x OR y OR PRESS ENTER TO RETURN:"'': INPUT z$: CLS 2070 IF z$="X" THEN GO TO 2095 2080 IF z$="Y" THEN GO TO 2500 2085 IF z$="" THEN GO TO 720 2090 GO TO 2060 2095 PRINT FLASH 1;"PLEASE WAIT ."'' FLASH 0;"THIS MAY TAKE SOME TIME!" 2096 REM CALCULATE X VALUES. 2100 LET minx=B(A): LET maxx=B(1): DIM R(15): DIM L(16): LET divx=(maxx-minx)/15 2110 FOR B=1 TO 15: FOR n=1 TO A 2120 LET P9=0: LET R9=minx+divx 2125 IF B=15 THEN LET R9=R9+.000001 2130 IF X(n,1)>=minx AND X(n,1)<R9 THEN LET P9=P9+1: LET R(B)=R(B)+P9: LET L(B)=L(B)+P9 2140 NEXT n 2150 LET minx=minx+divx 2160 NEXT B 2165 PRINT "NEARLY FINISHED." 2170 FOR J=1 TO 15: FOR K=1 TO 15 2180 LET l=0: IF L(K+1)>L(K) THEN LET l=L(K): LET L(K)=L(K+1): LET L(K+1)=l 2190 NEXT K: NEXT J 2200 LET highx=L(1): LET scalex=1 2210 IF highx>18 THEN LET scalex=scalex+1: LET highx=highx-18: GO TO 2210 2250 GO TO 3000 2500 PRINT FLASH 1;"PLEASE WAIT."'' FLASH 0;"THIS MAY TAKE SOME TIME!" 2505 REM CALCULAT y VALUES. 2510 LET miny=C(A): LET maxy=C(1): DIM S(15): DIM M(16): LET divy=(maxy-miny)/15 2520 FOR B=1 TO 15: FOR n=1 TO A 2530 LET P9=0: LET R9=miny+divy 2535 IF B=15 THEN LET R9=R9+.000001 2540 IF X(n,2)>=miny AND X(n,2)<R9 THEN LET P9=P9+1: LET S(B)=S(B)+P9: LET M(B)=M(B)+P9 2550 NEXT n 2560 LET miny=miny+divy 2570 NEXT B 2575 PRINT "NEARLY FINISHED." 2580 FOR J=1 TO 15: FOR K=1 TO 15 2590 LET l=0: IF M(K+1)>M(K) THEN LET l=M(K): LET M(K)=M(K+1): LET M(K+1)=l 2600 NEXT K: NEXT J 2610 LET highy=M(1): LET scaley=1 2620 IF highy>18 THEN LET scaley=scaley+1: LET highy=highy-18: GO TO 2620 2630 GO TO 3500 3000 REM DRAW BAR CHART OF x . 3010 IF scalex=1 THEN GO TO 3030 3020 FOR B=1 TO 15: LET R(B)=INT (R(B)/scalex+.5): NEXT B 3030 BEEP .5,20: CLS : DIM J$(18): PRINT "INPUT THE NAME OF THE HORIZONTAL(x) AXIS:": INPUT I$ 3040 PRINT "INPUT THE NAME OF THE VERTICAL (y) AXIS:": INPUT J$: CLS 3050 BEEP .3,30: PLOT 16,16: DRAW 0,143: PLOT 16,16: DRAW 239,0: PRINT AT 0,4;"BAR CHART OF x.": PRINT AT 19,1;"0": PRINT AT 20,2;B(A): PRINT AT 20,28;B(1): PRINT AT 21,6;I$: FOR z=0 TO 17: PRINT AT z+4,0;J$(z+1): NEXT z: PRINT AT 2,0;18*scalex 3055 LET sp=2 3060 FOR B=1 TO 15 3065 IF R(B)=0 THEN LET sp=sp+2: GO TO 3110 3070 FOR J=1 TO R(B) 3080 PRINT INK 2;AT 20-J,sp;" ": PRINT INK 2;AT 20-J,sp+1;" " 3090 NEXT J 3100 LET sp=sp+2 3110 NEXT B 3150 GO SUB 650: CLS : GO TO 2060 3500 REM DRAW BAR CHART OF y. 3510 IF scaley=1 THEN GO TO 3530 3520 FOR B=1 TO 15: LET S(B)=INT (S(B)/scaley+.5): NEXT B 3530 BEEP .25,20: CLS : DIM K$(18): PRINT "INPUT THE NAME OF THE HORIZONTAL(x) AXIS:": INPUT I$ 3540 PRINT "INPUT THE NAME OF THE VERTICAL (y) AXIS:": INPUT K$: CLS 3550 BEEP .2,30: PLOT 16,16: DRAW 0,143: PLOT 16,16: DRAW 239,0: PRINT AT 0,4;"A BAR CHART OF y.": PRINT AT 19,1;"0": PRINT AT 20,2;C(A): PRINT AT 20,28;C(1): PRINT AT 21,6;I$: FOR z=0 TO 17: PRINT AT z+4,0;K$(z+1): NEXT z: PRINT AT 2,0;18*scaley 3560 LET sp=2 3570 FOR B=1 TO 15 3580 IF S(B)=0 THEN LET sp=sp+2: GO TO 3630 3590 FOR J=1 TO S(B) 3600 PRINT INK 2;AT 20-J,sp;" ": PRINT INK 2;AT 20-J,sp+1;" " 3610 NEXT J 3620 LET sp=sp+2 3630 NEXT B 3650 GO SUB 650: CLS : GO TO 2060 6000 REM EXIT. 6010 PRINT "DO YOU WISH TO:"''" SAVE THE DATA (Y/N)": INPUT Y$: CLS 6020 IF Y$="N" THEN GO TO 6050 6030 IF Y$<>"Y" THEN GO TO 6000 6040 SAVE "S.A. DATA" DATA X() 6050 PRINT ''"WOULD YOU LIKE TO:"'''"CONTINUE? C"''"CLEAR DATA AND RUN AGAIN? R"''"OR STOP? S": INPUT Y$: CLS 6060 IF Y$="R" THEN GO TO 20 6070 IF Y$="C" THEN GO TO 720 6075 IF Y$="S" THEN STOP 6080 GO TO 6050 7000 REM CALCULATION OF SUM OF TOTALS MEANS SD CV SEM REG CORR DF * t. 7010 LET t1=0: LET t2=0: LET t3=0: LET t4=0: LET t5=0: LET S1=0: LET S2=0 7020 FOR h=1 TO A 7030 LET t1=t1+X(h,1): LET t2=t2+X(h,2): LET t3=t3+X(h,1)^2: LET t4=t4+X(h,2)^2: LET t5=t5+X(h,1)*X(h,2) 7040 NEXT h 7050 LET q=t2/A: LET q=INT (q*10^3+.5)/(10^3): REM MEAN(y) 7060 LET p=t1/A: LET p=INT (p*10^3+.5)/(10^3): REM MEAN(x) 7070 LET d=(t5-(t1*t2/(h-1)))/(t3-(t1^2/(h-1))): REM REG(b) 7080 LET U=(t5-(t1*t2/(h-1)))/SQR ((t3-(t1^2/(h-1)))*(t4-(t2^2/(h-1)))): REM COR(r) 7090 LET E=q-D*p: REM REG(c) 7100 FOR i=1 TO A 7110 LET s1=s1+(X(i,1)-p)*(X(i,1)-p): LET s2=s2+(X(i,2)-q)*(X(i,2)-q) 7120 NEXT i 7130 LET s3=SQR (s1/(i-2)): LET s4=SQR (s2/(i-2)): REM SD(x&y) 7140 LET v1=s3/p*100: LET v2=s4/q*100: REM CV(x&y) 7150 LET s5=s3/SQR (i-1): LET s6=s4/SQR (i-1): REM SEM(x&y) 7160 LET u2=2*A-2: REM DF 7170 IF q>p THEN LET T=(q-p)/SQR ((2/(u2*A))*(t3+t4-(t1^2/A)-(t2^2/A))): GO TO 7190 7180 LET T=(p-q)/SQR ((2/(u2*A))*(t3+t4-(t1^2/A)-(t2^2/A))): REM t-TEST 7190 RETURN 8000 REM INSTRUCTIONS. 8010 BEEP .8,30: PRINT INK 5;"INSTRUCTIONS ON STATISTICS:"; OVER 1;AT 0,0;"__________________________"'' 8020 PRINT INK 6;"THIS PROGRAM ALLOWS YOU TO INPUTTWO SETS OF DATA OF ANY LENGTH FOR A 72K 2068 TIMEX. NOTE: BOTH SETS OF DATA MUST BE OF EQUAL LENGTH. THE TOTAL NUMBER OF DATA PAIRS BEING ENTERED AS n"'' 8030 GO SUB 650 8060 PRINT INK 5;"THE RAW DATA:"; OVER 1;AT 0,0;"____________": PRINT ' INK 6;"THIS WILL BE STORED IN TWO SEPARATE ARRAYS, ONE FOR PRINTING AND ANALYSIS, THE OTHERFOR RANKING (USED IN MEDIANS). YOU WILL THEN BE ABLE TO ALTER ANY OF THE DATA THAT MAY HAVE BEEN ENTERED INCORRECTLY. THE STATISTICAL TESTS ARE THEN PERFORMED AND A MENU OF CHOICES PRINTED."'' 8070 GO SUB 650 8100 PRINT INK 5;"DESCRIPTIVE STATISTICS:"'': PRINT INK 6;"THIS GIVES YOU THE MEANS (AVERAGES) OF THE TWO SETS OF DATA. IT ALSO GIVES YOU SOME MEASURES OF THE DISTRIBUTION OF VALUES ABOUT THE MEANS.": PRINT INK 5'"THESE ARE:"''"A) STANDARD DEVIATION:"; OVER 1;AT 10,3;"__________________": PRINT ' INK 6;"THIS VALUE IS BOTH POSITIVE (+) AND NEGATIVE (-). AT THE 95% CONFIDENCE LIMIT LEVEL 95.4% OF ALL VALUES SHOULD LIE WITHIN +2 OR -2 SD FROM THE MEAN. SO ANY VALUE OUTSIDE THESE LIMITS MUST BE CONSIDERED STATISTICALLY DIFFERENT FROM THE MEAN OF NORMALLY DISTRIBUTED DATA." 8120 PRINT : GO SUB 650 8150 PRINT INK 5;"B) COEFFICIENT OF VARIATION (CV)"; OVER 1;AT 0,0;" _____________________________"'': PRINT INK 6;"THIS IS A PERCENTAGE (%) VALUE OFTERN USED TO EXPRESS THE PRECISION OF THE DATA. IT RELATES BOTH THE SD AND MEAN BY: CV=SD/MEAN*100%. A LOW CV INDICATES GOOD PRECISION, AND AHIGH VALUE INDICATES POOR PRECISION."'' 8160 GO SUB 650 8190 PRINT INK 5;"C) STANDARD ERROR OF THE MEAN (SEM):"; OVER 1;AT 0,0;" __________________________"'''': PRINT INK 6;"THIS IS AN ESTIMATE OF HOW CLOSETHE MEAN OF YOR SAMPLE IS TO THE MEAN OF THE POPULATION FROM WHICH IT WAS TAKEN. HENCE THIS VALUE MAY NOT BE RELEVANT FOR ALL SETS OF DATA. THE CALCULATION IS SEM=SD/SQR(n)SO AS SAMPLE SIZE INCREASES, THE SEM SHOULD DECREASE AS IT APPROACHES THE 'TRUE' MEAN OF THE POPULATION. (WHERE SEM=0)"'' 8200 GO SUB 650 8230 PRINT INK 5;"F-TEST:"; OVER 1;AT 0,0;"______": PRINT ' INK 6;"THIS IS A TEST SOMETIMES USED TOCOMPARE THE PRECISIONS OF TWO SETS OF DATA. THE F VALUE IS CALCULATED FROM THE VARIANCE RATIO (VARIANCE=SD SQUARED) BY: F=(LARGER VARIANCE)/(SMALLER VARIANCE). THIS VALUE IS THEN LOOKED UP IN F-TABLES FOR TWO DF(DEGREES OF FREEDOM) VALUES (IN THIS CASE BOTH VALUES ARE EQUAL AND ONLY ONE IS PRINTED). FROM THE TABLES A PROBABILITY VALUE (P) IS FOUND AND THIS CAN BE USED IN ASSESSING THE SIGNIFICANCE (IF ANY) BETWEEN THE TWO PRECISIONS. SEE ALSO THENOTES ON THE t-TEST." 8250 PRINT : GO SUB 650 8280 PRINT INK 5;"PRINT DATA:"; OVER 1;AT 0,0;"__________": PRINT ' INK 6;"THE SECOND CHOICE ON THE MENU ALLOWS YOU TO LIST THE DATA. THIS CAN BE COPIED BY PRESSING 'c' INSTEAD OF ENTER,SO ANY TIME A HARD COPY OF THE INSTRUCTIONS OR THE ANALYSIS IS REQUIRED JUST PRESS 'c'."'' 8300 GO SUB 650 8320 PRINT INK 5;"MEDIANS & DATA SORTING:"; OVER 1;AT 0,0;"_______ ____________": PRINT ' INK 6;"THE THIRD CHOICE (AND FINAL PARTOF DESCRIPTIVE STATISTICS) WILL USE A SORTING ROUTINE TO RANK THE SPARE ARRAY DATA INTO DESCENDING ORDER (THIS MAY TAKE SOME TIME AS IT IS IN BASIC AND NOT MACHINE CODE!). ONCE THE DATA HAS BEEN RANKED IT WILL BE LISTED AND THE MAXIMUM, MINIMUM AND MEDIAN VALUES FOR x & y WILLBE DISPLAYED. THE MEDIAN IS A VALUE WHICH DIVIDES THE NUMBER OF OBSERVATIONS INTO TWO EQUAL PARTS. IN NORMALLY DISTRIBUTED DATA IT WOULD BE EQUAL, OR VERY CLOSE TO THE MEAN VALUE. THUS DIFFERENCES BETWEEN THE MEAN ANDMEDIAN SHOWS LEFT OR RIGHT SKEW IN THE DATA." 8340 PRINT : GO SUB 650 8370 PRINT INK 5;"THE MODE:"; OVER 1;AT 0,0;"________"'': PRINT ' INK 6;"THIS IS THE MOST COMONNLY OCCURING VALUE IN ANY SET OF DATA. IN THIS PROGRAM IT CAN EASILY BE SEEN IN THE LIST OF RANKED DATA.IN NORMALLY DISTRIBUTED DATA THE MODE,MEAN AND MEDIAN WOULD ALL BE (APPROXIMATELY) EQUAL. ANY LEFT OR RIGHT SKEW IN THE DATA WOULD MAKE THEM SIGNIFICANTLY DIFFERENT FROM EACH OTHER."'' 8380 GO SUB 650 8410 PRINT INK 5;"STATISTICAL ANALYSIS:"; OVER 1;AT 0,0;"____________________": PRINT ' INK 6;"THESE CHOICES GIVE VARIOUS CALCULATIONS ON THE DATA WHICH WOULD BE VERY TIME CONSUMING TO DO MANUALLY. THEY ARE REGRESION,CORRELATION AND t-TEST."'' 8420 GO SUB 650 8450 PRINT INK 5;"REGRESSION ANALYSIS:"; OVER 1;AT 0,0;"___________________"'': PRINT INK 6;"THIS IS AN ESTIMATE OF THE ASSOCIATION OF THE x DATA WITH THE y DATA. LINEAR REGRESSION ISUSED, WHERE IF THE ASSOCIATION IS A STRAIGHT LINE THEN IT WILLHAVE THE FORMULAE y=b*x+c WHERE c=INTERCEPT ON THE y-AXIS AND b=REGRESSION COEFFICIENT (GRADIENT).IF THE ASSOCIATION IS TOTALLY LINEAR THEN b WILL BE+1 OR -1 DEPENDING ON THE SLOPE OF THE LINE. STATISTICALLY REGRESSION IS USED TO DRAW A BEST-FIT LINE THROUGH SPREAD OUTDATA."'' 8460 GO SUB 650 8490 PRINT INK 6;"HERE b IS CLCULATED AND USED TO FIND THE VALUE OF c (BY c=C-b*B)THE LINE IS THEN DRAWN FROM c THROUGH (B,C) TO THE UPPER LIMITS OF THE DATA. THIS LINE DRAWING METHOD IS THE ONE USED ON THE PLOT A GRAPH CHOICE. NOTE:THE LINE ONLY WORKS FOR POSITIVELY CORRELATED DATA, IF THE DATA IS NEGATIVELY CORRELATED THE LINE WILL RUN OFFTHE SCREEN. THIS CAN BE AVOIDED IF PROGRAM LINES 1750 & 1760 AREDELETED. SEE ALSO GRAPH INSTRUCTIONS."'' 8500 GO SUB 650 8530 PRINT INK 5;"CORRELATION COEFFICIENT:"; OVER 1;AT 0,0;" "'': PRINT INK 6;"THIS IS ANOTHER EXPRESSION OF THE ASSOCIATION BETWEEN THE TWO SETS OF DATA. COMPLETE CORRELATION WILL GIVE AN r VALUEOF +1 OR -1 DEPENDING ON THE SLOPE OF THE LINE. IF THE DATA IS TOTALLY UNCORRELATED THEN r WILL BE 0. CORRELATION AND REGRESSION ANALYSIS ARE USUALLY USED IN CONJUNCTION AND ARE OFTERN DISPLAYED ON THE GRAPHS OF DATA."'' 8540 GO SUB 650 8570 PRINT INK 5;"2-SAMPLE t-TEST:"'': PRINT INK 6;"THERE ARE MANY TYPES OF t-TEST ANALYSIS. THE ONE USED HERE IS FOR TWO SAMPLES OF EQUAL LENGTH.THE TEST IS USED TO DETERMINE WHETHER THERE IS ANY SIGNIFICANTDIFFERENCE BETWEEN THE TWO SETS OF DATA. THE t VALUE IS CALCULATED ALONG WITH THE DEGREES OF FREEDOM (DF) FOR THE DATA. FROM THESE, STUDENT'S t-TABLES CAN BE USED TO FIND THEPROBABILITY VALUE (P) FOR SIGNIFICANCE TESTING."'' 8580 GO SUB 650 8610 PRINT INK 5;"SIGNIFICANCE TESTING:"'': PRINT INK 6;"THIS USES THE P VALUE (WHICH MAYBE EXPRESSED AS A %) TO SEE IF THERE IS ANY STATISTICAL DIFFERENCE BETWEEN THE TWO SETS OF DATA FOR EXAMPLE P<=0.001 (OR 0.1%) MEANS THAT THE DATA ARE STATISTICALLY THE SAME. NOTE: IF THE t VALUE EXCEEDS THETABULATED VALUES THEN THE DIFFERENCE IS SIGNIFICANT (ie: NOT LIKELY TO BE DUE TO CHANCE ALONE.)"'' 8620 GO SUB 650 8650 PRINT INK 5;"THE LINE GRAPH:"'' INK 6;"THIS IS LIMITED BY THE SCREEN SIZE FOR THE 2068. IT WILL ONLY ALLOW (x,y)<(26,20) TO BE PRINTED, OR MEANS<11. IT ALSO ASSUMES POSITIVE LINEAR CORRELATION BETWEEN x & y WHEN IT DRAWS A LINE THROUGH THE POINTS. HOWEVER AS MENTIONED THIS COULD BE AVOIDED IF NECESSARY BY THE DELETION OF THERELEVANT LINES. IF A GRAPH OF HIGH DATA IS NEEDED, YOU WOULD HAVE TO RE-ENTER THE VALUES AFTER DIVISION BY A SUITABLE FACTOR TO DECREASE THEIR SIZE."'' 8660 GO SUB 650 8690 PRINT INK 6;"THE GRAPH ROUTINE WILL ALLOW YOUTO NAME THE TWO AXES, AND SPECIFY THEIR MAXIMUM LENGTHS. THUS THE ROUTINE IS VERY USEFULFOR VISUALISING THE ACTUAL RELATIONSHIPS BETWEEN TWO SETS OF DATA. IT CAN BE COPIED TO THE PRINTER BY PRESSING 'c'."'' 8700 GO SUB 650 8710 PRINT INK 5;"BAR CHART."'' INK 6;"THIS ROUTINE ALLOWS YOU TO CHOOSE A BAR CHART OF x OR y VALUES. AGAIN IT IS LIMITED BY THE SCREEN SIZE OF THE 2068 THE VALUES ARE SORTED INTO 15 DOUBLE-WIDTH COLUMNS BY A DIVISION FACTOR CALCULATED FROM THE MAXIMUM AND MINIMUM DATA VALUES. THUS YOU MUST GO THROUGHCHOICE NUMBER 3 (MEDIANS) BEFOREUSING THE BAR CHART. THE DATA ISSORTED INTO AN ARRAY ACCORDING TO ITS PARTICULAR VALUE. IF THE COLUMN BECOMES TOO LARGE (>17) THEN THE COMPUTER WILL SCALE DOWN ALL THE VALUES AS REQUIRED.THE USE OF THIS IS THAT IT WILL SHOW YOU IF THE DATA IS NORMALLYDISTRIBUTED THIS IS REQUIRED BY MANY STATS TESTS." 8720 GO SUB 650 8750 LET CPY=0 8800 PRINT "PRESS"''"R TO READ THE INSTRUCTIONS AGAIN"''"C TO COPY INSTRUCTIONS"''"P TO RETURN TO THE MAIN PROGRAM:" 8810 PAUSE 0: IF INKEY$="R" THEN CLS : GO TO 8000 8820 IF INKEY$="P" THEN CLS : GO TO 70 8830 IF INKEY$="C" THEN LET CPY=1: GO TO 8000 8840 GO TO 8810 9000 REM THIS LISTING OCCUPIES 26.2K 9998 SAVE "Stat.Anal." LINE 10 9999 VERIFY ""