TESTS OF COMPOSITE DISTRIBUTIONAL HYPOTHESES FOR THE ANALYSIS OF BIOLOGICAL & ENVIRONMENTAL DATA This library contains FORTRAN subroutines for testing the hypothesis of normality or the hypothesis of exponentiality. Lognormality can be tested by carrying out the tests of normality on the log transformed data. Some tests are general goodness-of-fit tests that allow any distribution to be tested simply by basing the distributional components of the test statistic on the hypothesized distribution. The set of subroutines consist of 24 separate tests. All tests or a subset of tests can be called from the main program. The following step may be used to access the subroutines. Create a FORTRAN main program including one or more call statements,such as: CALL TEST#(X,Y,N) where # is the test number (see Table) X is the input vector of length N = n sample points Y is the output vector - test statistic(s), df's N is an integer value,number of sample points. TEST TEST # TEST NAME OUTPUT 1 Omnibus Moments Test for Normality 2 Geary's Test of Normality 3 Studentized Range for Testing Normality 4 D'Agostino's D-Statistic Test of Normality 5 Kuiper V-Statistic Modified to Test Normality 6 Watson U^2-Statistic Modified to Test Normality 7 Durbin's Exact Test (Normal Distribution 8 Anderson-Darling Statistic Modified to Test Normality 9 Cramer-Von Mises W^2-Statistic to Test Normality * 10 Kolmogorov-Smirnov D-Statistic to Test Normality * 11 Kolmogorov-Smirnov D-Statistic ( Lilliefors Critical Values) 12 Chi-Square Test of Normality (Equal Probability Classes) 13 Shapiro-Wilk W Test of Normality for Small Samples 14 Shapiro-Francia W' Test of Normality for Large Samples 15 Shapiro-Wilk W Test of Exponentiality 16 Cramer-Von Mises W^2-Statistic to Test Exponentiality * 17 Kolmogorov-Smirnov D-Statistic to Test Exponentiality * 18 Kuiper V-Statistic Modified to Test Exponentiality 19 Watson U^2-Statistic Modified to Test Exponentiality 20 Anderson-Darling Statistic Modified to Test Exponentiality 21 Chi-Square Test for Exponentiality(with E.P.C.) 22 Modified Maximum Likelihood Ratio Test ** 23 Coefficient of Variation Test 24 Kotz Separate-Families Test for Lognormality vs. Normality * indicates the test statistic is modified ** indicates the test is for normality vs. lognormality E.P.C. --- Equal Probability Classes These subroutines can be freely distributed and can be freely used for non-commercial purposes. C C FORTRAN SUBROUTINES TO TEST FOR NORMALITY,LOGNORMALITY,EXPONENTIALITY AND C GENERAL GOODNESS-OF-FIT TESTS THAT ALLOW ANY DISTRIBUTION TO BE TESTED C**************************************************************************** C C TESTS OF COMPOSITE DISTRIBUTIONAL HYPOTHESES C -------------------------------------------- C C INPUT: X [The vector of observed values] C N [The number of input observations] C C OUTPUT: Y [The Composite Distributional Test Statistics] C C SUBROUTINES: C ------------ C C ID TEST NAME C C TEST1 Omnibus Moments Test for Normality C TEST2 Geary's Test of Normality C TEST3 Studentized Range for Testing Normality C TEST4 D'Agostino's D-Statistic Test of Normality C TEST5 Kuiper V-Statistic Modified to Test Normality C TEST6 Watson U^2-Statistic Modified to Test Normality C TEST7 Durbin's Exact Test (Normal Distribution,Simple Hypothesis) C TEST8 Anderson-Darling Statistic Modified to Test Normality C TEST9 Cramer-Von Mises W^2-Statistic Modified to Test Normality C TEST10 Kolmogorov-Smirnov D-Statistic Modified to Test Normality C TEST11 Kolmogorov-Smirnov D-Statistic with Lilliefors Critical Values C TEST12 Chi-Square Test of Normality (with Equal Probability Classes) C TEST13 Shapiro-Wilk W Test of Normality for Small Samples C TEST14 Shapiro-Francia W' Test of Normality for Large Samples C TEST15 Shapiro-Wilk W Test of Exponentiality C TEST16 Cramer-Von Mises W^2-Statistic Modified to Test Exponentiality C TEST17 Kolmogorov-Smirnov D-Statistic Modified to Test Exponentiality C TEST18 Kuiper V-Statistic Modified to Test Exponentiality C TEST19 Watson U^2-Statistic Modified to Test Exponentiality C TEST20 Anderson-Darling Statistic Modified to Test Exponentiality C TEST21 Chi-Square Test of Exponentiality (with Equal Probability Classes) C TEST22 Modified Maximum Likelihood Ratio Test for Normality vs. Lognormality C TEST23 Coefficient of Variation Test C TEST24 Kotz Separate-Families Test for Lognormality vs. Normality C C C USAGE: CALL TEST#(X,Y,N) with # = 1,2,3...........,24 C C EXAMPLE: CALL TEST20(X,Y,10) for an input vector X consisting of C 10 observations results in the output vector Y where C Y(1) = AD(E).[The Shapiro-Wilk W Test of Exponentiality]. C C REFERENCES: C C Anderson ,T.W. and D.A. Darling.1954.A Test of Goodness of Fit. C JASA 49:765-69. C D'Agostino,R.B. and E.S. Pearson.1973.Tests for Departure from Normality. C Biometrika 60(3):613-22. C D'Agostino,R.B. and B. Rosman.1974.The Power of Geary's Test of C Normality.Biometrika 61(1):181-84. C Durbin,J.1961.Some Methods of Constructing Exact Tests. C Biometrika 48(1&2):41-55. C Durbin,J.1973.Distribution Theory Based on the Sample Distribution C Function.SIAM.Philadelphia. C Geary,R.C.1947.Testing for Normality.Biometrika 36:68-97. C Kotz,S. 1973. Normality vs. Lognormality with Applications. C Communications in Statistics 1(2):113-32. C Lehmann,E.L.1986.Testing Statistical Hypotheses.John Wiley & Sons. C New York. C Linnet,K.1988.Testing Normality of Transformed Data. C Applied Statistics 32(2):180-186. C SAS [Statistical Analysis System] User's Guide:Basics.Version 5.1985. C SAS User's Guide:Statistics.Version 6.Volumes 1 and 2.1993. C Shapiro,S.S. and R.S.Francia.1972.An Approximate Analysis of Variance C Test for Normality.JASA 67(337):215-216. C Shapiro,S.S.,M.B.Wilk and H.J.Chen.1968.A Comparative Study of Various C Tests for Normality.JASA 63:1343-72. C Weiss,M.S. 1978.Modification of the Kolmogorov-Smirnov Statistic for Use C with Correlated Data.JASA 73(364):872-75. C C C**************************************************************************** C C Note if the sample size N >= 150 then increase the DIMENSION statement C for the TESTS of interest in each subroutine. C The subroutines can be run as a group or individually e.g., as a group: C suppose TESTS 4,12 and 21 are required and the input vector consists of C 20 observations; then in the MAIN program write: C C CALL TEST4(X,Y,20) C CALL TEST12(X,Y,20) C CALL TEST21(X,Y,20) C C**************************************************************************** C C C**************************************************************************** C C Subroutines By: Paul Johnson C 1420 Lake Blvd #29 C Davis,California 95616 C EZ006244@ALCOR.UCDAVIS.EDU C C These subroutines can be freely used for non-commercial purposes and can C be freely distributed. C C Copyright 1994, Paul Johnson C C**************************************************************************** C C SUBROUTINE TEST1(X,Y,N) DIMENSION X(150),Y(2),Z(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 SUM1=SUM1+X(I) MEAN=SUM1/N DO 20 I = 1,N 20 SUM2=SUM2+(X(I)-MEAN)**3 DO 30 I = 1,N 30 Z(I)=(X(I)-MEAN)**2 DO 40 I = 1,N 40 SUM3=SUM3+Z(I) SUM5=SUM3 SUM3=SUM3**1.5 TSSM=(N**0.5)*SUM2/SUM3 DO 50 I = 1,N 50 SUM4=SUM4+(X(I)-MEAN)**4 FSSM=(N*SUM4)/(SUM5*SUM5) Y(1) = TSSM Y(2) = FSSM WRITE(6,300) 300 FORMAT(1X,' ') WRITE(6,301) 301 FORMAT(10X,'TESTS OF COMPOSITE DISTRIBUTIONAL HYPOTHESES') WRITE(6,302) 302 FORMAT(1X,' ') WRITE(6,100) Y(1),Y(2) 100 FORMAT(/,2X,'TEST1 TSM =',F10.4,' FSM =',F10.4) RETURN END SUBROUTINE TEST2(X,Y,N) DIMENSION X(150),Y(2),Z(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 DO 10 I = 1,N 10 SUM1=SUM1+X(I) MEAN=SUM1/N DO 20 I = 1,N 20 Z(I)=ABS(X(I)-MEAN) DO 30 I = 1,N 30 SUM2=SUM2+Z(I) DO 40 I = 1,N 40 SUM3=SUM3+(X(I)-MEAN)**2 S=N*SUM3 S1=SQRT(S) Y(1)=SUM2/S1 Y(2)=(Y(1)-0.7979)*SQRT(N*1.0)/0.2123 WRITE(6,100) Y(1),Y(2) 100 FORMAT(/,2X,'TEST2 GTN =',F10.4,' Z(GTN) =',F10.4) RETURN END SUBROUTINE TEST3(X,Y,N) DIMENSION X(150),Y(2),X1(150) DO 10 I=1,N 10 X1(I)=X(I) CALL SORT(N,X) XS=X(1) XM=X(N) DO 15 I = 1,N 15 IF (XS .GE. X(I)) XS=X(I) DO 20 I = 1,N 20 IF (XM .LE. X(I)) XM=X(I) SUM1=0 SUM2=0 DO 30 I = 1,N SUM1=SUM1+X(I) SUM2=SUM2+(X(I)*X(I)) 30 CONTINUE XBAR=SUM1/N S1 =SUM2-((SUM1*SUM1)/N) S2=S1/(N-1) S3=SQRT(S2) Y(1)=(XM-XS)/S3 DO 40 I=1,N 40 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST3 U =',F10.4) RETURN END SUBROUTINE TEST4(A,B,K) DIMENSION A(150),B(2),A1(150) REAL M2 REAL MN S1=0 T=0 MN=0 E=1 DO 10 I=1,K 10 A1(I) = A(I) CALL SORT(K,A1) DO 20 I =1,K T = T + (I - .5*(K+1))*A1(I) 20 CONTINUE DO 30 I = 1,K MN=MN+A1(I) 30 CONTINUE M2=MN/K DO 40 I=1,K S1=S1+(A1(I)-M2)**2 40 CONTINUE S2=S1/K S =SQRT(S2) D = T/(K**2*S) B(1)=(D-1.0/(2*SQRT(3.141592654)))*SQRT(K*1.0)/0.02998598 WRITE(6,100) B(1) 100 FORMAT(/,2X,'TEST4 DAGN =',F10.4) RETURN END SUBROUTINE TEST5(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION T(150),Z(150),D(2),FN3(150),X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FN3(I)=FLOAT(I)/R FX(I)=.5+(ENORMP(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 J=1,N 40 Z(J) = (FN3(J) - FX(J)) CALL SORT(N,Z) D1=Z(N) DO 50 J=1,N 50 T(J) = FX(J)-((J-1)/R) CALL SORT(N,T) D2=T(N) D(1)=D1 D(2)=D2 CALL SORT(2,D) V=D(1)+D(2) V=V*(SQRT(R)+(.82/SQRT(R))+0.05) Y(1)=V DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST5 KV(N) =',F10.4) RETURN END SUBROUTINE TEST6(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=.5+(ENORMP(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE CVM=1./FLOAT(12*N)+SUM4 DO 50 I=1,N SUM5=SUM5+FX(I) 50 CONTINUE ZBAR=SUM5/R W=CVM-R*(ZBAR-0.5)*(ZBAR-0.5) W=W*(1.0+0.5/R) Y(1)=W DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST6 WU2(N) =',F10.4) RETURN END SUBROUTINE TEST7(X,Y,N) DIMENSION X(150),C(150),X1(150),G(150),Z(150),B(150),Y(2) R=FLOAT(N) SUMX=0 SUMX2=0 DO 10 I=1,N SUMX=SUMX+X(I) SUMX2=SUMX2+X(I)**2 10 X1(I)=X(I) S2=(SUMX2-SUMX**2/N)/(N-1) DO 15 I=1,N X(I)=(X(I)-SUMX/N)/SQRT(S2) B(I)=0.5+(ENORMP(X(I)/SQRT(2.0))/2.0) 15 CONTINUE CALL SORT(N,B) DO 20 I=2,N C(I)=B(I)-B(I-1) 20 CONTINUE C(1)=B(1) C(N+1)=1-B(N) CALL SORT(N+1,C) DO 30 J=2,N G(J)=(N+2-J)*(C(J)-C(J-1)) 30 CONTINUE G(1)=(N+1)*C(1) G(N+1)=C(N+1)-C(N) DO 60 I=1,N SUM1=0 DO 50 J=1,I SUM1=SUM1+G(J) 50 CONTINUE Z(I)=(I/R)-SUM1 60 CONTINUE CALL SORT(N,Z) R=Z(N) Y(1)=R DO 70 I=1,N 70 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST7 DRB(N) =',F10.4) RETURN END SUBROUTINE TEST8(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) EXTERNAL enormp REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=.5+(enormp(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE ADB=SUM3/R ADSTAT=-R-ADB ADMOD=ADSTAT*(1.0+(.75/R)+(2.25/FLOAT(N**2))) Y(1)=ADMOD DO 50 I=1,N 50 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST8 AD(N) =',F10.4) RETURN END SUBROUTINE TEST9(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=.5+(ENORMP(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE CVM=1./FLOAT(12*N)+SUM4 CVMOD=CVM*(1.+(.5/R)) Y(1)=CVMOD DO 50 I=1,N 50 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST9 CVM(N) =',F10.4) RETURN END SUBROUTINE TEST10(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION T(150),Z(150),D(2),FN3(150),X1(150) REAL MEAN REAL KS SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FN3(I)=FLOAT(I)/R FX(I)=.5+(ENORMP(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 J=1,N 40 Z(J)=(FN3(J)-FX(J)) CALL SORT(N,Z) D1=Z(N) DO 50 J=1,N 50 T(J)=FX(J)-((J-1)/R) CALL SORT(N,T) D2=T(N) D(1)=D1 D(2)=D2 CALL SORT(2,D) DMAX=D(2) KS=DMAX*(SQRT(R)+(.85/SQRT(R))-.01) Y(1)=KS DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST10 KSD(N) =',F10.4) RETURN END SUBROUTINE TEST11(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION T(150),Z(150),D(2),FN3(150),X1(150) REAL MEAN SUM1=0 SUM2=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N X(I)=(X(I)-XBAR)/SDX FN1(I)=FLOAT(I)/R FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FN3(I)=FLOAT(I)/R FX(I)=.5+(ENORMP(X(I)/SQRT(2.0))/2.0) IF (FX(I) .LE. 0.0) FX(I) = 0.00001 30 IF (FX(I) .GE. 1.0) FX(I) = 0.99999 DO 40 J=1,N 40 Z(J)=(FN3(J)-FX(J)) CALL SORT(N,Z) D1=Z(N) DO 50 J=1,N 50 T(J)=FX(J)-((J-1)/R) CALL SORT(N,T) D2=T(N) D(1)=D1 D(2)=D2 CALL SORT(2,D) Y(1)=D(2) DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST11 KSD =',F10.4) RETURN END SUBROUTINE TEST12(X,Y,N) DIMENSION X(150),Y(2),V(150),V2(150),F(150) DIMENSION P(150),Z(150) EXTERNAL xinormal EXTERNAL dl REAL MEAN SUM1=0 SUM2=0 SUM3=0 A=4*((0.75*(N-1)*(N-1))**0.2) K1=A C=A-K1 IF(C .GT. 0.5) K1=K1+1 10 R=N/K1 IF(R .LT. 5) K1=K1-1 IF(R .LT.5) GOTO 10 K2=K1-1 DO 15 I=1,K1 15 F(I)=0 DO 20 I=1,N 20 SUM1=SUM1+X(I) MEAN=SUM1/N DO 25 I = 1,N 25 SUM2=SUM2+(X(I)-MEAN)*(X(I)-MEAN) S1=SQRT(SUM2/(N-1)) DO 30 I=1,K2 30 P(I)=FLOAT(I)/K1 DO 40 I=1,K2 40 Z(I)=XINORMAL(P(I)) DO 50 I=1,K2 50 V(I)=MEAN+(Z(I)*S1) DO 51 I=1,K2 51 V2(I+1)=V(I)+0.0001 DO 55 I=1,N DO 45 J=2,K2 IF(X(I) .GE. V2(J) .AND. X(I) .LE. V(J)) F(J)=1+F(J) 45 CONTINUE IF(X(I) .GE. V2(K2+1)) F(K2+1)=F(K2+1)+1 IF(X(I) .LE. V(1)) F(1)=F(1)+1 55 CONTINUE DO 65 I=1,K1 65 SUM3=SUM3+F(I)*F(I) Y(1)=SUM3*K1/N-N Y(2)=FLOAT(K1)-3 WRITE(6,100) Y(1),Y(2) 100 FORMAT(/,2X,'TEST12 CS(N) =',F10.4,' DOF =',F10.4) RETURN END SUBROUTINE TEST13(X,Y,N) DIMENSION X(150),X1(150),Y(2),A(25) SUMB=0 SUMX=0 SUMX2=0 K=N/2 IF (N .GT. 50) GO TO 115 DO 15 I =1,N SUMX=SUMX+X(I) SUMX2=SUMX2+X(I)**2 A(I) = 0.0 15 X1(I)=X(I) S2=SUMX2-SUMX**2/N CALL SORT(N,X) IF (N .GE. 20) GO TO 53 IF (N .GE. 10) GO TO 33 IF (N .NE. 3) GO TO 21 A(1)=0.7071 GO TO 115 21 IF (N .NE. 4) GO TO 23 A(1)=0.6872 A(2)=0.1677 GO TO 115 23 IF (N .NE. 5) GO TO 25 A(1)=0.6646 A(2)=0.2413 GO TO 115 25 IF (N .NE. 6) GO TO 27 A(1)=0.6431 A(2)=0.2806 A(3)=0.0875 GO TO 115 27 IF (N .NE. 7) GO TO 29 A(1)=0.6233 A(2)=0.3031 A(3)=0.1401 GO TO 115 29 IF (N .NE. 8) GO TO 31 A(1)=0.6052 A(2)=0.3164 A(3)=0.1743 A(4)=0.0561 GO TO 115 31 IF (N .NE. 9) GO TO 33 A(1)=0.5888 A(2)=0.3244 A(3)=0.1976 A(4)=0.0947 GO TO 115 33 IF (N .NE. 10) GO TO 35 A(1)=0.5739 A(2)=0.3291 A(3)=0.2141 A(4)=0.1224 A(5)=0.0399 GO TO 115 35 IF (N .NE. 11) GO TO 37 A(1)=0.5601 A(2)=0.3315 A(3)=0.2260 A(4)=0.1429 A(5)=0.0695 GO TO 115 37 IF (N .NE. 12) GO TO 39 A(1)=0.5475 A(2)=0.3325 A(3)=0.2347 A(4)=0.1586 A(5)=0.0922 A(6)=0.0303 GO TO 115 39 IF (N .NE. 13) GO TO 41 A(1)=0.5359 A(2)=0.3325 A(3)=0.2412 A(4)=0.1707 A(5)=0.1099 A(6)=0.0539 GO TO 115 41 IF (N .NE. 14) GO TO 43 A(1)=0.5251 A(2)=0.3318 A(3)=0.2460 A(4)=0.1802 A(5)=0.1240 A(6)=0.0727 A(7)=0.0240 GO TO 115 43 IF (N .NE. 15) GO TO 45 A(1)=0.5150 A(2)=0.3306 A(3)=0.2495 A(4)=0.1878 A(5)=0.1353 A(6)=0.0880 A(7)=0.0433 GO TO 115 45 IF (N .NE. 16) GO TO 47 A(1)=0.5056 A(2)=0.3290 A(3)=0.2521 A(4)=0.1939 A(5)=0.1447 A(6)=0.1005 A(7)=0.0593 A(8)=0.0196 GO TO 115 47 IF (N .NE. 17) GO TO 49 A(1)=0.4968 A(2)=0.3273 A(3)=0.2540 A(4)=0.1988 A(5)=0.1524 A(6)=0.1109 A(7)=0.0725 A(8)=0.0359 GO TO 115 49 IF (N .NE. 18) GO TO 51 A(1)=0.4886 A(2)=0.3253 A(3)=0.2553 A(4)=0.2027 A(5)=0.1587 A(6)=0.1197 A(7)=0.0837 A(8)=0.0496 A(9)=0.0163 GO TO 115 51 IF (N .NE. 19) GO TO 53 A(1) = 0.4808 A(2) = 0.3232 A(3) = 0.2561 A(4) = 0.2059 A(5) = 0.1641 A(6) = 0.1271 A(7) = 0.0932 A(8) = 0.0612 A(9) = 0.0303 GO TO 115 53 IF (N .NE. 20) GO TO 55 A(1) = 0.4734 A(2) = 0.3211 A(3) = 0.2565 A(4) = 0.2085 A(5) = 0.1686 A(6) = 0.1334 A(7) = 0.1013 A(8) = 0.0711 A(9) = 0.0422 A(10) = 0.0140 GO TO 115 55 IF (N .NE. 21) GO TO 57 A(1) = 0.4643 A(2) = 0.3185 A(3) = 0.2578 A(4) = 0.2119 A(5) = 0.1736 A(6) = 0.1399 A(7) = 0.1092 A(8) = 0.0804 A(9) = 0.0530 A(10) = 0.0263 GO TO 115 57 IF (N .NE. 22) GO TO 59 A(1) = 0.4590 A(2) = 0.3156 A(3) = 0.2571 A(4) = 0.2131 A(5) = 0.1764 A(6) = 0.1443 A(7) = 0.1150 A(8) = 0.0878 A(9) = 0.0618 A(10) = 0.0368 A(11) = 0.0122 GO TO 115 59 IF (N .NE. 23) GO TO 61 A(1) = 0.4542 A(2) = 0.3126 A(3) = 0.2563 A(4) = 0.2139 A(5) = 0.1787 A(6) = 0.1480 A(7) = 0.1201 A(8) = 0.0941 A(9) = 0.0696 A(10) = 0.0459 A(11) = 0.0228 GO TO 115 61 IF (N .NE. 24) GO TO 63 A(1) = 0.4493 A(2) = 0.3098 A(3) = 0.2554 A(4) = 0.2145 A(5) = 0.1807 A(6) = 0.1512 A(7) = 0.1245 A(8) = 0.0997 A(9) = 0.0764 A(10) = 0.0539 A(11) = 0.0321 A(12) = 0.0107 GO TO 115 63 IF (N .NE. 25) GO TO 65 A(1) = 0.4450 A(2) = 0.3069 A(3) = 0.2543 A(4) = 0.2148 A(5) = 0.1822 A(6) = 0.1539 A(7) = 0.1283 A(8) = 0.1046 A(9) = 0.0823 A(10) = 0.0610 A(11) = 0.0403 A(12) = 0.0200 GO TO 115 65 IF (N .NE. 26) GO TO 67 A(1) = 0.4407 A(2) = 0.3043 A(3) = 0.2533 A(4) = 0.2151 A(5) = 0.1836 A(6) = 0.1563 A(7) = 0.1316 A(8) = 0.1089 A(9) = 0.0876 A(10) = 0.0672 A(11) = 0.0476 A(12) = 0.0284 A(13) = 0.0094 GO TO 115 67 IF (N .NE. 27) GO TO 69 A(1) = 0.4366 A(2) = 0.3018 A(3) = 0.2522 A(4) = 0.2152 A(5) = 0.1848 A(6) = 0.1584 A(7) = 0.1346 A(8) = 0.1128 A(9) = 0.0923 A(10) = 0.0728 A(11) = 0.0540 A(12) = 0.0358 A(13) = 0.0178 GO TO 115 69 IF (N .NE. 28) GO TO 71 A(1) = 0.4328 A(2) = 0.2992 A(3) = 0.2510 A(4) = 0.2151 A(5) = 0.1857 A(6) = 0.1601 A(7) = 0.1372 A(8) = 0.1162 A(9) = 0.0965 A(10) = 0.0778 A(11) = 0.0598 A(12) = 0.0424 A(13) = 0.0253 A(14) = 0.0084 GO TO 115 71 IF (N .NE. 29) GO TO 73 A(1) = 0.4291 A(2) = 0.2968 A(3) = 0.2499 A(4) = 0.2150 A(5) = 0.1864 A(6) = 0.1616 A(7) = 0.1395 A(8) = 0.1192 A(9) = 0.1002 A(10) = 0.0822 A(11) = 0.0650 A(12) = 0.0483 A(13) = 0.0320 A(14) = 0.0159 GO TO 115 73 IF (N .NE. 30) GO TO 75 A(1) = 0.4254 A(2) = 0.2944 A(3) = 0.2487 A(4) = 0.2148 A(5) = 0.1870 A(6) = 0.1630 A(7) = 0.1415 A(8) = 0.1219 A(9) = 0.1036 A(10) = 0.0862 A(11) = 0.0697 A(12) = 0.0537 A(13) = 0.0381 A(14) = 0.0227 A(15) = 0.0076 GO TO 115 75 IF (N .NE. 31) GO TO 77 A(1) = 0.4220 A(2) = 0.2921 A(3) = 0.2475 A(4) = 0.2145 A(5) = 0.1874 A(6) = 0.1641 A(7) = 0.1433 A(8) = 0.1243 A(9) = 0.1066 A(10) = 0.0899 A(11) = 0.0739 A(12) = 0.0585 A(13) = 0.0435 A(14) = 0.0289 A(15) = 0.0144 GO TO 115 77 IF (N .NE. 32) GO TO 79 A(1) = 0.4188 A(2) = 0.2898 A(3) = 0.2463 A(4) = 0.2141 A(5) = 0.1878 A(6) = 0.1651 A(7) = 0.1449 A(8) = 0.1265 A(9) = 0.1093 A(10) = 0.0931 A(11) = 0.0777 A(12) = 0.0629 A(13) = 0.0485 A(14) = 0.0344 A(15) = 0.0206 A(16) = 0.0068 GO TO 115 79 IF (N .NE. 33) GO TO 81 A(1) = 0.4156 A(2) = 0.2876 A(3) = 0.2451 A(4) = 0.2137 A(5) = 0.1880 A(6) = 0.1660 A(7) = 0.1463 A(8) = 0.1284 A(9) = 0.1118 A(10) = 0.0961 A(11) = 0.0812 A(12) = 0.0669 A(13) = 0.0530 A(14) = 0.0395 A(15) = 0.0262 A(16) = 0.0131 GO TO 115 81 IF (N .NE. 34) GO TO 83 A(1) = 0.4127 A(2) = 0.2854 A(3) = 0.2439 A(4) = 0.2132 A(5) = 0.1882 A(6) = 0.1667 A(7) = 0.1475 A(8) = 0.1301 A(9) = 0.1140 A(10) = 0.0988 A(11) = 0.0844 A(12) = 0.0706 A(13) = 0.0572 A(14) = 0.0441 A(15) = 0.0314 A(16) = 0.0187 A(17) = 0.0062 GO TO 115 83 IF (N .NE. 35) GO TO 85 A(1) = 0.4096 A(2) = 0.2834 A(3) = 0.2427 A(4) = 0.2127 A(5) = 0.1883 A(6) = 0.1673 A(7) = 0.1487 A(8) = 0.1317 A(9) = 0.1160 A(10) = 0.1013 A(11) = 0.0873 A(12) = 0.0739 A(13) = 0.0610 A(14) = 0.0484 A(15) = 0.0361 A(16) = 0.0239 A(17) = 0.0119 GO TO 115 85 IF (N .NE. 36) GO TO 87 A(1) = 0.4068 A(2) = 0.2813 A(3) = 0.2415 A(4) = 0.2121 A(5) = 0.1883 A(6) = 0.1678 A(7) = 0.1496 A(8) = 0.1331 A(9) = 0.1179 A(10) = 0.1036 A(11) = 0.0900 A(12) = 0.0770 A(13) = 0.0645 A(14) = 0.0523 A(15) = 0.0404 A(16) = 0.0287 A(17) = 0.0172 A(18) = 0.0057 GO TO 115 87 IF (N .NE. 37) GO TO 89 A(1) = 0.4040 A(2) = 0.2794 A(3) = 0.2403 A(4) = 0.2116 A(5) = 0.1883 A(6) = 0.1683 A(7) = 0.1505 A(8) = 0.1344 A(9) = 0.1196 A(10) = 0.1056 A(11) = 0.0924 A(12) = 0.0798 A(13) = 0.0677 A(14) = 0.0559 A(15) = 0.0444 A(16) = 0.0331 A(17) = 0.0220 A(18) = 0.0110 GO TO 115 89 IF (N .NE. 38) GO TO 91 A(1) = 0.4015 A(2) = 0.2774 A(3) = 0.2391 A(4) = 0.2110 A(5) = 0.1881 A(6) = 0.1686 A(7) = 0.1513 A(8) = 0.1356 A(9) = 0.1211 A(10) = 0.1075 A(11) = 0.0947 A(12) = 0.0824 A(13) = 0.0706 A(14) = 0.0592 A(15) = 0.0481 A(16) = 0.0372 A(17) = 0.0264 A(18) = 0.0158 A(19) = 0.0053 GO TO 115 91 IF (N .NE. 39) GO TO 93 A(1) = 0.3989 A(2) = 0.2755 A(3) = 0.2380 A(4) = 0.2104 A(5) = 0.1880 A(6) = 0.1689 A(7) = 0.1520 A(8) = 0.1366 A(9) = 0.1225 A(10) = 0.1092 A(11) = 0.0967 A(12) = 0.0848 A(13) = 0.0733 A(14) = 0.0622 A(15) = 0.0515 A(16) = 0.0409 A(17) = 0.0305 A(18) = 0.0203 A(19) = 0.0101 GO TO 115 93 IF (N .NE. 40) GO TO 95 A(1) = 0.3964 A(2) = 0.2737 A(3) = 0.2368 A(4) = 0.2098 A(5) = 0.1878 A(6) = 0.1691 A(7) = 0.1526 A(8) = 0.1376 A(9) = 0.1237 A(10) = 0.1108 A(11) = 0.0986 A(12) = 0.0870 A(13) = 0.0759 A(14) = 0.0651 A(15) = 0.0546 A(16) = 0.0444 A(17) = 0.0343 A(18) = 0.0244 A(19) = 0.0146 A(20) = 0.0049 GO TO 115 95 IF (N .NE. 41) GO TO 97 A(1) = 0.3940 A(2) = 0.2719 A(3) = 0.2357 A(4) = 0.2091 A(5) = 0.1876 A(6) = 0.1693 A(7) = 0.1531 A(8) = 0.1384 A(9) = 0.1249 A(10) = 0.1123 A(11) = 0.1004 A(12) = 0.0891 A(13) = 0.0782 A(14) = 0.0677 A(15) = 0.0575 A(16) = 0.0476 A(17) = 0.0379 A(18) = 0.0283 A(19) = 0.0188 A(20) = 0.0094 GO TO 115 97 IF (N .NE. 42) GO TO 99 A(1) = 0.3917 A(2) = 0.2701 A(3) = 0.2345 A(4) = 0.2085 A(5) = 0.1874 A(6) = 0.1694 A(7) = 0.1535 A(8) = 0.1392 A(9) = 0.1259 A(10) = 0.1136 A(11) = 0.1020 A(12) = 0.0909 A(13) = 0.0804 A(14) = 0.0701 A(15) = 0.0602 A(16) = 0.0506 A(17) = 0.0411 A(18) = 0.0318 A(19) = 0.0227 A(20) = 0.0136 A(21) = 0.0045 GO TO 115 99 IF (N .NE. 43) GO TO 101 A(1) = 0.3894 A(2) = 0.2684 A(3) = 0.2334 A(4) = 0.2078 A(5) = 0.1871 A(6) = 0.1695 A(7) = 0.1539 A(8) = 0.1398 A(9) = 0.1269 A(10) = 0.1149 A(11) = 0.1035 A(12) = 0.0927 A(13) = 0.0824 A(14) = 0.0724 A(15) = 0.0628 A(16) = 0.0534 A(17) = 0.0442 A(18) = 0.0352 A(19) = 0.0263 A(20) = 0.0175 A(21) = 0.0087 GO TO 115 101 IF (N .NE. 44) GO TO 103 A(1) = 0.3872 A(2) = 0.2667 A(3) = 0.2323 A(4) = 0.2072 A(5) = 0.1868 A(6) = 0.1695 A(7) = 0.1542 A(8) = 0.1405 A(9) = 0.1278 A(10) = 0.1160 A(11) = 0.1049 A(12) = 0.0943 A(13) = 0.0842 A(14) = 0.0745 A(15) = 0.0651 A(16) = 0.0560 A(17) = 0.0471 A(18) = 0.0383 A(19) = 0.0296 A(20) = 0.0211 A(21) = 0.0126 A(22) = 0.0042 GO TO 115 103 IF (N .NE. 45) GO TO 105 A(1) = 0.3850 A(2) = 0.2651 A(3) = 0.2313 A(4) = 0.2065 A(5) = 0.1865 A(6) = 0.1695 A(7) = 0.1545 A(8) = 0.1410 A(9) = 0.1286 A(10) = 0.1170 A(11) = 0.1062 A(12) = 0.0959 A(13) = 0.0860 A(14) = 0.0765 A(15) = 0.0673 A(16) = 0.0584 A(17) = 0.0497 A(18) = 0.0412 A(19) = 0.0328 A(20) = 0.0245 A(21) = 0.0163 A(22) = 0.0081 GO TO 115 105 IF (N .NE. 46) GO TO 107 A(1) = 0.3830 A(2) = 0.2635 A(3) = 0.2302 A(4) = 0.2058 A(5) = 0.1862 A(6) = 0.1695 A(7) = 0.1548 A(8) = 0.1415 A(9) = 0.1293 A(10) = 0.1180 A(11) = 0.1073 A(12) = 0.0972 A(13) = 0.0876 A(14) = 0.0783 A(15) = 0.0694 A(16) = 0.0607 A(17) = 0.0522 A(18) = 0.0439 A(19) = 0.0357 A(20) = 0.0277 A(21) = 0.0197 A(22) = 0.0118 A(23) = 0.0039 GO TO 115 107 IF (N .NE. 47) GO TO 109 A(1) = 0.3808 A(2) = 0.2620 A(3) = 0.2291 A(4) = 0.2052 A(5) = 0.1859 A(6) = 0.1695 A(7) = 0.1550 A(8) = 0.1420 A(9) = 0.1300 A(10) = 0.1189 A(11) = 0.1085 A(12) = 0.0986 A(13) = 0.0892 A(14) = 0.0801 A(15) = 0.0713 A(16) = 0.0628 A(17) = 0.0546 A(18) = 0.0465 A(19) = 0.0385 A(20) = 0.0307 A(21) = 0.0229 A(22) = 0.0153 A(23) = 0.0076 GO TO 115 109 IF (N .NE. 48) GO TO 111 A(1) = 0.3789 A(2) = 0.2604 A(3) = 0.2281 A(4) = 0.2045 A(5) = 0.1855 A(6) = 0.1693 A(7) = 0.1551 A(8) = 0.1423 A(9) = 0.1306 A(10) = 0.1197 A(11) = 0.1095 A(12) = 0.0998 A(13) = 0.0906 A(14) = 0.0817 A(15) = 0.0731 A(16) = 0.0648 A(17) = 0.0568 A(18) = 0.0489 A(19) = 0.0411 A(20) = 0.0335 A(21) = 0.0259 A(22) = 0.0185 A(23) = 0.0111 A(24) = 0.0037 GO TO 115 111 IF (N .NE. 49) GO TO 113 A(1) = 0.3770 A(2) = 0.2589 A(3) = 0.2271 A(4) = 0.2038 A(5) = 0.1851 A(6) = 0.1692 A(7) = 0.1553 A(8) = 0.1427 A(9) = 0.1312 A(10) = 0.1205 A(11) = 0.1105 A(12) = 0.1010 A(13) = 0.0919 A(14) = 0.0832 A(15) = 0.0748 A(16) = 0.0667 A(17) = 0.0588 A(18) = 0.0511 A(19) = 0.0436 A(20) = 0.0361 A(21) = 0.0288 A(22) = 0.0215 A(23) = 0.0143 A(24) = 0.0071 GO TO 115 113 IF (N .NE. 50) GO TO 115 A(1) = 0.3751 A(2) = 0.2574 A(3) = 0.2260 A(4) = 0.2032 A(5) = 0.1847 A(6) = 0.1691 A(7) = 0.1554 A(8) = 0.1430 A(9) = 0.1317 A(10) = 0.1212 A(11) = 0.1113 A(12) = 0.1020 A(13) = 0.0932 A(14) = 0.0846 A(15) = 0.0764 A(16) = 0.0685 A(17) = 0.0608 A(18) = 0.0532 A(19) = 0.0459 A(20) = 0.0386 A(21) = 0.0314 A(22) = 0.0244 A(23) = 0.0174 A(24) = 0.0104 A(25) = 0.0035 115 IF (N .GT. 50) WRITE(6,202) 202 FORMAT(1X,' ') IF (N .GT. 50) WRITE(6,203) 203 FORMAT(1X,'THIS IS THE SHAPIRO-WILK TEST FOR SMALL SAMPLES') IF (N .GT. 50) WRITE (6,204) 204 FORMAT(1X,'THE SAMPLE SIZE MUST BE LESS THAN OR EQUAL TO 50') IF (N .GT. 50) GO TO 160 DO 140 I=1,K J=N-I+1 140 SUMB=SUMB+A(I)*(X(J)-X(I)) Y(1)=SUMB**2/S2 DO 150 I=1,N 150 X(I)=X1(I) WRITE(6,205) Y(1) 205 FORMAT(/,2X,'TEST13 SW(N) =',F10.4) 160 CONTINUE RETURN END SUBROUTINE TEST14(X,Y,N) DIMENSION X(150),X1(150),Y(2),Z(150),P(150) EXTERNAL xinormal EXTERNAL dl SUMA=0 SUMB=0 SUMC=0 SUMD=0 DO 10 I =1,N 10 X1(I)=X(I) CALL SORT(N,X) DO 20 I = 1,N 20 P(I)=(FLOAT(I)-.375)/(0.25+N) DO 25 I=1,N 25 Z(I)=XINORMAL(P(I)) DO 30 I=1,N SUMA=SUMA+(Z(I)*X(I)) SUMB=SUMB+(Z(I)**2) SUMC=SUMC+X(I) 30 SUMD=SUMD+X(I)**2 Y(1)=(SUMA**2/SUMB)/(SUMD-SUMC**2/N) DO 40 I=1,N 40 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST14 SF(N) =',F10.4) RETURN END SUBROUTINE TEST15(X,Y,N) DIMENSION X(150),Y(2),X1(150) REAL MEAN DO 10 I = 1,N 10 X1(I)=X(I) R=FLOAT(N) CALL SORT(N,X) XS=X(1) SUM1=0 SUM2=0 DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=SUM2-((SUM1*SUM1)/N) B1=SQRT(R/(R-1)) B=(XBAR-XS)*B1 Y(1)=(B*B)/S1 DO 30 I=1,N 30 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST15 SW(E) =',F10.4) RETURN END SUBROUTINE TEST16(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=1-EXP(X(I)*(-1.0)/XBAR) 30 CONTINUE DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE CVM=1./FLOAT(12*N)+SUM4 CVMOD=CVM*(1.+(.16/R)) Y(1)=CVMOD DO 50 I=1,N 50 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST16 CVM(E) =',F10.4) RETURN END SUBROUTINE TEST17(X,Y,N) DIMENSION X(150),Y(2),FX(150) DIMENSION T(150),Z(150),D(2),FN3(150),X1(150) REAL MEAN REAL KS SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N FN3(I)=FLOAT(I)/R FX(I)=1-EXP(X(I)*(-1.0)/XBAR) 30 CONTINUE DO 40 J=1,N 40 Z(J)=(FN3(J)-FX(J)) CALL SORT(N,Z) D1=Z(N) DO 50 J=1,N 50 T(J)=FX(J)-((J-1)/R) CALL SORT(N,T) D2=T(N) D(1)=D1 D(2)=D2 CALL SORT(2,D) DMAX=D(2) KS=(DMAX-0.2/R)*(SQRT(R)+(.5/SQRT(R))+0.26) Y(1)=KS DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST17 KSD(E) =',F10.4) RETURN END SUBROUTINE TEST18(X,Y,N) DIMENSION X(150),Y(2),FX(150) DIMENSION T(150),Z(150),D(2),FN3(150),X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N FN3(I)=FLOAT(I)/R FX(I)=1-EXP(X(I)*(-1.0)/XBAR) 30 CONTINUE DO 40 J=1,N 40 Z(J)=(FN3(J)-FX(J)) CALL SORT(N,Z) D1=Z(N) DO 50 J=1,N 50 T(J)=FX(J)-((J-1)/R) CALL SORT(N,T) D2=T(N) D(1)=D1 D(2)=D2 V=D(1)+D(2) V=(V-0.2/R)*(SQRT(R)+(.35/SQRT(R))+0.24) Y(1)=V DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST18 KV(E) =',F10.4) RETURN END SUBROUTINE TEST19(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=1-EXP(X(I)*(-1.0)/XBAR) 30 CONTINUE DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE CVM=1./FLOAT(12*N)+SUM4 DO 50 I=1,N SUM5=SUM5+FX(I) 50 CONTINUE ZBAR=SUM5/R W=CVM-R*(ZBAR-0.5)*(ZBAR-0.5) W=W*(1.0+0.16/R) Y(1)=W DO 60 I=1,N 60 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST19 WU2(E) =',F10.4) RETURN END SUBROUTINE TEST20(X,Y,N) DIMENSION X(150),Y(2),FX(150),FN1(150),FN2(150) DIMENSION X1(150) REAL MEAN SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 10 I = 1,N 10 X1(I)=X(I) DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N XBAR=MEAN DO 20 I = 1,N 20 SUM2=SUM2+(X(I)*X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) SDX=SQRT(S1) R=FLOAT(N) CALL SORT(N,X) DO 30 I=1,N FN2(I)=FLOAT((2*I)-1)/FLOAT(2*N) FX(I)=1-EXP(X(I)*(-1.0)/XBAR) 30 CONTINUE DO 40 I=1,N A=((2*I)-1)*ALOG(FX(I)) B=((2*I)-1)*ALOG(1.0-FX(N+1-I)) SUM3=SUM3+A+B SUM4=SUM4+((-FN2(I)+FX(I))**2) FN1(I)=ABS(FN1(I)-FX(I)) 40 CONTINUE ADB=SUM3/R ADSTAT=-R-ADB ADEXP=ADSTAT*(1.0+(0.3/R)) Y(1)=ADEXP DO 50 I=1,N 50 X(I)=X1(I) WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST20 AD(E) =',F10.4) RETURN END SUBROUTINE TEST21(X,Y,N) DIMENSION X(150),Y(2),V(150),V2(150),F(150),P(150) REAL MEAN SUM1=0 SUM3=0 A=4*((0.75*(N-1)*(N-1))**2) K1=A C=A-K1 IF(C .GT. 0.5) K1=K1+1 10 R=N/K1 IF(R .LT. 5) K1=K1-1 IF(R .LT.5) GOTO 10 K2=K1-1 DO 15 I=1,K1 15 F(I)=0 DO 20 I=1,N 20 SUM1=SUM1+X(I) MEAN=N/SUM1 DO 30 I=1,K2 30 P(I)=FLOAT(I)/K1 DO 40 I=1,K2 40 V(I)=(-1.0/MEAN)*ALOG(1-P(I)) DO 41 I=1,K2 41 V2(I+1)=V(I)+0.0001 DO 55 I=1,N DO 45 J=2,K2 IF(X(I) .GE. V2(J) .AND. X(I) .LE. V(J)) F(J)=1+F(J) 45 CONTINUE IF(X(I) .GE. V2(K2+1)) F(K2+1)=F(K2+1)+1 IF(X(I) .LE. V(1)) F(1)=F(1)+1 55 CONTINUE DO 65 I=1,K1 65 SUM3=SUM3+F(I)*F(I) Y(1)=SUM3*K1/N-N Y(2)=FLOAT(K1)-2 WRITE(6,100) Y(1),Y(2) 100 FORMAT(/,2X,'TEST21 CS(E) =',F10.4,' DOF =',F10.4) RETURN END SUBROUTINE TEST22(X,Y,N) DIMENSION X(150),Y(2) REAL MEAN REAL M1 SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 DO 15 I =1,N 15 SUM1=SUM1+X(I) MEAN=SUM1/N DO 20 I = 1,N 20 SUM2=SUM2+ALOG(X(I)) S1=((N*SUM2)-(SUM1*SUM1))/(N*(N-1)) M1=SUM2/N DO 25 I=1,N 25 SUM4=SUM4+(ALOG(X(I))-M1)*(ALOG(X(I))-M1) S2=SUM4/N DO 30 I=1,N 30 SUM3=SUM3+(X(I)-MEAN)**3 IF(SUM3 .GE. 0) GO TO 40 WRITE(6,100) (X(I),I=1,N) 100 FORMAT(4(1X,F10.4,2X)) WRITE(6,200) 200 FORMAT(1X,'THIRD SAMPLE MOMENT ABOUT THE MEAN IS LESS THAN ZERO') WRITE(6,300) 300 FORMAT(1X,'HENCE WE ACCEPT THE NULL HYPOTHESIS OF NORMALITY') Y(1)=0 GO TO 50 40 CONTINUE DO 45 I=1,N 45 SUM5=SUM5+(X(I)-MEAN)*(X(I)-MEAN) S1=SQRT(SUM5/N) S3=SQRT(S2) E1=EXP(M1) Y(1)=S1/(S3*E1) 50 WRITE(6,400) Y(1) 400 FORMAT(/,2X,'TEST22 LR(NL) =',F10.4) RETURN END SUBROUTINE TEST23(X,Y,N) DIMENSION X(150),Y(2) SUM2=0 SUM4=0 DO 20 I = 1,N 20 SUM2=SUM2+ALOG(X(I)) DO 25 I=1,N 25 SUM4=SUM4+(ALOG(X(I))-(SUM2/N))*(ALOG(X(I))-(SUM2/N)) S2=SUM4/(N-1) S3=EXP(S2)-1 S4=SQRT(S3) Y(1)=S4 WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST23 CV(L) =',F10.4) RETURN END SUBROUTINE TEST24(X,Y,N) DIMENSION X(150),Y(2) SUM1=0 SUM2=0 SUM3=0 SUM4=0 SUM5=0 R=FLOAT(N) DO 15 I =1,N 15 SUM1=SUM1+X(I) B1=SUM1/N DO 20 I = 1,N 20 SUM2=SUM2+ALOG(X(I)) A1=SUM2/N DO 25 I=1,N 25 SUM4=SUM4+(ALOG(X(I))-A1)*(ALOG(X(I))-A1) A2=SUM4/N B3=EXP(2*A1+A2)*(EXP(A2)-1) C1=ALOG(A2/B3) C2=(EXP(4*A2)+(2*EXP(3*A2))-4)/4-A2+(0.75*EXP(A2)) C3=A2*(2*EXP(A2)-1)*(2*EXP(A2)-1) C4=2*(EXP(A2)-1)*(EXP(A2)-1) C5=C3/C4 IF(C2 .LT. C5) GO TO 30 C6=SQRT(C2-C5)*2*(SQRT(R)) Y(1)=C1/C6 GO TO 40 30 WRITE(6,35) Y(1)=999999999 35 FORMAT(/,2X,'WARNING!!! STATISTICS FOR THE NEXT TEST WILL', +' NOT BE CALCULATED DUE TO SMALL LOGVARIANCE') 40 WRITE(6,100) Y(1) 100 FORMAT(/,2X,'TEST24 KT(LN) =',F10.4) RETURN END SUBROUTINE SORT(NN,X) INTEGER I,J,K,L,IJ,NN,M,IU(16),IL(16) REAL Y,YY,X(500) M=1 I=1 J=NN 150 IF (I .GE. J) GO TO 220 160 K=I IJ=(J+I)/2 Y=X(IJ) IF (X(I) .LE. Y) GO TO 170 X(IJ)=X(I) X(I)=Y Y=X(IJ) 170 L=J IF (X(J) .GE. Y) GO TO 190 X(IJ)=X(J) X(J)=Y Y=X(IJ) IF (X(I) .LE. Y) GO TO 190 X(IJ)=X(I) X(I)=Y Y=X(IJ) GO TO 190 180 X(L)=X(K) X(K)=YY 190 L=L-1 IF (X(L) .GT. Y) GO TO 190 YY=X(L) 200 K=K+1 IF (X(K) .LT. Y) GO TO 200 IF (K .LE. L) GO TO 180 IF (L-I .LE. J-K) GO TO 210 IL(M)=I IU(M)=L I=K M=M+1 GO TO 230 210 IL(M)=K IU(M)=J J=L M=M+1 GO TO 230 220 M=M-1 IF (M .EQ. 0) GO TO 260 I=IL(M) J=IU(M) 230 IF (J-I .GE. 1) GO TO 160 I=I-1 240 I=I+1 IF (I .EQ. J) GO TO 220 Y=X(I+1) IF (X(I) .LE. Y) GO TO 240 K=I 250 X(K+I)=X(K) K=K-1 IF (Y .LT. X(K)) GO TO 250 X(K+1)=Y GO TO 240 260 CONTINUE RETURN END FUNCTION enormp(x) REAL x DOUBLE PRECISION x1,x2,x3,x4,yy1,yy2 xp1 = 0.771058495001320D-04 xp2 = -0.00133733772997339D0 xp3 = 0.0323076579225834D0 xp4 = 0.0479137145607681D0 xp5 = 0.128379167095513D0 xq1 = 0.00301048631703895D0 xq2 = 0.0538971687740286D0 xq3 = 0.375795757275549D0 xr1 = -1.36864857382717D-07 xr2 = 0.564195517478974D0 xr3 = 7.21175825088309D0 xr4 = 43.1622272220567D0 xr5 = 152.989285046940D0 xr6 = 339.320816734344D0 xr7 = 451.918953711873D0 xr8 = 300.459261020162D0 xs1 = 1.0D0 xs2 = 12.7827273196294D0 xs3 = 77.0001529352295D0 xs4 = 277.585444743988D0 xs5 = 638.980264465631D0 xs6 = 931.354094850610D0 xs7 = 790.950925327898D0 xs8 = 300.459260956983D0 xt1 = 2.10144126479064D0 xt2 = 26.2370141675169D0 xt3 = 21.3688200555087D0 xt4 = 4.65807828718470D0 xt5 = 0.282094791773523D0 xu1 = 94.1537750555460D0 xu2 = 187.114811799590D0 xu3 = 99.0191814623914D0 xu4 = 18.0124575948747D0 x3 = 0.564189583547756D0 x1 = abs(x) IF (x1.GT.0.5D0) GO TO 10 x4 = x*x yy1 = ((((xp1*x4+xp2)*x4+xp3)*x4+xp4)*x4+xp5) +1.0D0 yy2 = (((xq1*x4+xq2)*x4+xq3)*x4) + 1.0D0 enormp = x* (yy1/yy2) RETURN 10 IF (x1.GT.4.0D0) GO TO 20 yy1 = ((((((xr1*x1+xr2)*x1+xr3)*x1+xr4)*x1+xr5)*x1 + + xr6)*x1+xr7)*x1+xr8 yy2 = ((((((xs1*x1+xs2)*x1+xs3)*x1+xs4)*x1+xs5)*x1 + + xs6)*x1+xs7)*x1+xs8 enormp = 1.0D0-exp(-x*x)*yy1/yy2 IF (x .LT. 0.0D0) enormp = -enormp RETURN 20 x2 = x*x x4=1.0D0*x4 yy1 = ((((xt1*x4+xt2)*x4+xt3)*x4+xt4)*x4) + xt5 yy2 = ((((xu1*x4+xu2)*x4+xu3)*x4+xu4)*x4) + 1.0D0 enormp = (x3/x1)-(yy1*x1)/(x2*yy2) enormp = 1.0D0-exp(-x2)*enormp IF (x .LT. 0.0D0) enormp = -enormp RETURN END FUNCTION xinormal(p) DOUBLE PRECISION px,pw,f0 p0=-0.322232431088D0 p1=-1.0D0 p2=-0.342242088547D0 p3=-0.0204231210245D0 p4=-0.0000453642210148D0 q0=0.099348462606D0 q1=0.588581570495D0 q2=0.531103462366D0 q3=0.10353775285D0 q4=0.0038560700634D0 pind=p IF (p .LT. 1.0E-10) GO TO 10 GO TO 20 10 xinormal = -10 RETURN 20 IF (p .GE. 1.0) GO TO 30 GO TO 40 30 xinormal = 10 RETURN IF (p .EQ. 0.5D0) GO TO 35 GO TO 40 35 xinormal = 0.5 RETURN 40 IF (p .GT. 0.5D0) p=p-1 pw=SQRT(ALOG(1/(p*p))) f0=(((pw*q4+q3)*pw+q2)*pw+q1)*pw+q0 px=pw+((((pw*p4+p3)*pw+p2)*pw+p1)*pw+p0)/f0 if (pind .LT. 0.5D0) px=-px xinormal = px RETURN END