Compucolor.org – Virtual Media

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

5 REM  STAT
7 REM  WRITTEN BY WALTER DEGLER  2/15/79
9 REM
10 REM  CENTRAL TENDANCIES, OTHER QUANTILES, DISPERSIONS, SKEW,
12 REM  KURTOSIS AND OTHER STATISTICS ARE COMPUTED FOR A SET OF
14 REM  GROUPED OR UNGROUPED DATA
20 REM
25 PLOT 12,14,6,2,27,24
50 DEF FN A(X)= X(I)- W+ 2* W* (X- LC)/ F(I)
75 DIM M(2),Q(2),X(149),F(149),CF(149),Z(149)
100 GOSUB 2000:REM  INPUT DATA
110 FOR I= 0TO C- 1:W(I)= W(I)/ 2:NEXT
125 GOTO 4000
1999 REM
2000 REM  INPUT DATA
2025 INPUT "IS DATA ALREADY GROUPED? ";Z$:Z$= LEFT$ (Z$,1)
2050 IF Z$< > "Y"AND Z$< > "N"THEN 2025
2075 IF Z$= "N"THEN 3200
2100 INPUT "DATA SOURCE (F-FILE OR K-KEYBOARD): ";Z$
2125 IF Z$< > "F"AND Z$< > "K"THEN 2100
2150 IF Z$= "K"THEN 2650
2155 PRINT
2160 PLOT 6,1
2175 INPUT "FILE NAME, DATA TYPE #, FREQUENCY TYPE #: ";F$,T1,T2
2180 PRINT
2185 PLOT 6,2
2200 FILE "R",1,F$,4
2225 GET 1,T1,5;C
2250 FOR I= 0TO C- 1
2275 GET 1,T1,9+ 4* I;X(I)
2280 IF I= 0THEN MN= X(0):MX= X(0)
2285 IF MN> X(I)THEN MN= X(I)
2290 IF MX< X(I)THEN MX= X(I)
2300 GET 1,T2,9+ 4* I;F(I)
2310 N= N+ F(I)
2325 NEXT
2375 INPUT "ARE WIDTHS CONSTANT? ";Z$:Z$= LEFT$ (Z$,1)
2400 IF Z$< > "Y"AND Z$< > "N"THEN 2375
2425 IF Z$= "Y"THEN FILE "C",1:GOTO 3050
2450 INPUT "WIDTH TYPE # (OR '5' IF NOT IN FILE): ";T3
2500 IF T3= 5THEN FILE "C",1:GOTO 2925
2525 FOR I= 0TO C- 1
2550 GET 1,T3,9+ 4* I;W(I)
2575 NEXT
2580 FILE "C",1
2625 RETURN
2650 INPUT "NUMBER OF CLASSES? ";C
2660 PLOT 12,15,6,1
2675 PRINT "ENTER CLASS NO., CLASS MARK AND CLASS FREQUENCY:"
2680 PLOT 6,3
2700 INPUT "#";I
2710 IF I< 1THEN PRINT :PLOT 6,2:GOTO 2850
2725 PRINT SPC( 6);:PLOT 28
2750 INPUT "";X(I- 1)
2755 IF I= 1THEN MN= X(0):MX= X(0)
2760 IF MN> X(I- 1)THEN MN= X(I- 1)
2765 IF MX< X(I- 1)THEN MX= X(I- 1)
2775 PRINT SPC( 12);:PLOT 28
2800 INPUT "";F(I- 1)
2810 N= N+ F(I- 1)
2825 GOTO 2700
2850 INPUT "ARE CLASS WIDTHS CONSTANT? ";Z$:Z$= LEFT$ (Z$,1)
2875 IF Z$< > "Y"AND Z$< > "N"THEN 2850
2900 IF Z$= "Y"THEN 3050
2910 PLOT 12,15,6,1
2925 PRINT "ENTER CLASS WIDTHS (LOW CLASS TO HIGH):"
2930 PLOT 6,3
2950 FOR I= 0TO C- 1
2975 PRINT "#";I+ 1;:INPUT "  ";W(I)
3000 NEXT
3010 PLOT 12,14,6,2
3025 RETURN
3050 W= (MX- MN)/ (C- 1)
3075 FOR I= 0TO C- 1
3100 W(I)= W
3125 NEXT
3150 RETURN
3200 INPUT "NUMBER OF CLASSES AND LOWEST CLASS MARK: ";C,X(0)
3225 INPUT "CLASS WIDTH (OR '0' IF NOT CONSTANT): ";W
3250 IF W> 0THEN 3970
3275 GOSUB 2910
3375 FOR I= 1TO C- 1
3400 X(I)= X(I- 1)+ .5* (W(I- 1)+ W(I))
3425 NEXT
3450 INPUT "FILE SOURCE (F-FILE OR K-KEYBOARD): ";Z$
3475 IF Z$< > "F"AND Z$< > "K"THEN 3450
3500 IF Z$= "F"THEN 3650
3510 PRINT
3515 PLOT 6,1
3525 INPUT "NUMBER OF VALUES: ";N
3530 PLOT 12,15,6,1
3550 PRINT :PRINT "VALUE NUMBER AND VALUE:"
3560 PLOT 6,3
3575 INPUT "#";I
3580 IF I< 1THEN PRINT :PLOT 6,2:RETURN
3600 PRINT SPC( 6);:PLOT 28:INPUT D
3625 GOSUB 3900
3630 GOTO 3575
3650 INPUT "FILE NAME AND DATA TYPE NUMBER: ";F$,T1
3675 FILE "R",1,F$,4
3700 GET 1,T1,5;N
3725 FOR I= 0TO N- 1
3750 GET 1,T1,9+ 4* I;D
3775 GOSUB 3900
3800 NEXT
3825 RETURN
3900 IF D< X(0)- W(0)/ 2THEN RETURN
3920 FOR J= 0TO C- 1
3940 IF D< X(J)+ W(J)/ 2THEN F(J)= F(J)+ 1:RETURN
3960 NEXT
3965 RETURN
3970 FOR I= 0TO C- 1
3975 W(I)= W
3980 NEXT
3985 GOTO 3375
3999 REM
4000 REM  COMPUTE SUMS
4025 FOR I= 0TO C- 1
4050 X= F(I)* X(I)
4075 X1= X1+ X
4100 X5= X5+ X* X
4125 X= X* X(I)
4150 X2= X2+ X
4175 X= X* X(I)
4200 X3= X3+ X
4225 X4= X4+ X* X(I)
4250 X6= X6+ F(I)* LOG (X(I))
4275 X7= X7+ F(I)/ X(I)
4300 NEXT
4999 REM
5000 REM  COMPUTE STATISTICS
5025 AM= X1/ N
5050 GM= EXP (X6/ N)
5075 HM= N/ X7
5100 RS= SQR (X2/ N)
5125 R= X(C- 1)- X(0)
5150 M2= AM* AM
5175 V= (X2- X1* X1/ N)/ (N- 1)
5200 SD= SQR (V)
5225 CV= SD/ AM
5250 M(0)= (X2- 2* AM* X1)/ N+ M2
5275 M(1)= (X3- 3* AM* X2)/ N+ 2* AM* M2
5300 M(2)= (X4- 4* AM* X3+ 6* M2* X2)/ N- 3* M2* M2
5325 RK= M(1)/ (V* SD)
5350 KR= M(2)/ (V* V)
5375 FOR I= 0TO C- 1
5400 X8= X8+ F(I)* ABS (X(I)- AM)
5410 Z(I)= (X(I)- AM)/ SD
5425 IF I= 0THEN MF= F(I):MC= I
5450 IF MF< F(I)THEN MF= F(I):MC= I
5475 IF I= 0THEN CF(I)= F(I):GOTO 5525
5500 CF(I)= CF(I- 1)+ F(I)
5525 NEXT
5550 MD= X8/ N
5575 IF MC> 0THEN FL= F(MC- 1)
5600 IF MC< C- 1THEN FH= F(MC+ 1)
5610 IF W$= "N"THEN W= W(MC)
5625 MO= X(MC)+ W* (FH- FL)/ (2* F(MC)- FH- FL)
5650 PK= (AM- MO)/ SD
5675 FOR J= 1TO 3
5700 FOR I= 0TO C- 1
5725 IF CF(I)< J* N/ 4THEN 5775
5730 IF W$= "N"THEN W= W(I)
5740 LC= 0:IF I> 0THEN LC= CF(I- 1)
5750 Q(J- 1)= FN A(J* N/ 4):GOTO 5800
5775 NEXT I
5800 NEXT J
5825 QD= (Q(2)- Q(0))/ 2
5850 BK= (Q(2)- 2* Q(1)+ Q(0))/ (Q(2)- Q(0))
5875 GOTO 7000
5999 REM
6000 REM  DISPLAY DATA TABLE
6025 PLOT 8
6050 PRINT :PRINT
6075 PLOT 6,6
6100 PRINT " CL  MARK   FREQ  CUM FREQ  Z-SCORE"
6125 PLOT 6,3
6150 K= 0
6175 PLOT 3,0,3
6200 L= K+ 27
6225 IF L> C- 1THEN L= C- 1
6250 FOR I= KTO L
6275 PRINT I+ 1;TAB( 4);X(I);TAB( 12);F(I);TAB( 19);CF(I);TAB( 27);Z(I)
6300 NEXT
6325 K= L+ 1
6375 PLOT 6,1
6400 IF L> C- 2THEN 6475
6425 INPUT "PRESS 'RETURN' TO CONTINUE";Z$
6450 PLOT 28,11
6475 PLOT 6,3
6500 PRINT
6525 IF K> C- 1THEN 6600
6550 PLOT 3,0,3
6575 FOR Z= 1TO 28:PRINT SPC( 36);"":NEXT
6580 GOTO 6175
6600 PLOT 6,6
6625 PRINT "     TOTAL  ";
6650 PLOT 6,2
6675 PRINT N
6700 PLOT 6,4
6725 PLOT 3,0,30
6750 PRINT "ENTER"
6760 INPUT "1-DATA AGAIN, 2-QUANTILES, 3-SAVE OR 4-END: ";Z
6775 IF Z= 1THEN 6125
6800 PLOT 6,2
6825 IF Z= 2THEN 9000
6830 IF Z< > 3THEN LOAD "MENU":RUN
6850 PLOT 27,4:PRINT "SAVE STAT.DSP 6000 1000":PLOT 27,27
6875 PLOT 12
6900 INPUT "ENTER 1-QUANTILES OR 2-END: ";Z
6925 IF Z= 1THEN 9000
6950 LOAD "MENU":RUN
6999 REM
7000 REM  DISPLAY STATISTICS LABELS
7010 PLOT 12,6,4,15
7015 PLOT 6,3
7020 PLOT 3,22,0:PRINT "STATISTICAL ANALYSIS"
7025 X= 36
7030 PLOT 6,25
7050 PLOT 3,X+ 4,2:PRINT "CENTRAL TENDANCIES"
7060 PLOT 6,1
7075 PLOT 3,X,3:PRINT "MEANS: ARITHMETIC"
7100 PLOT 3,X+ 7,4:PRINT "GEOMETRIC"
7125 PLOT 3,X+ 7,5:PRINT "HARMONIC"
7150 PLOT 3,X,6:PRINT "MEDIAN"
7175 PLOT 3,X,7:PRINT "MODE"
7200 PLOT 3,X,8:PRINT "ROOT MEAN SQUARE"
7225 PRINT
7230 PLOT 6,25
7250 PLOT 3,X+ 7,10:PRINT "DISPERSIONS"
7260 PLOT 6,1
7275 PLOT 3,X,11:PRINT "STANDARD DEVIATION"
7300 PLOT 3,X,12:PRINT "MEAN ABS DEVIATION"
7325 PLOT 3,X,13:PRINT "QUARTILE DEVIATION"
7350 PLOT 3,X,14:PRINT "RANGE"
7375 PLOT 3,X,15:PRINT "VARIANCE"
7400 PLOT 3,X,16:PRINT "COEFF OF VARIANCE"
7425 PRINT
7430 PLOT 6,25
7450 PLOT 3,X+ 10,18:PRINT "SKEWS"
7460 PLOT 6,1
7475 PLOT 3,X,19:PRINT "STANDARD SKEW"
7500 PLOT 3,X,20:PRINT "PEARSON SKEW"
7525 PLOT 3,X,21:PRINT "BOWLEY SKEW"
7550 PRINT
7575 PLOT 3,X,23:PRINT "KURTOSIS"
7600 PRINT
7610 PLOT 6,25
7625 PLOT 3,X+ 4,25:PRINT "MOMENTS ABOUT MEAN"
7630 PLOT 6,1
7650 PLOT 3,X,26:PRINT "FIRST"
7675 PLOT 3,X,27:PRINT "SECOND"
7700 PLOT 3,X,28:PRINT "THIRD"
7725 PLOT 3,X,29:PRINT "FOURTH"
7999 REM
8000 REM  DISPLAY STATISTICS VALUES
8025 X= 54
8030 PLOT 6,2
8050 PLOT 3,X,3:PRINT AM
8075 PLOT 3,X,4:PRINT GM
8100 PLOT 3,X,5:PRINT HM
8125 PLOT 3,X,6:PRINT Q(1)
8150 PLOT 3,X,7:PRINT MO
8175 PLOT 3,X,8:PRINT RS
8200 PLOT 3,X,11:PRINT SD
8225 PLOT 3,X,12:PRINT MD
8250 PLOT 3,X,13:PRINT QD
8275 PLOT 3,X,14:PRINT R
8300 PLOT 3,X,15:PRINT V
8325 PLOT 3,X,16:PRINT CV
8350 PLOT 3,X,19:PRINT RK
8375 PLOT 3,X,20:PRINT PK
8400 PLOT 3,X,21:PRINT BK
8425 PLOT 3,X,23:PRINT KR
8450 PLOT 3,X,26:PRINT 0
8475 PLOT 3,X,27:PRINT M(0)
8500 PLOT 3,X,28:PRINT M(1)
8525 PLOT 3,X,29:PRINT M(2)
8550 GOTO 6000
8999 REM
9000 REM  DISPLAY QUANTILES
9010 PLOT 12,14,6,3
9025 INPUT "QUANTILE NUMBER: ";Z
9030 PLOT 12,15
9050 FOR J= 1TO Z
9055 FOR I= 0TO C- 1
9060 IF CF(I)< J* N/ ZTHEN 9225
9065 W= W(I)
9070 LC= 0:IF I> 0THEN LC= CF(I- 1)
9075 QN= FN A(J* N/ Z)
9100 X= INT ((J- 1)/ 30)
9125 PLOT 3,16* X,J- 1- 30* X
9130 PLOT 6,1
9150 PRINT J
9175 PLOT 3,16* X+ 6,J- 1- 30* X
9180 PLOT 6,3
9200 PRINT QN
9210 GOTO 9230
9225 NEXT I
9230 NEXT J
9250 PLOT 6,2
9275 PLOT 3,0,31
9300 INPUT "ENTER 1-ANOTHER QUANTILE, 2-SAVE OR 3-END: ";Z
9325 IF Z= 1THEN 9010
9330 IF Z< > 2THEN LOAD "MENU":RUN
9350 PLOT 27,4:PRINT "SAVE QUANT.DSP 6000 1000":PLOT 27,27
9375 PLOT 12
9400 INPUT "ENTER 1-ANOTHER QUANTILE OR 2-END: ";Z
9425 IF Z= 1THEN 9010
9450 LOAD "MENU":RUN