Released in 1994 by Paul Johnson.
Retrieved from the Internet Archive for http://sunsite.univie.ac.at/statlib/general/cdh -- 2000-10-06
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