CKT.estimate {CondCopulas} | R Documentation |
Estimation of conditional Kendall's tau between two variables X1 and X2 given Z = z
Description
Let and
be two random variables.
The goal of this function is to estimate the conditional Kendall's tau
(a dependence measure) between
and
given
for a conditioning variable
.
Conditional Kendall's tau between
and
given
is defined as:
where and
are two independent and identically distributed copies of
.
In other words, conditional Kendall's tau is the difference
between the probabilities of observing concordant and discordant pairs
from the conditional law of
This function can use different estimators for conditional Kendall's tau,
see the description of the parameter methodEstimation
for a complete list of possibilities.
Usage
CKT.estimate(
observedX1, observedX2, observedZ,
newZ = observedZ, methodEstimation, h,
listPhi = if(methodEstimation == "kendallReg")
{list( function(x){return(x)} ,
function(x){return(x^2)} ,
function(x){return(x^3)} )
} else {list(identity)} ,
...)
Arguments
observedX1 |
a vector of |
observedX2 |
a vector of |
observedZ |
a vector of |
newZ |
the new values for the conditioning variable
|
methodEstimation |
method for estimating the conditional Kendall's tau. Possible estimation methods are:
|
h |
the bandwidth |
listPhi |
the list of transformations to be applied
to the conditioning variable |
... |
other parameters passed to the estimating functions
|
Value
the vector of estimated conditional Kendall's tau
at each of the observations of newZ
.
References
Derumigny, A., & Fermanian, J. D. (2019a). A classification point-of-view about conditional Kendall’s tau. Computational Statistics & Data Analysis, 135, 70-94. doi:10.1016/j.csda.2019.01.013
Derumigny, A., & Fermanian, J. D. (2019b). On kernel-based estimation of conditional Kendall’s tau: finite-distance bounds and asymptotic behavior. Dependence Modeling, 7(1), 292-321. doi:10.1515/demo-2019-0016
Derumigny, A., & Fermanian, J. D. (2020). On Kendall’s regression. Journal of Multivariate Analysis, 178, 104610. doi:10.1016/j.jmva.2020.104610
See Also
the specialized functions for estimating
conditional Kendall's tau for each method:
CKT.fit.tree
, CKT.fit.randomForest
,
CKT.fit.GLM
, CKT.fit.nNets
,
CKT.predict.kNN
, CKT.fit.randomForest
,
CKT.kernel
and CKT.kendallReg.fit
.
See also the nonparametric estimator of conditional copula models
estimateNPCondCopula
,
and the parametric estimators of conditional copula models
estimateParCondCopula
.
In the case where is discrete
or in the case of discrete conditioning events, see
bCond.treeCKT
.
Examples
# We simulate from a conditional copula
set.seed(1)
N = 300
Z = rnorm(n = N, mean = 5, sd = 2)
conditionalTau = -0.9 + 1.8 * pnorm(Z, mean = 5, sd = 2)
simCopula = VineCopula::BiCopSim(N=N , family = 1,
par = VineCopula::BiCopTau2Par(1 , conditionalTau ))
X1 = qnorm(simCopula[,1])
X2 = qnorm(simCopula[,2])
newZ = seq(2,10,by = 0.1)
h = 0.1
estimatedCKT_tree <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "tree", h = h)
estimatedCKT_rf <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "randomForest", h = h)
estimatedCKT_GLM <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "logit", h = h,
listPhi = list(function(x){return(x)}, function(x){return(x^2)},
function(x){return(x^3)}) )
estimatedCKT_kNN <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "nearestNeighbors", h = h,
number_nn = c(50,80, 100, 120,200),
partition = 4
)
estimatedCKT_nNet <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "neuralNetwork", h = h,
)
estimatedCKT_kernel <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "kernel", h = h,
)
estimatedCKT_kendallReg <- CKT.estimate(
observedX1 = X1, observedX2 = X2, observedZ = Z,
newZ = newZ,
methodEstimation = "kendallReg", h = h)
# Comparison between true Kendall's tau (in black)
# and estimated Kendall's tau (in other colors)
trueConditionalTau = -0.9 + 1.8 * pnorm(newZ, mean = 5, sd = 2)
plot(newZ, trueConditionalTau , col="black",
type = "l", ylim = c(-1, 1))
lines(newZ, estimatedCKT_tree, col = "red")
lines(newZ, estimatedCKT_rf, col = "blue")
lines(newZ, estimatedCKT_GLM, col = "green")
lines(newZ, estimatedCKT_kNN, col = "purple")
lines(newZ, estimatedCKT_nNet, col = "coral")
lines(newZ, estimatedCKT_kernel, col = "skyblue")
lines(newZ, estimatedCKT_kendallReg, col = "darkgreen")