C C .................................................................. C C SUBROUTINE CHISQ C C PURPOSE C COMPUTE CHI-SQUARE FROM A CONTINGENCY TABLE C C USAGE C CALL CHISQ(A,N,M,CS,NDF,IERR,TR,TC) C C DESCRIPTION OF PARAMETERS C A - INPUT MATRIX, N BY M, CONTAINING CONTINGENCY TABLE C N - NUMBER OF ROWS IN A C M - NUMBER OF COLUMNS IN A C CS - CHI-SQUARE (OUTPUT) C NDF - NUMBER OF DEGREES OF FREEDOM (OUTPUT) C IERR - ERROR CODE (OUTPUT) C 0 - NORMAL CASE C 1 - EXPECTED VALUE IS LESS THAN 1.0 IN ONE OR C MORE CELLS C 3 - NUMBER OF DEGREES OF FREEDOM IS ZERO C TR - WORK VECTOR OF LENGTH N C TC - WORK VECTOR OF LENGTH M C C REMARKS C IF ONE OR MORE CELLS CONTAIN AN EXPECTED VALUE (I.E., C THEORETICAL VALUE) LESS THAN 1.0, CHI-SQUARE WILL BE C COMPUTED, BUT ERROR CODE WILL BE SET TO 1. C SEE REFERENCE GIVEN BELOW. C CHI-SQUARE IS SET TO ZERO IF EITHER N OR M IS ONE (ERROR C CODE 3). C C SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED C NONE C C METHOD C DESCRIBED IN S. SIEGEL, 'NONPARAMETRIC STATISTICS FOR THE C BEHAVIORAL SCIENCES', MCGRAW-HILL, NEW YORK, 1956, C CHAPTER 6 AND CHAPTER 8. C C .................................................................. C SUBROUTINE CHISQ(A,N,M,CS,NDF,IERR,TR,TC) DIMENSION A(1),TR(1),TC(1) C NM=N*M IERR=0 CS=0.0 C C FIND DEGREES OF FREEDOM C NDF=(N-1)*(M-1) IF(NDF) 5,5,10 5 IERR=3 RETURN C C COMPUTE TOTALS OF ROWS C 10 DO 90 I=1,N TR(I)=0.0 IJ=I-N DO 90 J=1,M IJ=IJ+N 90 TR(I)=TR(I)+A(IJ) C C COMPUTE TOTALS OF COLUMNS C IJ=0 DO 100 J=1,M TC(J)=0.0 DO 100 I=1,N IJ=IJ+1 100 TC(J)=TC(J)+A(IJ) C C COMPUTE GRAND TOTAL C GT=0.0 DO 110 I=1,N 110 GT=GT+TR(I) C C COMPUTE CHI SQUARE FOR 2 BY 2 TABLE (SPECIAL CASE) C IF(NM-4) 130,120,130 120 CS=GT*(ABS(A(1)*A(4)-A(2)*A(3))-GT/2.0)**2 /(TC(1)*TC(2)*TR(1) 1*TR(2)) RETURN C C COMPUTE CHI SQUARE FOR OTHER CONTINGENCY TABLES C 130 IJ=0 DO 140 J=1,M DO 140 I=1,N IJ=IJ+1 E=TR(I)*TC(J)/GT IF(E-1.0) 135, 140, 140 135 IERR=1 140 CS=CS+(A(IJ)-E)*(A(IJ)-E)/E RETURN END