home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / PCSSP2.ZIP / STATNONP.ZIP / KRANK.FOR < prev    next >
Text File  |  1985-11-29  |  3KB  |  121 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE KRANK
  5. C
  6. C        PURPOSE
  7. C           TEST CORRELATION BETWEEN TWO VARIABLES BY MEANS OF KENDALL
  8. C           RANK CORRELATION COEFFICIENT
  9. C
  10. C        USAGE
  11. C           CALL KRANK(A,B,R,N,TAU,SD,Z,NR)
  12. C
  13. C        DESCRIPTION OF PARAMETERS
  14. C           A   - INPUT VECTOR OF N OBSERVATIONS FOR FIRST VARIABLE
  15. C           B   - INPUT VECTOR OF N OBSERVATIONS FOR SECOND VARIABLE
  16. C           R   - OUTPUT VECTOR OF RANKED DATA OF LENGTH 2*N. SMALLEST
  17. C                 OBSERVATION IS RANKED 1, LARGEST IS RANKED N. TIES
  18. C                 ARE ASSIGNED AVERAGE OF TIED RANKS.
  19. C           N   - NUMBER OF OBSERVATIONS
  20. C           TAU - KENDALL RANK CORRELATION COEFFICIENT (OUTPUT)
  21. C           SD  - STANDARD DEVIATION (OUTPUT)
  22. C           Z   - TEST OF SIGNIFICANCE OF TAU IN TERMS OF NORMAL
  23. C                 DISTRIBUTION (OUTPUT)
  24. C           NR  - CODE, 0 FOR UNRANKED DATA IN A AND B, 1 FOR RANKED
  25. C                 DATA IN A AND B (INPUT)
  26. C
  27. C        REMARKS
  28. C           SD AND Z ARE SET TO ZERO IF N IS LESS THAN TEN
  29. C
  30. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  31. C           RANK
  32. C           TIE
  33. C
  34. C        METHOD
  35. C           DESCRIBED IN S. SIEGEL, 'NONPARAMETRIC STATISTICS FOR THE
  36. C           BEHAVIORAL SCIENCES', MCGRAW-HILL, NEW YORK, 1956,
  37. C           CHAPTER 9
  38. C
  39. C     ..................................................................
  40. C
  41.       SUBROUTINE KRANK(A,B,R,N,TAU,SD,Z,NR)
  42.       DIMENSION A(1),B(1),R(1)
  43. C
  44.       SD=0.0
  45.       Z=0.0
  46.       FN=N
  47.       FN1=N*(N-1)
  48. C
  49. C        DETERMINE WHETHER DATA IS RANKED
  50. C
  51.       IF(NR-1) 5, 10, 5
  52. C
  53. C        RANK DATA IN A AND B VECTORS AND ASSIGN TIED OBSERVATIONS
  54. C        AVERAGE OF TIED RANKS
  55. C
  56.     5 CALL RANK (A,R,N)
  57.       CALL RANK (B,R(N+1),N)
  58.       GO TO 40
  59. C
  60. C        MOVE RANKED DATA TO R VECTOR
  61. C
  62.    10 DO 20 I=1,N
  63.    20 R(I)=A(I)
  64.       DO 30 I=1,N
  65.       J=I+N
  66.    30 R(J)=B(I)
  67. C
  68. C        SORT RANK VECTOR R IN SEQUENCE OF VARIABLE A
  69. C
  70.    40 ISORT=0
  71.       DO 50 I=2,N
  72.       IF(R(I)-R(I-1)) 45,50,50
  73.    45 ISORT=ISORT+1
  74.       RSAVE=R(I)
  75.       R(I)=R(I-1)
  76.       R(I-1)=RSAVE
  77.       I2=I+N
  78.       SAVER=R(I2)
  79.       R(I2)=R(I2-1)
  80.       R(I2-1)=SAVER
  81.    50 CONTINUE
  82.       IF(ISORT) 40,55,40
  83. C
  84. C        COMPUTE S ON VARIABLE B. STARTING WITH THE FIRST RANK, ADD 1
  85. C        TO S FOR EACH LARGER RANK TO ITS RIGHT AND SUBTRACT 1 FOR EACH
  86. C        SMALLER RANK.  REPEAT FOR ALL RANKS.
  87. C
  88.    55 S=0.0
  89.       NM=N-1
  90.       DO 60 I=1,NM
  91.       J=N+I
  92.       DO 60 L=I,N
  93.       K=N+L
  94.       IF(R(K)-R(J)) 56,60,57
  95.    56 S=S-1.0
  96.       GO TO 60
  97.    57 S=S+1.0
  98.    60 CONTINUE
  99. C
  100. C        COMPUTE TIED SCORE INDEX FOR BOTH VARIABLES
  101. C
  102.       KT=2
  103.       CALL TIE(R,N,KT,TA)
  104.       CALL TIE(R(N+1),N,KT,TB)
  105. C
  106. C        COMPUTE TAU
  107. C
  108.       IF(TA) 70,65,70
  109.    65 IF(TB) 70,67,70
  110.    67 TAU=S/(0.5*FN1)
  111.       GO TO 80
  112.    70 TAU=S/((SQRT(0.5*FN1-TA))*(SQRT(0.5*FN1-TB)))
  113. C
  114. C     COMPUTE STANDARD DEVIATION AND Z IF N IS 10 OR LARGER
  115. C
  116.    80 IF(N-10) 90,85,85
  117.    85 SD=(SQRT((2.0*(FN+FN+5.0))/(9.0*FN1)))
  118.       Z=TAU/SD
  119.    90 RETURN
  120.       END
  121.