Learn R Programming

lmomco (version 2.4.14)

are.lmom.valid: Are the L-moments valid

Description

The L-moments have particular constraints on magnitudes and relation to each other. This function evaluates and L-moment object whether the bounds for \(\lambda_2 > 0\) (L-scale), \(|\tau_3| < 1\) (L-skew), \(\tau_4 < 1\) (L-kurtosis), and \(|\tau_5| < 1\) are satisfied. An optional check on \(\tau_4 \ge (5\tau_3^2 - 1)/4\) is made. Also for further protection, the finitenesses of the mean (\(\lambda_1\)) and \(\lambda_2\) are also checked. These checks provide protection against say L-moments being computed on the logarithms of some data but the data themselves have values less than or equal to zero.

The TL-moments as implemented by the TL functions (TLmoms) are not applicable to the boundaries (well finiteness of course). The are.lmom.valid function should not be consulted on the TL-moments.

Usage

are.lmom.valid(lmom, checkt3t4=TRUE)

Value

TRUE

L-moments are valid.

FALSE

L-moments are not valid.

Arguments

lmom

An L-moment object created by lmoms, lmom.ub, pwm2lmom; and

checkt3t4

A logical triggering the above test on L-skew to L-kurtosis. This bounds in very small samples can be violated---usually the user will want this set and until (first release in 2017, v2.2.6) this bounds check was standard in lmomco for over a decade.

Author

W.H. Asquith

References

Hosking, J.R.M., 1990, L-moments---Analysis and estimation of distributions using linear combinations of order statistics: Journal of the Royal Statistical Society, Series B, v. 52, pp. 105--124.

Hosking, J.R.M. and Wallis, J.R., 1997, Regional frequency analysis---An approach based on L-moments: Cambridge University Press.

See Also

lmom.ub, lmoms, pwm2lmom

Examples

Run this code
lmr <- lmoms(rnorm(20))
if(are.lmom.valid(lmr)) print("They are.")
if (FALSE) {
X <- c(1.7106278,  1.7598761,  1.2111335,  0.3447490,  1.8312889,
       1.3938445, -0.5376054, -0.2341009, -0.4333601, -0.2545229)
are.lmom.valid(lmoms(X))
are.lmom.valid(pwm2lmom(pwm.pp(X, a=0.5)))

# Prior to version 2.2.6, the next line could leak through as TRUE. This was a problem.
# Nonfiniteness of the mean or L-scale should have been checked; they are for v2.2.6+
are.lmom.valid(lmoms(log10(c(1,23,235,652,0)), nmom=1)) # of other nmom
}

Run the code above in your browser using DataLab