Compucolor.org – Virtual Media

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

5 REM  RANK
7 REM  WRITTEN BY WALTER DEGLER  5/5/79
9 REM
10 REM  SETS OF DATA ARE COMPARED AS SETS OF RANKS
25 PLOT 12,14,6,2
50 DIM A(625),L(24),U(24)
60 DIM M(74),N(74)
75 DIM R(24),X(24),MS(24)
1999 REM
2000 REM  INPUT DATA
2010 M= 100000
2025 INPUT "DATA SOURCE (F-FILE OR K-KEYBOARD): ";Z$
2050 INPUT "NUMBER OF DATA SETS: ";ND
2060 K= ND- 1:L= INT (400/ (ND- 1))
2065 DIM D(K,L),Z(K,L)
2070 PRINT :PLOT 15
2075 IF Z$= "F"THEN 2500
2100 FOR I= 0TO ND- 1
2110 PLOT 12,15,6,1
2125 PRINT "DATA SET"I+ 1
2140 INPUT "NUMBER OF DATA POINTS: ";NO(I)
2145 IF NO(I)< MTHEN M= NO(I)
2150 PLOT 6,2
2175 PRINT "NUMBER OF DATA POINT, VALUE:"
2200 PLOT 6,3
2225 INPUT "#";J
2250 IF J< 1THEN PLOT 12,27,24:GOTO 2350
2275 PRINT SPC( 6);:PLOT 28
2300 INPUT "";D(I,J- 1)
2310 A(J- 1)= D(I,J- 1)
2325 GOTO 2225
2350 GOSUB 9000
2360 NEXT
2375 PLOT 27,24
2400 GOTO 3000
2500 FOR I= 0TO ND- 1
2520 PLOT 6,6
2525 PRINT "DATA SET"I+ 1" FILE NAME (OR 'S' IF SAME AS LAST):"
2530 PLOT 6,1
2540 INPUT G$
2550 IF G$= "S"THEN 2625
2575 IF I< > 0THEN FILE "C",1
2600 F$= G$:FILE "R",1,F$,6
2625 GET 1,1,5;NO(I)
2630 IF NO(I)< MTHEN M= NO(I)
2640 PLOT 6,3
2650 INPUT "TYPE NUMBER: ";T
2675 FOR J= 0TO NO(I)- 1
2700 GET 1,T,9+ 4* J;D(I,J)
2725 A(J)= D(I,J)
2750 NEXT
2775 GOSUB 9000
2800 NEXT
2999 REM
3000 REM  COMPUTE MANN-WHITNEY CONFIDENCE LIMITS
3010 PLOT 12,14,6,2
3020 INPUT "ENTER MANN-WHITNEY CRITICAL VALUE: ";CV:CV= CV+ 1
3025 Z1= INT (CV):Z2= CV- Z1
3050 FOR I= 0TO ND- 2
3075 FOR J= I+ 1TO ND- 1
4000 D= 0:IX= I* (ND- (I- 1)/ 2- 2)+ J- 1
4025 FOR K= 0TO NO(I)- 1
4050 FOR L= 0TO NO(J)- 1
4060 SB= K* NO(J)+ L
4075 A(SB)= D(I,K)- D(J,L)
4080 IF K= LTHEN Z= Z(I,K)- Z(J,L):D= D+ Z* Z
4100 NEXT L,K
4150 M(0)= 0:N(0)= NO(I)* NO(J):U= 0:X= 1
4155 M(X)= 1
4160 A(NO(I)* NO(J))= 1E30
4175 MQ= M(U):NQ= N(U)
4200 IF M(U)= 0AND N(U)= 0THEN 4375
4225 GOSUB 10000
4250 U= U+ 1
4275 GOTO 4175
4375 PLOT 27,24
4430 T= NO(I)* NO(J)
4450 L(IX)= A(Z1- 1)* (1- Z2)+ A(Z1)* Z2
4475 U(IX)= A(T- Z1)* (1- Z2)+ A(T- Z1- 1)* Z2
4999 REM
5000 REM  COMPUTE RANK CORRELATION (SPEARMAN)
5080 MN= NO(I):IF MN> NO(J)THEN MN= NO(J)
5100 R(IX)= 1- 6* D/ (MN* (MN* MN- 1))
5500 NEXT J,I
5999 REM
6000 REM  COMPUTE COEFFICIENT OF CONCORDANCE
6010 X= 0:S= 0
6025 FOR I= 0TO M- 1
6050 FOR J= 0TO ND- 1
6075 X(I)= X(I)+ Z(J,I)
6100 NEXT J,I
6150 FOR I= 0TO M- 1
6160 X= X+ X(I)
6175 S= S+ X(I)* X(I)
6200 NEXT
6225 S= S- X* X/ M
6250 W= 12* S/ (ND* ND* M* (M* M- 1))
6999 REM
7000 REM  PRINT STATISTICS
7025 PLOT 12,15,6,6
7050 PRINT TAB( 28);"RANK ANALYSIS"
7075 PRINT :PLOT 6,1
7100 PRINT "COEFF. OF CONCORDANCE";
7125 PLOT 6,3
7150 PRINT W;
7175 PLOT 6,1
7200 PRINT TAB( 40);"CRITICAL VALUE";
7225 PLOT 6,3
7250 PRINT CV- 1
7275 PRINT :PLOT 6,1
7300 PRINT " SETS";TAB( 15);"MANN-WHITNEY RANK TEST";TAB( 44);"RANK CORRELATION"
7325 PRINT TAB( 12);"LOWER LIMIT";TAB( 30);"UPPER LIMIT";TAB( 47);"(SPEARMAN)"
7350 PLOT 6,3
7360 L= 0
7375 FOR I= 0TO ND- 2
7400 FOR J= I+ 1TO ND- 1
7430 L= L+ 1:IF L= 25THEN 7750
7450 K= I* (ND- (I- 1)/ 2- 2)+ J- 1
7700 PRINT I+ 1;TAB( 3);",";J+ 1;TAB( 13);L(K);TAB( 30);U(K);TAB( 47);R(K)
7725 NEXT J,I
7730 L= 0
7750 PLOT 3,0,31,6,1
7775 INPUT "ENTER 1-RETURN, 2-CONTINUE, 3-SAVE OR 4-END: ";Z
7800 IF Z= 1THEN 3000
7850 IF Z= 3THEN PLOT 27,4:PRINT "SAV RANK.DSP 6000":PLOT 27,27:GOTO 7750
7875 IF Z< > 2THEN LOAD "MENU":RUN
7900 FOR M= 7TO 31
7925 PLOT 3,0,M,11:PRINT
7950 NEXT M
7975 PLOT 3,0,7,6,3
7980 IF L= 0THEN 7375
7985 L= 1:GOTO 7450
9000 REM  DETERMINE RANKS
9025 M(0)= 0:N(0)= NO(I):U= 0:X= 1
9050 M(X)= 1:A(NO(I))= 1E30
9075 MQ= M(U):NQ= N(U)
9100 IF M(U)= 0AND N(U)= 0THEN 9275
9125 GOSUB 10000
9150 U= U+ 1
9175 GOTO 9075
9275 FOR K= 0TO NO(I)- 1
9300 FOR L= 0TO NO(I)- 1
9325 IF D(I,K)= A(L)THEN Z(I,K)= L+ 1
9350 NEXT L,K
9375 FOR K= 0TO NO(I)- 1
9999 REM
10000 REM  SORT ROUTINE (QUICKSORT)
10025 K= MQ:L= NQ+ 1:A= A(MQ)
10050 K= K+ 1:IF A(K)< ATHEN 10050
10075 L= L- 1:IF A(L)> ATHEN 10075
10100 IF K< LTHEN Z= A(K):A(K)= A(L):A(L)= Z:GOTO 10050
10125 Z= A(MQ):A(MQ)= A(L):A(L)= Z
10150 IF MQ< L- 1THEN M(X)= MQ:N(X)= L- 1:X= X+ 1
10175 IF L+ 1< NQTHEN M(X)= L+ 1:N(X)= NQ:X= X+ 1
10225 M(X)= 0:N(X)= 0
10250 RETURN