1 CLS 10 PRINT "THIS IS A SIMULATED WILCOXON RANK-SUM TEST WITH TIED MIDRANKS" 42 PRINT "THIS PROGRAM REQUIRES A DATA FILE. THE X-DATA SHOULD BE" 43 PRINT "ENTERED FIRST AND THEN THE Y-DATA. YOU WILL ENTER THE SIZES OF" 44 PRINT "THE X-SAMPLE AND THE Y-SAMPLE WHEN THE PROGRAM IS RUNNING." 45 PRINT "IF THIS DATA FILE IS ALREADY IN THIS FOLDER, RESPOND WITH Y;" 47 PRINT "OTHERWISE RESPOND WITH N." 48 INPUT RESPONSE$ 49 IF RESPONSE$ = "N" THEN 1999 50 INPUT "THE NAME OF THE DATA FILE IS";XY$ 52 OPEN XY$ FOR INPUT AS #1 55 INPUT "THE SIZE OF THE X-SAMPLE IS";M 60 INPUT "THE SIZE OF THE Y-SAMPLE IS";N 70 DIM X(M), Y(N), Z(M + N), D(M+N), C(M + N), S(M+N) 140 FOR I = 1 TO M 150 INPUT #1, X(I) 160 NEXT I 170 FOR I = 1 TO N 180 INPUT #1, Y(I) 190 NEXT I 191 CLOSE #1 'NOW THE DATA ARE TO BE ARRANGED IN ORDER X(1),...,Y(N) 200 FOR I = 1 TO M 210 Z(I) = X(I) 220 NEXT I 230 FOR J = 1 TO N 240 Z(M + J) = Y(J) 250 NEXT J 'NEXT THE DATA ARE REORDERED IN NONDECREASING ORDER. 260 FOR I = 1 TO M + N - 1 270 FOR J = I + 1 TO M + N 280 IF Z(I) > Z(J) THEN SWAP Z(I),Z(J) 290 NEXT J 300 NEXT I 'AT THIS POINT ALL M+N VALUES ARE IN NONDECREASING ORDER. 310 'TO COMPUTE THE NUMBER R OF DISTINCT ORDER STATISTICS 320 R = 1 330 FOR I = 2 TO M + N 340 IF Z(I) = Z(I - 1) THEN 360 350 R = R + 1 360 NEXT I 370 'D(I), 1 <= I <= R ARE # OF TIED VALUES AT I'TH DISTINCT ORDER STATISTIC. 380 'TO COMPUTE THE SUM OF MIDRANKS OF X'S IN POOLED ORDERED SAMPLE. 390 MIDRANKSUM = 0 400 FOR J = 1 TO M 410 A = 1 420 WHILE X(J) > Z(A) 430 A = A + 1 440 WEND 450 B = A 'A = THE LOWEST RANK OF X(J) 460 WHILE X(J) = Z(B) 470 B = B + 1 480 IF B > M + N THEN 520 490 WEND 500 'HIGHRANKX(J) = B - 1 AND LOWRANKX(J) = A 510 'MIDRANKX(J) = (A + B - 1)/2 520 MIDRANKSUM = MIDRANKSUM + (A + B - 1)/2 530 NEXT J 'COMPLETES THE SUM OF THE MIDRANKS OF THE X-DATA IN POOLED ORDERED SAMPLE. 540 XBAR = MIDRANKSUM/M 'AVERAGE OF XDATA'S MIDRANKS 550 SUM = (M + N)*(M + N + 1)/2 'SUM = SUM OF ALL RANKS. 560 YBAR = (SUM -MIDRANKSUM)/N 561 C = XBAR - YBAR 562 'NOW TO EVALUATE THE D(I)'S. 563 C(0) = 0 564 FOR I = 1 TO R 565 C(I) = C(I - 1) + 1 566 J = C(I) 567 D(I) = 0 568 WHILE Z(J) = Z(C(I)) 569 D(I) = D(I) + 1 570 J = J + 1 571 IF J > M + N THEN 575 572 WEND 573 C(I) = C(I - 1) + D(I) 574 NEXT I 575 'Z(1),...,Z(M+N) WILL NOW BE REDEFINED. 580 'THEY DENOTE THE SEQUENCE OF MIDRANKS OF ALL M+N NUMBERS. 600 S(0) = 0 610 FOR I = 1 TO R 620 FOR J = 1 TO D(I) 630 Z(S(I-1) + J) = S(I - 1) + (D(I) + 1)/2 640 NEXT J 650 S(I) = S(I - 1) + D(I) 660 NEXT I 'NOW Z(1),...,Z(M+N) ARE THE MIDRANKS THAT WILL BE SAMPLED. 670 INPUT "THE NUMBER OF REPLICATIONS DESIRED IS"; Q 680 'SUCCESS MEANS THAT A SIMULATED XBAR - YBAR => C (or <= C). 690 'S DENOTES THE NUMBER OF SUCCESSES 700 'T = # OF TRIALS SO FAR 710 S = 0 'S IS THE COUNT OF # TIMES XBAR - YBAR >= C 720 RANDOMIZE TIMER 730 IF C <= 0 THEN 1000 740 FOR I = 1 TO Q 750 GOSUB 2000 760 XSUM = 0 770 FOR J = 1 TO M 780 XSUM = XSUM + Z(X(J)) 790 NEXT J 800 XBAR = XSUM / M 810 YSUM = ((M + N)*(M + N + 1)/2) - XSUM 820 YBAR = YSUM / N 830 IF XBAR - YBAR < C THEN 850 840 S = S + 1 850 NEXT I 860 RELFREQ = S/Q 'THE FRACTION OF THE TIMES XBAR-YBAR>=C. 870 PRINT "THE SIMULATED P-VALUE FOR XBAR-YBAR >=";C;"IS"; RELFREQ 880 GOTO 1999 1000 FOR I = 1 TO Q 1010 GOSUB 2000 1020 XSUM = 0 1030 FOR J = 1 TO M 1040 XSUM = XSUM + Z(X(J)) 1050 NEXT J 1060 XBAR = XSUM / M 1070 YSUM = ((M + N)*(M + N + 1)/2) - XSUM 1080 YBAR = YSUM / N 1090 IF XBAR - YBAR > C THEN 1110 1100 S = S + 1 1110 NEXT I 1120 RELFREQ = S/Q 'THE FRACTION OF THE TIMES XBAR-YBAR <= C. 1130 PRINT "THE SIMULATED P-VALUE FOR XBAR-YBAR <=";C;"IS"; RELFREQ 1999 END 2000 'IN THIS SUBROUTINE WE OBTAIN A SRSWOR OF SIZE M FROM 1,...,M+N. 2050 'THE SAMPLE WILL BE DENOTED BY X(1),...,X(M) 2070 X(1) = INT((M + N) * RND) + 1 2080 FOR II = 2 TO M 2090 Z = INT((M + N) * RND) + 1 2100 FOR J = 1 TO II - 1 2110 IF Z = X(J) THEN 2090 2120 NEXT J 2130 X(II) = Z 2140 NEXT II 2150 RETURN