stmom3(3f) - [M_datapac:STATISTICS] compute the third central moment
(i.e., the skewness) of a vector of observations
SUBROUTINE STMOM3(X,N,Iwrite,Xsmom3)
stmom3(3f) computes the sample standardized third central moment of
the data in the input vector x.
the sample standardized third central moment = (the sample third
central moment)/((the sample standard deviation)**3).
n (rather than n-1) has been used in the denominator in the calculation
of both the sample third central moment and the sample standard
deviation.
X description of parameter
Y description of parameter
Sample program:
program demo_stmom3
use M_datapac, only : stmom3
implicit none
! call stmom3(x,y)
end program demo_stmom3
Results:
The original DATAPAC library was written by James Filliben of the
Statistical Engineering Division, National Institute of Standards
and Technology.
John Urban, 2022.05.31
CC0-1.0
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=wp), | dimension(:) | :: | X | |||
integer | :: | N | ||||
integer | :: | Iwrite | ||||
real(kind=wp) | :: | Xsmom3 |
SUBROUTINE STMOM3(X,N,Iwrite,Xsmom3) REAL(kind=wp) :: an , hold , sum , sum2 , sum3 , vb , X , xmean , Xsmom3 INTEGER :: i , Iwrite , N ! ! INPUT ARGUMENTS--X = THE VECTOR OF ! (UNSORTED OR SORTED) OBSERVATIONS. ! --N = THE INTEGER NUMBER OF OBSERVATIONS ! IN THE VECTOR X. ! --IWRITE = AN INTEGER FLAG CODE WHICH ! (IF SET TO 0) WILL SUPPRESS ! THE PRINTING OF THE ! SAMPLE STANDARDIZED THIRD CENTRAL ! MOMENT AS IT IS COMPUTED; ! OR (IF SET TO SOME INTEGER ! VALUE NOT EQUAL TO 0), ! LIKE, SAY, 1) WILL CAUSE ! THE PRINTING OF THE ! SAMPLE STANDARDIZED THIRD CENTRAL ! MOMENT AT THE TIME IT IS COMPUTED. ! OUTPUT ARGUMENTS--XSMOM3 = THE VALUE OF THE ! COMPUTED SAMPLE STANDARDIZED THIRD ! CENTRAL MOMENT. ! OUTPUT--THE COMPUTED VALUE OF THE ! SAMPLE STANDARDIZED THIRD CENTRAL MOMENT. ! PRINTING--NONE, UNLESS IWRITE HAS BEEN SET TO A NON-ZERO ! INTEGER, OR UNLESS AN INPUT ARGUMENT ERROR ! CONDITION EXISTS. ! RESTRICTIONS--THERE IS NO RESTRICTION ON THE MAXIMUM VALUE ! OF N FOR THIS SUBROUTINE. ! MODE OF INTERNAL OPERATIONS--. ! ORIGINAL VERSION--JUNE 1972. ! UPDATED --SEPTEMBER 1975. ! UPDATED --NOVEMBER 1975. ! !--------------------------------------------------------------------- ! DIMENSION X(:) ! ! CHECK THE INPUT ARGUMENTS FOR ERRORS ! an = N IF ( N<1 ) THEN WRITE (G_IO,99001) 99001 FORMAT (' ', & &'***** FATAL ERROR--THE SECOND INPUT ARGUMENT TO THE STMOM3 SUBROU& &TINE IS NON-POSITIVE *****') WRITE (G_IO,99002) N 99002 FORMAT (' ','***** THE VALUE OF THE ARGUMENT IS ',I0,' *****') RETURN ELSE IF ( N==1 ) THEN WRITE (G_IO,99003) 99003 FORMAT (' ', & &'***** NON-FATAL DIAGNOSTIC--THE SECOND INPUT ARGUMENT TO THE STMO& &M3 SUBROUTINE HAS THE VALUE 1 *****') Xsmom3 = 0.0_wp 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 STMOM3 SUBROUTINE HAS ALL ELEMENTS = ',E15.8,' *****') Xsmom3 = 0.0_wp ENDIF GOTO 100 ! !-----START POINT----------------------------------------------------- ! 50 sum = 0.0_wp DO i = 1 , N sum = sum + X(i) ENDDO xmean = sum/an sum2 = 0.0_wp sum3 = 0.0_wp DO i = 1 , N sum2 = sum2 + (X(i)-xmean)**2 sum3 = sum3 + (X(i)-xmean)**3 ENDDO sum3 = sum3/an vb = sum2/an Xsmom3 = sum3/(vb**1.5_wp) ENDIF ! 100 IF ( Iwrite==0 ) RETURN WRITE (G_IO,99005) 99005 FORMAT (' ') WRITE (G_IO,99006) N , Xsmom3 99006 FORMAT (' ', & & 'THE SAMPLE STANDARDIZED THIRD CENTRAL MOMENT FOR THE ', & & I0,' OBSERVATIONS IS ',E15.8) END SUBROUTINE STMOM3