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

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE CHISQ
  5. C
  6. C        PURPOSE
  7. C           COMPUTE CHI-SQUARE FROM A CONTINGENCY TABLE
  8. C
  9. C        USAGE
  10. C           CALL CHISQ(A,N,M,CS,NDF,IERR,TR,TC)
  11. C
  12. C        DESCRIPTION OF PARAMETERS
  13. C           A    - INPUT MATRIX, N BY M, CONTAINING CONTINGENCY TABLE
  14. C           N    - NUMBER OF ROWS IN A
  15. C           M    - NUMBER OF COLUMNS IN A
  16. C           CS   - CHI-SQUARE (OUTPUT)
  17. C           NDF  - NUMBER OF DEGREES OF FREEDOM (OUTPUT)
  18. C           IERR - ERROR CODE (OUTPUT)
  19. C                    0 - NORMAL CASE
  20. C                    1 - EXPECTED VALUE IS LESS THAN 1.0 IN ONE OR
  21. C                        MORE CELLS
  22. C                    3 - NUMBER OF DEGREES OF FREEDOM IS ZERO
  23. C           TR   - WORK VECTOR OF LENGTH N
  24. C           TC   - WORK VECTOR OF LENGTH M
  25. C
  26. C        REMARKS
  27. C           IF ONE OR MORE CELLS CONTAIN AN EXPECTED VALUE (I.E.,
  28. C           THEORETICAL VALUE) LESS THAN 1.0, CHI-SQUARE WILL BE
  29. C           COMPUTED, BUT ERROR CODE WILL BE SET TO 1.
  30. C           SEE REFERENCE GIVEN BELOW.
  31. C           CHI-SQUARE IS SET TO ZERO IF EITHER N OR M IS ONE (ERROR
  32. C           CODE 3).
  33. C
  34. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  35. C           NONE
  36. C
  37. C        METHOD
  38. C           DESCRIBED IN S. SIEGEL, 'NONPARAMETRIC STATISTICS FOR THE
  39. C           BEHAVIORAL SCIENCES', MCGRAW-HILL, NEW YORK, 1956,
  40. C           CHAPTER 6 AND CHAPTER 8.
  41. C
  42. C     ..................................................................
  43. C
  44.       SUBROUTINE CHISQ(A,N,M,CS,NDF,IERR,TR,TC)
  45.       DIMENSION A(1),TR(1),TC(1)
  46. C
  47.       NM=N*M
  48.       IERR=0
  49.       CS=0.0
  50. C
  51. C        FIND DEGREES OF FREEDOM
  52. C
  53.       NDF=(N-1)*(M-1)
  54.       IF(NDF) 5,5,10
  55.     5 IERR=3
  56.       RETURN
  57. C
  58. C        COMPUTE TOTALS OF ROWS
  59. C
  60.    10 DO 90 I=1,N
  61.       TR(I)=0.0
  62.       IJ=I-N
  63.       DO 90 J=1,M
  64.       IJ=IJ+N
  65.    90 TR(I)=TR(I)+A(IJ)
  66. C
  67. C        COMPUTE TOTALS OF COLUMNS
  68. C
  69.       IJ=0
  70.       DO 100 J=1,M
  71.       TC(J)=0.0
  72.       DO 100 I=1,N
  73.       IJ=IJ+1
  74.   100 TC(J)=TC(J)+A(IJ)
  75. C
  76. C        COMPUTE GRAND TOTAL
  77. C
  78.       GT=0.0
  79.       DO 110 I=1,N
  80.   110 GT=GT+TR(I)
  81. C
  82. C        COMPUTE CHI SQUARE FOR 2 BY 2 TABLE (SPECIAL CASE)
  83. C
  84.       IF(NM-4) 130,120,130
  85.   120 CS=GT*(ABS(A(1)*A(4)-A(2)*A(3))-GT/2.0)**2  /(TC(1)*TC(2)*TR(1)
  86.      1*TR(2))
  87.       RETURN
  88. C
  89. C        COMPUTE CHI SQUARE FOR OTHER CONTINGENCY TABLES
  90. C
  91.   130 IJ=0
  92.       DO 140 J=1,M
  93.       DO 140 I=1,N
  94.       IJ=IJ+1
  95.       E=TR(I)*TC(J)/GT
  96.       IF(E-1.0) 135, 140, 140
  97.   135 IERR=1
  98.   140 CS=CS+(A(IJ)-E)*(A(IJ)-E)/E
  99.       RETURN
  100.       END
  101.