LAMPLT Subroutine

public subroutine LAMPLT(X, N, Alamba)

NAME

lamplt(3f) - [M_datapac:LINE_PLOT] generate a Tukey-Lambda probability
plot

SYNOPSIS

   SUBROUTINE LAMPLT(X,N,Alamba)

DESCRIPTION

lamplt(3f) generates a (tukey) lambda distribution probability plot
(with tail length parameter value = alamba).

in general, the probability density function for this distribution
is not simple.

the percent point function for this distribution is

    g(p) = ((p**alamba)-((1-p)**alamba)) / alamba

as used herein, a probability plot for a distribution is a plot
of the ordered observations versus the order statistic medians for
that distribution.

the lambda probability plot is useful in graphically testing the
composite (that is, location and scale parameters need not be
specified) hypothesis that the underlying distribution from which
the data have been randomly drawn is the lambda distribution with
tail length parameter value = alamba.

if the hypothesis is true, the probability plot should be near-linear.

a measure of such linearity is given by the calculated probability
plot correlation coefficient.

OPTIONS

 X   description of parameter
 Y   description of parameter

EXAMPLES

Sample program:

program demo_lamplt
use M_datapac, only : lamplt
implicit none
! call lamplt(x,y)
end program demo_lamplt

Results:

AUTHOR

The original DATAPAC library was written by James Filliben of the Statistical
Engineering Division, National Institute of Standards and Technology.

MAINTAINER

John Urban, 2022.05.31

LICENSE

CC0-1.0

REFERENCES

  • FILLIBEN, ‘TECHNIQUES FOR TAIL LENGTH ANALYSIS’, PROCEEDINGS OF THE EIGHTEENTH CONFERENCE ON THE DESIGN OF EXPERIMENTS IN ARMY RESEARCH DEVELOPMENT AND TESTING (ABERDEEN, MARYLAND, OCTOBER, 1972), pages 425-450.
  • HAHN AND SHAPIRO, STATISTICAL METHODS IN ENGINEERING, 1967, pages 260-308.
  • FILLIBEN, SIMPLE AND ROBUST LINEAR ESTIMATION OF THE LOCATION PARAMETER OF A SYMMETRIC DISTRIBUTION (UNPUBLISHED PH.D. DISSERTATION, PRINCETON UNIVERSITY, 1969), pages 21-44, 229-231, pages 53-58.
  • HASTINGS, MOSTELLER, TUKEY, AND WINDSOR, ‘LOW MOMENTS FOR SMALL SAMPLES: A COMPARATIVE STUDY OF ORDER STATISTICS’, ANNALS OF MATHEMATICAL STATISTICS, 18, 1947, pages 413-426.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), dimension(:) :: X
integer :: N
real(kind=wp) :: Alamba

Common Blocks

CAUPLT (subroutine)
CHSCDF (subroutine)
CODE (subroutine)
DECOMP (subroutine)
DEMOD (subroutine)
DEXPLT (subroutine)
EV1PLT (subroutine)
EV2PLT (subroutine)
EXPPLT (subroutine)
EXTREM (subroutine)
EXTREM (subroutine)
FREQ (subroutine)
GAMPLT (subroutine)
GEOPLT (subroutine)
HFNPLT (subroutine)
INVXWX (subroutine)
LGNPLT (subroutine)
LOGPLT (subroutine)
MEDIAN (subroutine)
norout (subroutine)
NORPLT (subroutine)
PARPLT (subroutine)
PLOTU (subroutine)
POIPLT (subroutine)
RUNS (subroutine)
SAMPP (subroutine)
SPCORR (subroutine)
TAIL (subroutine)
TPLT (subroutine)
TRIM (subroutine)
UNIPLT (subroutine)
WEIB (subroutine)
WEIPLT (subroutine)
WIND (subroutine)
"> common /BLOCK2_real64/

Type Attributes Name Initial
real :: WS(15000)

Source Code

      SUBROUTINE LAMPLT(X,N,Alamba)
REAL(kind=wp) :: Alamba , an , cc , hold , pp0025 , pp025 , pp975 , pp9975 ,  &
     &     q , sum1 , sum2 , sum3 , tau , W , wbar , WS , X , Y , ybar ,&
     &     yint
REAL(kind=wp) :: yslope
INTEGER :: i , iupper , N
!
!     INPUT ARGUMENTS--X      = THE  VECTOR OF
!                                (UNSORTED OR SORTED) OBSERVATIONS.
!                     --N      = THE INTEGER NUMBER OF OBSERVATIONS
!                                IN THE VECTOR X.
!                     --ALAMBA = THE  VALUE OF LAMBDA
!                                (THE TAIL LENGTH PARAMETER).
!     OUTPUT--A ONE-page LAMBDA PROBABILITY PLOT.
!     PRINTING--YES.
!     RESTRICTIONS--THE MAXIMUM ALLOWABLE VALUE OF N
!                   FOR THIS SUBROUTINE IS 7500.
!     OTHER DATAPAC   SUBROUTINES NEEDED--SORT, UNIMED, PLOT.
!     FORTRAN LIBRARY SUBROUTINES NEEDED--SQRT, LOG.
!     MODE OF INTERNAL OPERATIONS--.
!     ORIGINAL VERSION--JUNE      1972.
!     UPDATED         --SEPTEMBER 1975.
!     UPDATED         --NOVEMBER  1975.
!     UPDATED         --FEBRUARY  1976.
!
!---------------------------------------------------------------------
!
      DIMENSION X(:)
      DIMENSION Y(7500) , W(7500)
      COMMON /BLOCK2_real64/ WS(15000)
      EQUIVALENCE (Y(1),WS(1))
      EQUIVALENCE (W(1),WS(7501))
