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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE SRANK
  5. C
  6. C        PURPOSE
  7. C           TEST CORRELATION BETWEEN TWO VARIABLES BY MEANS OF SPEARMAN
  8. C           RANK CORRELATION COEFFICIENT
  9. C
  10. C        USAGE
  11. C           CALL SRANK(A,B,R,N,RS,T,NDF,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 FOR RANKED DATA, LENGTH IS 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           RS  - SPEARMAN RANK CORRELATION COEFFICIENT (OUTPUT)
  21. C           T   - TEST OF SIGNIFICANCE OF RS (OUTPUT)
  22. C           NDF - NUMBER OF DEGREES OF FREEDOM (OUTPUT)
  23. C           NR  - CODE, 0 FOR UNRANKED DATA IN A AND B, 1 FOR RANKED
  24. C                 DATA IN A AND B (INPUT)
  25. C
  26. C        REMARKS
  27. C           T IS SET TO ZERO IF N IS LESS THAN TEN
  28. C
  29. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  30. C           RANK
  31. C           TIE
  32. C
  33. C        METHOD
  34. C           DESCRIBED IN S. SIEGEL, 'NONPARAMETRIC STATISTICS FOR THE
  35. C           BEHAVIORAL SCIENCES', MCGRAW-HILL, NEW YORK, 1956,
  36. C           CHAPTER 9
  37. C
  38. C     ..................................................................
  39. C
  40.       SUBROUTINE SRANK(A,B,R,N,RS,T,NDF,NR)
  41.       DIMENSION A(1),B(1),R(1)
  42. C
  43.       FNNN=N*N*N-N
  44. C
  45. C        DETERMINE WHETHER DATA IS RANKED
  46. C
  47.       IF(NR-1) 5, 10, 5
  48. C
  49. C        RANK DATA IN A AND B VECTORS AND ASSIGN TIED OBSERVATIONS
  50. C        AVERAGE OF TIED RANKS
  51. C
  52.     5 CALL RANK (A,R,N)
  53.       CALL RANK (B,R(N+1),N)
  54.       GO TO 40
  55. C
  56. C        MOVE RANKED DATA TO R VECTOR
  57. C
  58.    10 DO 20 I=1,N
  59.    20 R(I)=A(I)
  60.       DO 30 I=1,N
  61.       J=I+N
  62.    30 R(J)=B(I)
  63. C
  64. C        COMPUTE SUM OF SQUARES OF RANK DIFFERENCES
  65. C
  66.    40 D=0.0
  67.       DO 50 I=1,N
  68.       J=I+N
  69.    50 D=D+(R(I)-R(J))*(R(I)-R(J))
  70. C
  71. C        COMPUTE TIED SCORE INDEX
  72. C
  73.       KT=1
  74.       CALL TIE (R,N,KT,TSA)
  75.       CALL TIE (R(N+1),N,KT,TSB)
  76. C
  77. C        COMPUTE SPEARMAN RANK CORRELATION COEFFICIENT
  78. C
  79.       IF(TSA) 60,55,60
  80.    55 IF(TSB) 60,57,60
  81.    57 RS=1.0-6.0*D/FNNN
  82.       GO TO 70
  83.    60 X=FNNN/12.0-TSA
  84.       Y=X+TSA-TSB
  85.       RS=(X+Y-D)/(2.0*(SQRT(X*Y)))
  86. C
  87. C        COMPUTE T AND DEGREES OF FREEDOM IF N IS 10 OR LARGER
  88. C
  89.       T=0.0
  90.    70 IF(N-10) 80,75,75
  91.    75 T=RS*SQRT(FLOAT(N-2)/(1.0-RS*RS))
  92.    80 NDF=N-2
  93.       RETURN
  94.       END
  95.