Learn R Programming

lmomco (version 1.4.3)

Lcomoment.Wk: Weighting Coefficient for Sample L-comoment

Description

Compute the weight factors for computation of an L-comoment for order k, order statistic r, and sample size n.

Usage

Lcomoment.Wk(k,r,n)

Arguments

k
Order of L-comoment being computed by parent calls to Lcomoment.Wk.
r
Order statistic index involved.
n
Sample size.

Value

  • A single L-comoment weight factor.

Details

This function computes the weight factors needed to calculation L-comoments and is interfaced or used by Lcomoment.Lk12. This function is not necessarily for end users. The weight factor $w^{(k)}_{r:n}$ is the discrete Legendre polynomial. The weight factors are well illustrated in figure 2.6 of Hosking and Wallis (1997).

$$w^{(k)}_{r:n} = \sum_{j=0}^{min{r-1,k-1}} (-1)^{k-1-j} \frac{{k-1 \choose j}{k-1+j \choose j} {r-1 \choose j}} {{n-1 \choose j}} \mbox{.}$$

References

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

Serfling, R., and Xiao, P., 2007, A contribution to multivariate L-moments---L-comoment matrices: Journal of Multivariate Analysis, v.~98, pp.~1765--1781.

See Also

Lcomoment.Lk12

Examples

Run this code
Wk <- Lcomoment.Wk(2,3,5)
print(Wk)

# To compute the weight factors for L-skew and L-coskew (k=3) computation
# for a sample of size 20.
Wk <- matrix(nrow=20,ncol=1)
for(r in seq(1,20)) Wk[r] <- Lcomoment.Wk(3,r,20)
plot(seq(1,20),Wk, type="b")

# The following shows the actual weights used for computation of
# the first four L-moments. The sum of the each sample times the
# corresponding weight equals the L-moment.
fakedat <- sort(c(-10, 20, 30, 40));  n <- length(fakedat)
Wk1 <- Wk2 <- Wk3 <- Wk4 <- vector(mode="numeric", length=n);
for(i in 1:n) {
   Wk1[i] <- Lcomoment.Wk(1,i,n)/n
   Wk2[i] <- Lcomoment.Wk(2,i,n)/n
   Wk3[i] <- Lcomoment.Wk(3,i,n)/n
   Wk4[i] <- Lcomoment.Wk(4,i,n)/n
}
cat(c("Weights for mean",         round(Wk1, digits=4), ""))
cat(c("Weights for L-scale",      round(Wk2, digits=4), ""))
cat(c("Weights for 3rd L-moment", round(Wk3, digits=4), ""))
cat(c("Weights for 4th L-moment", round(Wk4, digits=4), ""))
my.lams <- c(sum(fakedat*Wk1), sum(fakedat*Wk2),
             sum(fakedat*Wk3), sum(fakedat*Wk4))
cat(c("Manual L-moments:", my.lams, ""))
cat(c("lmomco L-moments:", lmoms(fakedat, nmom=4)$lambdas,""))
# The last two lines of output should be the same---note that lmoms()
# does not utilize Lcomoment.Wk(). So a double check is provided.

Run the code above in your browser using DataLab