EllCopEst {ElliptCopulas} | R Documentation |
Estimate the density generator of a (meta-)elliptical copula
Description
This function estimates the density generator of a (meta-)elliptical copula
using the iterative procedure described in (Derumigny and Fermanian, 2022).
This iterative procedure consists in alternating a step of estimating the data
via Liebscher's procedure EllDistrEst()
and estimating the quantile function
of the underlying elliptical distribution to transform the data back to the unit cube.
Usage
EllCopEst(
dataU,
Sigma_m1,
h,
grid = seq(0, 10, by = 0.01),
niter = 10,
a = 1,
Kernel = "epanechnikov",
verbose = 1,
startPoint = "identity",
prenormalization = FALSE
)
Arguments
dataU |
the data matrix on the |
Sigma_m1 |
the inverse of the correlation matrix of the components of data |
h |
bandwidth of the kernel for Liebscher's procedure |
grid |
the grid at which the density generator is estimated. |
niter |
the number of iterations |
a |
tuning parameter to improve the performance at 0. See Liebscher (2005), Example p.210 |
Kernel |
kernel used for the smoothing.
Possible choices are |
verbose |
if 1, prints the progress of the iterations.
If 2, prints the normalization constants used at each iteration,
as computed by |
startPoint |
is the given starting point of the procedure
|
prenormalization |
if |
Value
a list of two elements:
-
g_d_norm
: the estimated elliptical copula generator at each point of the grid; -
list_path_gdh
: the list of estimated elliptical copula generator at each iteration.
References
Derumigny, A., & Fermanian, J. D. (2022). Identifiability and estimation of meta-elliptical copula generators. Journal of Multivariate Analysis, article 104962. doi:10.1016/j.jmva.2022.104962.
Liebscher, E. (2005). A semiparametric density estimator based on elliptical distributions. Journal of Multivariate Analysis, 92(1), 205. doi:10.1016/j.jmva.2003.09.007
See Also
EllDistrEst
for the estimation of elliptical distributions,
EllCopSim
for the simulation of elliptical copula samples,
EllCopLikelihood
for the computation of the likelihood of a given generator,
DensityGenerator.normalize
to compute the normalized version of a given generator.
Examples
# Simulation from a Gaussian copula
grid = seq(0,10,by = 0.01)
g_d = DensityGenerator.normalize(grid, grid_g = exp(-grid), d = 3)
n = 10
# To have a nice estimation, we suggest to use rather n=200
# (around 20s of computation time)
U = EllCopSim(n = n, d = 3, grid = grid, g_d = g_d)
result = EllCopEst(dataU = U, grid, Sigma_m1 = diag(3),
h = 0.1, a = 0.5)
plot(grid, g_d, type = "l", xlim = c(0,2))
lines(grid, result$g_d_norm, col = "red", xlim = c(0,2))
# Adding missing observations
n_NA = 2
U_NA = U
for (i in 1:n_NA){
U_NA[sample.int(n,1), sample.int(3,1)] = NA
}
resultNA = EllCopEst(dataU = U_NA, grid, Sigma_m1 = diag(3),
h = 0.1, a = 0.5)
lines(grid, resultNA$g_d_norm, col = "blue", xlim = c(0,2))