Learn R Programming

lmomco (version 0.88)

theoTLmoms: The Theoretical Trimmed L-moments and TL-moment Ratios using Integration of the Quantile Function

Description

Compute the theoretrical trimmed L-moments (TL-moments) for a vector. The level of symmetrical or asymmetrical trimming is specified. A theoretrical TL-moment in integral form is

$$\lambda^{(t_1,t_2)}_r = \underbrace{\frac{1}{r}}_{\stackrel{\mbox{average}}{\mbox{of terms}}} \sum^{r-1}_{k=0} \overbrace{(-1)^k}^{\mbox{differences}} \underbrace{ r-1 \choose k }_{\mbox{combinations}} \frac{\overbrace{(r+t_1+t_2)!}^{\mbox{sample size}}\: I^{(t_1,t_2)}_r} {\underbrace{(r+t_1-k-1)!}_{\mbox{left tail}} \underbrace{(t_2+k)!}_{\mbox{right tail}}} \mbox{, in which }$$

$$I^{(t_1,t_2)}_r = \int^1_0 \underbrace{X(F)}_{\stackrel{\mbox{quantile}}{\mbox{function}}} \times \overbrace{F^{r+t_1-k-1}}^{\mbox{left tail}} \overbrace{(1-F)^{t_2+k}}^{\mbox{right tail}} \,\mathrm{d}F \mbox{,}$$

where $X(F)$ is the quantile function of the random variable $X$ for nonexceedance probability $F$, $t_1$ represents the trimming level of the $t_1$-smallest, $t_2$ represents the trimming level of the $t_2$-largest values, $r$ represents the order of the L-moments. This function loops across the above equation for each nmom set in the argument list. The function $X(F)$ is computed through the par2qua function. The distribution type is determined using the type attribute of the para argument---the parameter object.

Usage

theoTLmoms(para,nmom=5,trim=NULL,leftrim=NULL, 
rightrim=NULL,verbose=FALSE)

Arguments

para
A distribution parameter object of this package vec2par.
nmom
The number of moments to compute. Default is 5.
trim
Level of symmetrical trimming to use in the computations. Although NULL in the argument list, the default is 0---the usual L-moment is returned.
leftrim
Level of trimming of the left-tail of the sample.
rightrim
Level of trimming of the right-tail of the sample.
verbose
Toggle verbose output. Because the R function integrate is used to perform the numerical integration, it might be useful to see selected messages regarding the numerical integration.

Value

  • An R list is returned.
  • lambdasVector of the TL-moments. First element is $\lambda^{(t_1,t_2)}_1$, second element is $\lambda^{(t_1,t_2)}_2$, and so on.
  • ratiosVector of the L-moment ratios. Second element is $\tau^{(t_1,t_2)}$, third element is $\tau^{(t_1,t_2)}_3$ and so on.
  • trimLevel of symmetrical trimming used in the computation, which will equal NULL if asymmetrical trimming was used.
  • leftrimLevel of left-tail trimming used in the computation.
  • rightrimLevel of right-tail trimming used in the computation.
  • sourceAn attribute identifying the computational source of the L-moments: theoTLmoms.

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, vol. 52, p. 105-124.

Elamir, E.A.H., and Seheult, A.H., 2003, Trimmed L-moments: Computational Statistics and Data Analysis, vol. 43, pp. 299--314.

See Also

theoLmoms, par2qua, TLmoms, lmom.ub

Examples

Run this code
para <- vec2par(c(0,1),type='nor') # standard normal
TL00 <- theoTLmoms(para) # compute ordinary L-moments
TL30 <- theoTLmoms(para,leftrim=3,rightrim=0) # trim 3 smallest samples

# Lets look at the difference from simulation to theoretrical using
# L-kurtosis and asymmetrical trimming for generalized Lambda dist.
P <- vec2par(c(10000,10000,6,.4),type='gld')
Lkurt <- TLmoms(quagld(runif(100),P),rightrim=3,leftrim=0)$ratios[4]
theoLkurt <- theoTLmoms(P,rightrim=3,leftrim=0)$ratios[4]
Lkurt - theoLkurt # as the number for runif goes up, this 
                  # difference goes to zero

# Example using the Generalized Pareto Distribution
# to verify computations from theoretical and sample stand point.
n      <- 100 # really a much larger sample should be used---for speed
P      <- vec2par(c(12,34,4),type='gpa')
theoTL <- theoTLmoms(P,rightrim=2,leftrim=4)
samTL  <- TLmoms(quagpa(runif(n),P),rightrim=2,leftrim=4)
del    <- samTL$ratios[3] - theoTL$ratios[3] # if n is large difference
                                             # is small
str(del)

Run the code above in your browser using DataLab