| Version: | 1.3-2 |
| Date: | 2025-09-17 |
| Title: | L-Moments and Quantile Mixtures |
| Maintainer: | Juha Karvanen <juha.karvanen@iki.fi> |
| Description: | Contains functions to estimate L-moments and trimmed L-moments from the data. Also contains functions to estimate the parameters of the normal polynomial quantile mixture and the Cauchy polynomial quantile mixture from L-moments and trimmed L-moments. |
| Imports: | stats, Rcpp |
| LinkingTo: | Rcpp, RcppArmadillo |
| License: | GPL-2 |
| URL: | https://users.jyu.fi/~jutakarv/ |
| NeedsCompilation: | yes |
| Packaged: | 2025-09-17 15:23:08 UTC; juhak |
| Author: | Juha Karvanen [cre, aut], Santeri Karppinen [aut] |
| Repository: | CRAN |
| Date/Publication: | 2025-09-18 05:11:17 UTC |
L-moments
Description
Calculates sample L-moments, L-coefficients and covariance matrix of L-moments.
Usage
Lmoments(data, rmax = 4, na.rm = FALSE, returnobject = FALSE, trim = c(0, 0))
Lcoefs(data, rmax = 4, na.rm = FALSE, trim = c(0, 0))
Lmomcov(data, rmax = 4, na.rm = FALSE)
Lmoments_calc(data, rmax = 4)
Lmomcov_calc(data, rmax = 4)
shiftedlegendre(rmax)
Arguments
data |
matrix or data frame. |
rmax |
maximum order of L-moments. |
na.rm |
a logical value indicating whether 'NA' values should be removed before the computation proceeds. |
returnobject |
a logical value indicating whether a list object should be returned instead of an array of L-moments. |
trim |
c(0, 0) for ordinary L-moments and c(1, 1) for trimmed (t = 1) L-moments |
Value
Lmoments returns an array of L-moments containing a row for each variable in data, or if returnobject=TRUE,
a list containing
lambdas |
an array of L-moments |
ratios |
an array of mean, L-scale and L-moment ratios |
trim |
the value of the parameter 'trim' |
source |
a string with value "Lmoments" or "t1lmoments". |
Lcoefs returns an array of L-coefficients (mean, L-scale, L-skewness, L-kurtosis, ...)
containing a row for each variable in data.
Lmomcov returns the covariance matrix of L-moments or a list of covariance matrices if the input has multiple columns.
The numerical accuracy of the results decreases with increasing rmax.
With rmax > 5, a warning is thrown, as the numerical accuracy of the results is likely less than sqrt(.Machine$double.eps).
shiftedlegendre returns a matrix of the coefficients of the shifted Legendre polynomials up to a given order.
Note
Functions Lmoments and Lcoefs calculate trimmed L-moments if you specify trim = c(1, 1).
Lmoments_calc and Lmomcov_calc are internal C++ functions called by Lmoments and Lmomcov.
The direct use of these functions is not recommended.
Author(s)
Juha Karvanen juha.karvanen@iki.fi, Santeri Karppinen
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
Elamir, E. A., Seheult, A. H. 2004. Exact variance structure of sample L-moments, Journal of Statistical Planning and Inference 124 (2) 337–359.
Hosking, J. 1990. L-moments: Analysis and estimation distributions using linear combinations of order statistics, Journal of Royal Statistical Society B 52, 105–124.
See Also
t1lmoments for trimmed L-moments,
dnormpoly, lmom2normpoly4 and covnormpoly4 for the normal-polynomial quantile mixture
and package lmomco for additional L-moment functions
Examples
#Generates a sample 500 observations from the normal-polynomial quantile mixture,
#calculates the L-moments and their covariance matrix,
#estimates parameters via L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- lmom2normpoly4(c(0,1,0.2,0.05));
x <- rnormpoly(500,true_params);
lmoments <- Lmoments(x);
lmomcov <- Lmomcov(x);
estim_params <- lmom2normpoly4(lmoments);
hist(x,30,freq=FALSE)
plotpoints <- seq(min(x)-1,max(x)+1,by=0.01);
lines(plotpoints, dnormpoly(plotpoints,estim_params),col='red');
lines(plotpoints, dnormpoly(plotpoints,true_params),col='blue');
Cauchy-polynomial quantile mixture
Description
Density, distribution function, quantile function and random generation for the Cauchy-polynomial quantile mixture.
Usage
dcauchypoly(x,param)
pcauchypoly(x,param)
qcauchypoly(cp,param)
rcauchypoly(n,param)
cauchypoly_pdf(x,param)
cauchypoly_cdf(x,param)
cauchypoly_inv(cp,param)
cauchypoly_rnd(n,param)
Arguments
x |
vector of quantiles |
cp |
vector of probabilities |
n |
number of observations |
param |
vector of parameters |
Details
The length the parameter vector specifies the order of the polynomial in the quantile mixture.
If k<-length(param) then param[1:(k-1)] contains the mixture coefficients of polynomials starting from the constant and
param[k] is the mixture coefficient for Cauchy distribution. (Functions cauchypoly_pdf, cauchypoly_cdf, cauchypoly_inv and
cauchypoly_rnd are aliases for compatibility with older versions of this package.)
Value
'dcauchypoly' gives the density, 'pcauchypoly' gives the cumulative distribution function, 'qcauchypoly' gives the quantile function, and 'rcauchypoly' generates random deviates.
Author(s)
Juha Karvanen juha.karvanen@iki.fi
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
See Also
data2cauchypoly4 for the parameter estimation and
dnormpoly for the normal-polynomial quantile mixture.
Examples
#Generates 500 random variables from the Cauchy-polynomial quantile mixture,
#calculates the trimmed L-moments,
#estimates parameters via trimmed L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- t1lmom2cauchypoly4(c(0,1,0.075,0.343));
x <- rcauchypoly(500,true_params);
t1lmom <- t1lmoments(x);
estim_params <- t1lmom2cauchypoly4(t1lmom);
plotpoints <- seq(-10,10,by=0.01);
histpoints <- c(seq(min(x)-1,-20,length.out=50),seq(-10,10,by=0.5),seq(20,max(x)+1,length.out=50));
hist(x, breaks=histpoints, freq=FALSE, xlim=c(-10,10));
lines(plotpoints, dcauchypoly(plotpoints,estim_params), col='red');
lines(plotpoints, dcauchypoly(plotpoints,true_params), col='blue');
Covariance matrix of the parameters of the normal-polynomial quantile mixture
Description
Estimates covariance matrix of the four parameters of normal-polynomial quantile mixture
Usage
covnormpoly4(data)
Arguments
data |
vector of observations |
Value
covariance matrix of the four parameters of normal-polynomial quantile mixture
Author(s)
Juha Karvanen juha.karvanen@iki.fi
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
See Also
Lmomcov for covariance matrix of L-moments,
dnormpoly for the normal-polynomial quantile mixture and
data2normpoly4 for the estimation of the normal-polynomial quantile mixture.
Estimation of the Cauchy-polynomial quantile mixture
Description
Estimates the parameters of the Cauchy-polynomial quantile mixture from data or from trimmed L-moments
Usage
data2cauchypoly4(data)
t1lmom2cauchypoly4(t1lmom)
Arguments
data |
vector |
t1lmom |
vector of trimmed L-moments |
Value
vector containing the four parameters of the Cauchy-polynomial quantile mixture
Author(s)
Juha Karvanen juha.karvanen@iki.fi
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
See Also
t1lmoments for trimmed L-moments,
dcauchypoly for the Cauchy-polynomial quantile mixture and
data2normpoly4 for the estimation of the normal-polynomial quantile mixture.
Examples
#Generates 500 random variables from the Cauchy-polynomial quantile mixture,
#calculates the trimmed L-moments,
#estimates parameters via trimmed L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- t1lmom2cauchypoly4(c(0,1,0.075,0.343));
x <- rcauchypoly(500,true_params);
t1lmom <- t1lmoments(x);
estim_params <- t1lmom2cauchypoly4(t1lmom);
plotpoints <- seq(-10,10,by=0.01);
histpoints <- c(seq(min(x)-1,-20,length.out=50),seq(-10,10,by=0.5),seq(20,max(x)+1,length.out=50));
hist(x, breaks=histpoints, freq=FALSE, xlim=c(-10,10));
lines(plotpoints, dcauchypoly(plotpoints,estim_params),col='red');
lines(plotpoints, dcauchypoly(plotpoints,true_params),col='blue');
Estimation of normal-polynomial quantile mixture
Description
Estimates the parameters of normal-polynomial quantile mixture from data or from L-moments
Usage
data2normpoly4(data)
lmom2normpoly4(lmom)
data2normpoly6(data)
lmom2normpoly6(lmom)
Arguments
data |
matrix or data frame |
lmom |
vector or matrix of L-moments |
Value
vector or matrix containing the four or six parameters of normal-polynomial quantile mixture
Author(s)
Juha Karvanen juha.karvanen@iki.fi
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
See Also
dnormpoly for L-moments,
dnormpoly for the normal-polynomial quantile mixture and
data2cauchypoly4 for the estimation of Cauchy-polynomial quantile mixture.
Examples
#Generates a sample 500 observations from the normal-polynomial quantile mixture,
#calculates L-moments and their covariance matrix,
#estimates parameters via L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- lmom2normpoly4(c(0,1,0.2,0.05));
x <- rnormpoly(500,true_params);
lmoments <- Lmoments(x);
lmomcov <- Lmomcov(x);
estim_params <- lmom2normpoly4(lmoments);
hist(x,30,freq=FALSE);
plotpoints <- seq(min(x)-1,max(x)+1,by=0.01);
lines(plotpoints, dnormpoly(plotpoints,estim_params), col='red');
lines(plotpoints, dnormpoly(plotpoints,true_params), col='blue');
Normal-polynomial quantile mixture
Description
Density, distribution function, quantile function and random generation for the normal-polynomial quantile mixture.
Usage
dnormpoly(x,param)
pnormpoly(x,param)
qnormpoly(cp,param)
rnormpoly(n,param)
normpoly_pdf(x,param)
normpoly_cdf(x,param)
normpoly_inv(cp,param)
normpoly_rnd(n,param)
Arguments
x |
vector of quantiles |
cp |
vector of probabilities |
n |
number of observations |
param |
vector of parameters |
Details
The length the parameter vector specifies the order of the polynomial in the quantile mixture.
If k<-length(param) then param[1:(k-1)] contains the mixture coefficients of polynomials starting from the constant and
param[k] is the mixture coefficient for normal distribution. (Functions normpoly_pdf, normpoly_cdf, normpoly_inv and
normpoly_rnd are aliases for compatibility with older versions of this package.)
Value
'dnormpoly' gives the density, 'pnormpoly' gives the cumulative distribution function, 'qnormpoly' gives the quantile function, and 'rnormpoly' generates random deviates.
Author(s)
Juha Karvanen juha.karvanen@iki.fi
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
See Also
data2normpoly4 for the parameter estimation and
dcauchypoly for the Cauchy-polynomial quantile mixture.
Examples
#Generates a sample 500 observations from the normal-polynomial quantile mixture,
#calculates L-moments and their covariance matrix,
#estimates parameters via L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- lmom2normpoly4(c(0,1,0.2,0.05));
x <- rnormpoly(500,true_params);
lmoments <- Lmoments(x);
lmomcov <- Lmomcov(x);
estim_params <- lmom2normpoly4(lmoments);
hist(x,30,freq=FALSE)
plotpoints <- seq(min(x)-1,max(x)+1,by=0.01);
lines(plotpoints, dnormpoly(plotpoints,estim_params),col='red');
lines(plotpoints, dnormpoly(plotpoints,true_params),col='blue');
Trimmed L-moments
Description
Calculates sample trimmed L-moments with trimming parameter 1.
Usage
t1lmoments(data, rmax = 4)
t1lmoments_calc(data, rmax = 4)
Arguments
data |
matrix or data frame. |
rmax |
maximum order of trimmed L-moments. |
Value
array of trimmed L-moments (trimming parameter = 1) up to order 4 containing a row for each variable in data.
Note
Functions link{Lmoments} and link{Lcoefs} calculate trimmed L-moments if you specify trim = c(1, 1).
t1lmoments_calc is an internal C++ function called by t1lmoments. The direct use of this function is not recommended.
Author(s)
Juha Karvanen juha.karvanen@iki.fi, Santeri Karppinen
References
Karvanen, J. 2006. Estimation of quantile mixtures via L-moments and trimmed L-moments, Computational Statistics & Data Analysis 51, (2), 947–959. https://users.jyu.fi/~jutakarv/papers/Karvanen_quantile_mixtures.pdf.
Elamir, E. A., Seheult, A. H. 2003. Trimmed L-moments, Computational Statistics & Data Analysis 43, 299–314.
See Also
Lmoments for L-moments, and
dcauchypoly and t1lmom2cauchypoly4 for the Cauchy-polynomial quantile mixture
Examples
#Generates 500 random variables from the Cauchy-polynomial quantile mixture,
#calculates the trimmed L-moments,
#estimates parameters via trimmed L-moments and
#plots the true pdf and the estimated pdf together with the histogram of the data.
true_params <- t1lmom2cauchypoly4(c(0,1,0.075,0.343));
x <- rcauchypoly(500,true_params);
t1lmom <- t1lmoments(x);
estim_params <- t1lmom2cauchypoly4(t1lmom);
plotpoints <- seq(-10,10,by=0.01);
histpoints <- c(seq(min(x)-1,-20,length.out=50),seq(-10,10,by=0.5),seq(20,max(x)+1,length.out=50));
hist(x,breaks=histpoints, freq=FALSE, xlim=c(-10,10));
lines(plotpoints, dcauchypoly(plotpoints, estim_params), col='red');
lines(plotpoints, dcauchypoly(plotpoints, true_params), col='blue');