SUBROUTINE LOC(X,N) C C PURPOSE--THIS SUBROUTINE COMPUTES 4 ESTIMATES OF THE C LOCATION (TYPICAL VALUE, MEASURE OF CENTRAL C TENDANCY) OF THE DATA IN THE INPUT VECTOR X. C THE 4 ESTIMATORS EMPLOYED ARE-- C 1) THE SAMPLE MIDRANGE; C 2) THE SAMPLE MEAN; C 3) THE SAMPLE MIDMEAN; AND C 4) THE SAMPLE MEDIAN. C THE ABOVE 4 ESTIMATORS ARE NEAR-OPTIMAL C ESTIMATORS OF LOCATION C FOR SHORTER-TAILED SYMMETRIC DISTRIBUTIONS, C MODERATE-TAILED DISTRIBUTIONS, C MODERATE-LONG-TAILED DISTRIBUTIONS, C AND LONG-TAILED DISTRIBUTIONS, C RESPECTIVELY. C INPUT ARGUMENTS--X = THE SINGLE PRECISION VECTOR OF C (UNSORTED OR SORTED) OBSERVATIONS. C N = THE INTEGER NUMBER OF OBSERVATIONS C IN THE VECTOR X. C OUTPUT--1/4 PAGE OF AUTOMATIC OUTPUT C CONSISTING OF THE FOLLOWING 4 C ESTIMATES OF LOCATION C FOR THE DATA IN THE INPUT VECTOR X-- C 1) THE SAMPLE MIDRANGE; C 2) THE SAMPLE MEAN; C 3) THE SAMPLE MIDMEAN; AND C 4) THE SAMPLE MEDIAN. C PRINTING--YES. C RESTRICTIONS--THE MAXIMUM ALLOWABLE VALUE OF N C FOR THIS SUBROUTINE IS 7500. C OTHER DATAPAC SUBROUTINES NEEDED--SORT. C FORTRAN LIBRARY SUBROUTINES NEEDED--NONE. C MODE OF INTERNAL OPERATIONS--SINGLE PRECISION. C LANGUAGE--ANSI FORTRAN. C REFERENCES--DIXON AND MASSEY, PAGES 14, 70, AND 71 C --CROW, JOURNAL OF THE AMERICAN STATISTICAL ASSOCIATION, C PAGES 357 AND 387 C --KENDALL AND STUART, THE ADVANCED THEORY OF C STATISTICS, VOLUME 1, EDITION 2, 1963, PAGE 8. C WRITTEN BY--JAMES J. FILLIBEN C STATISTICAL ENGINEERING LABORATORY (205.03) C NATIONAL BUREAU OF STANDARDS C WASHINGTON, D. C. 20234 C PHONE: 301-921-2315 C ORIGINAL VERSION--JUNE 1972. C UPDATED --NOVEMBER 1975. C UPDATED --FEBRUARY 1976. C C--------------------------------------------------------------------- C DIMENSION X(1) DIMENSION Y(15000) COMMON /BLOCK2/ WS(15000) EQUIVALENCE (Y(1),WS(1)) C IPR=6 IUPPER=15000 C C CHECK THE INPUT ARGUMENTS FOR ERRORS C XMID=0.0 XMEAN=0.0 XMIDM=0.0 XMED=0.0 IF(N.LT.1.OR.N.GT.IUPPER)GOTO50 IF(N.EQ.1)GOTO55 HOLD=X(1) DO60I=2,N IF(X(I).NE.HOLD)GOTO90 60 CONTINUE WRITE(IPR, 9)HOLD GOTO90 50 WRITE(IPR,17)IUPPER WRITE(IPR,47)N RETURN 55 WRITE(IPR,18) XMID=X(1) XMEAN=X(1) XMIDM=X(1) XMED=X(1) GOTO301 90 CONTINUE 9 FORMAT(1H ,109H***** NON-FATAL DIAGNOSTIC--THE FIRST INPUT ARGUME 1NT (A VECTOR) TO THE LOC SUBROUTINE HAS ALL ELEMENTS = ,E15.8,6 1H *****) 17 FORMAT(1H , 98H***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE 1 LOC SUBROUTINE IS OUTSIDE THE ALLOWABLE (1,,I6,16H) INTERVAL * 1****) 18 FORMAT(1H ,100H***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUME 1NT TO THE LOC SUBROUTINE HAS THE VALUE 1 *****) 47 FORMAT(1H , 35H***** THE VALUE OF THE ARGUMENT IS ,I8 ,6H *****) C C-----START POINT----------------------------------------------------- C AN=N C C SORT THE DATA, C THEN COMPUTE THE SAMPLE MIDRANGE. C CALL SORT(X,N,Y) XMID=(Y(1)+Y(N))/2.0 C C COMPUTE THE SAMPLE MEAN C SUM=0.0 DO100I=1,N SUM=SUM+Y(I) 100 CONTINUE XMEAN=SUM/AN C C COMPUTE THE SAMPLE MIDMEAN C IFLAG=N-(N/4)*4 AIFLAG=IFLAG IMIN=N/4+1 IMAX=N-IMIN+1 SUM=0.0 SUM=SUM+Y(IMIN)*(4.0-AIFLAG)/4.0 SUM=SUM+Y(IMAX)*(4.0-AIFLAG)/4.0 IMINP1=IMIN+1 IMAXM1=IMAX-1 IF(IMINP1.GT.IMAXM1)GOTO250 DO200I=IMINP1,IMAXM1 SUM=SUM+Y(I) 200 CONTINUE 250 XMIDM=SUM/(AN/2.0) C C COMPUTE THE SAMPLE MEDIAN C IFLAG=N-(N/2)*2 NMID=N/2 NMIDP1=NMID+1 IF(IFLAG.EQ.0)XMED=(Y(NMID)+Y(NMIDP1))/2.0 IF(IFLAG.EQ.1)XMED=Y(NMIDP1) C C WRITE EVERYTHING OUT C 301 DO300I=1,5 WRITE(IPR,999) 300 CONTINUE WRITE(IPR,305) WRITE(IPR,999) WRITE(IPR,310)N WRITE(IPR,999) WRITE(IPR,999) WRITE(IPR,315)XMID WRITE(IPR,320)XMEAN WRITE(IPR,325)XMIDM WRITE(IPR,330)XMED C 305 FORMAT(1H ,30X,35HESTIMATES OF THE LOCATION PARAMETER) 310 FORMAT(1H ,34X,21H(THE SAMPLE SIZE N = ,I5,1H)) 315 FORMAT(1H ,38HTHE SAMPLE MIDRANGE IS ,E15.8) 320 FORMAT(1H ,38HTHE SAMPLE MEAN IS ,E15.8) 325 FORMAT(1H ,38HTHE SAMPLE 25 PERCENT TRIMMED MEAN IS ,E15.8) 330 FORMAT(1H ,38HTHE SAMPLE MEDIAN IS ,E15.8) 999 FORMAT(1H ) C RETURN END