C***********************************************************
C   THIS ROUTINE TESTS WHETHER A SET OF N NUMBERS IN THE UNIT INTERVAL
C   BEHAVE LIKE A SAMPLE FROM THE UNIFORM(0,1) DISTRIBUTION WITH 'NDF'
C   DEGREES OF FREEDOM. IF THE N NUMBERS ARE INDEPENDENT, THEN N=NDF.
C  BUT THE 'DATA' MAY ARISE FROM THE PROBABILITY INTEGRAL TRANSFORMATION
C   AFTER K PARAMETERS ARE ESTIMATED FROM THE DATA. THE DEGREES OF
C   FREEDOM ARE THEN NDF = N-K
C
C   NOTATION:
C   DATA      AN ARRAY OF N VALUES IN (0,1.0)
C   N         SAMPLE SIZE
C   NDF       DEGEES OF FREEDOM
C   INDEX        IF INDEX=1 PERFORM TESTS
C                IF INDEX=2 PLOT IDSTRIBUTIONS
C
C   SUBROUTINES CALLED: PCDF,PLOTF,CHI
C
C   WRITTEN BY DR. KENNETH P. BURNHAM, US FISH AND WILDLIFE
C   SERVICE, SEPTEMBER 16, 1977
C***********************************************************
      SUBROUTINE UTEST (DATA,N,NDF,INDEX)
C***********************************************************************
C     DECLARATIONS
C***********************************************************************
      REAL DATA(1)
C***********************************************************************
C   COMPUTE THE MEAN AND VARIANCE
C***********************************************************************
      IF (INDEX.EQ.2) GO TO 30
      SM=0.0
      VAR=0.0
      DO 10 I=1,N
   10 SM=SM+DATA(I)
      XN=FLOAT(N)
      SM=SM/XN
      DO 20 I=1,N
      Q=DATA(I)-SM
   20 VAR=VAR+Q*Q
      XNDF=FLOAT(NDF)
      VAR=VAR/(XNDF-1.0)
C***********************************************************************
C   PRINT DATA AND STATISTICS
C***********************************************************************
      WRITE (6,40) (DATA(I),I=1,N)
      WRITE (6,50) SM,VAR
C***********************************************************************
C     TEST IF THE MEAN DIFFERS FROM 0.5
C***********************************************************************
      T=(SM-0.5)*SQRT(12.0*XNDF)
      WRITE (6,60) T
      T=T*T
      CALL CHI (1,T,PROB)
      PROB=1.-PROB
      IF (NDF.GT.9) WRITE (6,70) PROB
      RETURN
C***********************************************************************
C   PLOT THE SAMPLE CDF AND THE UNIFORM CDF
C***********************************************************************
   30 CALL PCDF (DATA,N,0.0,1.0,1)
      CALL PLOTF (3)
      CALL PCDF (DATA,N,0.0,1.0,2)
      RETURN
C***********************************************************************
C     FORMAT STATEMENTS
C***********************************************************************
C
   40 FORMAT (4X,10F7.3)
   50 FORMAT (//'0Sample Mean = ',F8.4,6X,'Sample Variance = ',F10.6)
   60 FORMAT ('0z-test value that the sample mean = 0.5 is ',F8.4)
   70 FORMAT (26X,'Significance level = ',F9.5//)
      END