!
      iupper = 7500
!
!     CHECK THE INPUT ARGUMENTS FOR ERRORS
!
      IF ( N<1 .OR. N>iupper ) THEN
         WRITE (G_IO,99001) iupper
99001    FORMAT (' ',                                                   &
     &'***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE LAMPLT SUBROU&
     &TINE IS OUTSIDE THE ALLOWABLE (1,',I0,') INTERVAL *****')
         WRITE (G_IO,99002) N
99002    FORMAT (' ','***** THE VALUE OF THE ARGUMENT IS ',I0,' *****')
         RETURN
      ELSEIF ( N==1 ) THEN
         WRITE (G_IO,99003)
99003    FORMAT (' ',                                                   &
     &'***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUMENT TO THE LAMP&
     &LT SUBROUTINE HAS THE VALUE 1 *****')
         RETURN
      ELSE
         hold = X(1)
         DO i = 2 , N
            IF ( X(i)/=hold ) GOTO 50
         ENDDO
         WRITE (G_IO,99004) hold
99004    FORMAT (' ',                                                   &
     &'***** NON-FATAL DIAGNOSTIC--THE FIRST  INPUT ARGUMENT (A VECTOR) &
     &TO THE LAMPLT SUBROUTINE HAS ALL ELEMENTS = ',E15.8,' *****')
!
!-----START POINT-----------------------------------------------------
!
 50      an = N
!
!     SORT THE DATA
!
         CALL SORT(X,N,Y)
!
!     GENERATE UNIFORM ORDER STATISTIC MEDIANS
!
         CALL UNIMED(N,W)
!
!     COMPUTE LAMBDA DISTRIBUTION ORDER STATISTIC MEDIANS
!
         DO i = 1 , N
            q = W(i)
            IF ( -0.001_wp<Alamba .AND. Alamba<0.001_wp ) W(i)                &
     &           = LOG(q/(1.0_wp-q))
            IF ( -0.001_wp>=Alamba .OR. Alamba>=0.001_wp ) W(i)               &
     &           = (q**Alamba-(1.0_wp-q)**Alamba)/Alamba
         ENDDO
!
!     PLOT THE ORDERED OBSERVATIONS VERSUS ORDER STATISTICS MEDIANS.
!     COMPUTE THE TAIL LENGTH MEASURE OF THE DISTRIBUTION.
!     WRITE OUT THE TAIL LENGTH MEASURE OF THE DISTRIBUTION
!     AND THE SAMPLE SIZE.
!
         CALL PLOT(Y,W,N)
         IF ( -0.001_wp<Alamba .AND. Alamba<0.001_wp ) tau = 1.63473745_wp
         IF ( -0.001_wp>=Alamba .OR. Alamba>=0.001_wp ) THEN
            q = .9975_wp
            pp9975 = (q**Alamba-(1.0_wp-q)**Alamba)/Alamba
            q = .0025_wp
            pp0025 = (q**Alamba-(1.0_wp-q)**Alamba)/Alamba
            q = .975_wp
            pp975 = (q**Alamba-(1.0_wp-q)**Alamba)/Alamba
            q = .025_wp
            pp025 = (q**Alamba-(1.0_wp-q)**Alamba)/Alamba
            tau = (pp9975-pp0025)/(pp975-pp025)
         ENDIF
         WRITE (G_IO,99005) Alamba , tau , N
!
99005    FORMAT (' ','LAMBDA PROBABILITY PLOT WITH LAMBDA = ',E17.10,1X,&
     &           '(TAU = ',E15.8,')',24X,'THE SAMPLE SIZE N = ',I0)
!
!     COMPUTE THE PROBABILITY PLOT CORRELATION COEFFICIENT.
!     COMPUTE LOCATION AND SCALE ESTIMATES
!     FROM THE INTERCEPT AND SLOPE OF THE PROBABILITY PLOT.
!     THEN WRITE THEM OUT.
!
         sum1 = 0.0_wp
         DO i = 1 , N
            sum1 = sum1 + Y(i)
         ENDDO
         ybar = sum1/an
         wbar = 0.0_wp
         sum1 = 0.0_wp
         sum2 = 0.0_wp
         sum3 = 0.0_wp
         DO i = 1 , N
            sum1 = sum1 + (Y(i)-ybar)*(Y(i)-ybar)
            sum2 = sum2 + W(i)*Y(i)
            sum3 = sum3 + W(i)*W(i)
         ENDDO
         cc = sum2/SQRT(sum3*sum1)
         yslope = sum2/sum3
         yint = ybar - yslope*wbar
         WRITE (G_IO,99006) cc , yint , yslope
99006    FORMAT (' ','PROBABILITY PLOT CORRELATION COEFFICIENT = ',F8.5,&
     &           5X,'ESTIMATED INTERCEPT = ',E15.8,3X,                  &
     &           'ESTIMATED SLOPE = ',E15.8)
      ENDIF
!
END SUBROUTINE LAMPLT