simpA.kendallReg {CondCopulas}R Documentation

Test of the simplifying assumption using the constancy of conditional Kendall's tau

Description

This function computes Kendall's regression, a regression-like model for conditional Kendall's tau. More precisely, it fits the model

\Lambda(\tau_{X_1, X_2 | Z = z}) = \sum_{j=1}^{p'} \beta_j \psi_j(z),

where \tau_{X_1, X_2 | Z = z} is the conditional Kendall's tau between X_1 and X_2 conditionally to Z=z, \Lambda is a function from ]-1, 1] to R, (\beta_1, \dots, \beta_p) are unknown coefficients to be estimated and \psi_1, \dots, \psi_{p'}) are a dictionary of functions. Then, this function tests the assumption

\beta_2 = \beta_3 = ... = \beta_{p'} = 0,

where the coefficient corresponding to the intercept is removed.

Usage

simpA.kendallReg(
  X1,
  X2,
  Z,
  vectorZToEstimate = NULL,
  listPhi = list(function(x) {
     return(x)
 }, function(x) {
     return(x^2)
 },
    function(x) {
     return(x^3)
 }),
  typeEstCKT = 4,
  h_kernel,
  Lambda = function(x) {
     return(x)
 },
  Lambda_deriv = function(x) {
     return(1)
 },
  lambda = NULL,
  h_lambda = h_kernel,
  Kfolds_lambda = 5,
  l_norm = 1
)

Arguments

X1

vector of observations of the first conditioned variable

X2

vector of observations of the second conditioned variable

Z

vector of observations of the conditioning variable

vectorZToEstimate

vector containing the points Z'_i to be used at which the conditional Kendall's tau should be estimated.

listPhi

the list of transformations phi to be used.

typeEstCKT

the type of estimation of the kernel-based estimation of conditional Kendall's tau.

h_kernel

the bandwidth used for the kernel-based estimations.

Lambda

the function to be applied on conditional Kendall's tau. By default, the identity function is used.

Lambda_deriv

the derivative of the function Lambda.

lambda

the penalization parameter used for Kendall's regression. By default, cross-validation is used to find the best value of lambda.

h_lambda

bandwidth used for the smooth cross-validation in order to get a value for lambda.

Kfolds_lambda

the number of subsets used for the cross-validation in order to get a value for lambda.

l_norm

type of norm used for selection of the optimal lambda by cross-validation. l_norm=1 corresponds to the sum of absolute values of differences between predicted and estimated conditional Kendall's tau while l_norm=2 corresponds to the sum of squares of differences.

Value

a list containing

References

Derumigny, A., & Fermanian, J. D. (2020). On Kendall’s regression. Journal of Multivariate Analysis, 178, 104610. (page 7) doi:10.1016/j.jmva.2020.104610

See Also

The function to fit Kendall's regression: CKT.kendallReg.fit.

Other tests of the simplifying assumption:

Examples



# We simulate from a conditional copula
set.seed(1)
N = 300
Z = runif(n = N, min = 0, max = 1)
conditionalTau = -0.9 + 1.8 * Z
simCopula = VineCopula::BiCopSim(N=N , family = 1,
    par = VineCopula::BiCopTau2Par(1 , conditionalTau ))
X1 = qnorm(simCopula[,1])
X2 = qnorm(simCopula[,2])

result = simpA.kendallReg(
   X1, X2, Z, h_kernel = 0.03,
   listPhi = list(
     function(x){return(x)}, function(x){return(x^2)},
     function(x){return(x^3)}, function(x){return(x^4)},
     function(x){return(x^5)},
     function(x){return(cos(x))}, function(x){return(sin(x))},
     function(x){return(as.numeric(x <= 0.4))},
     function(x){return(as.numeric(x <= 0.6))}) )
print(result$p_val)

# We simulate from a conditional copula
set.seed(1)
N = 300
Z = runif(n = N, min = 0, max = 1)
conditionalTau = -0.3
simCopula = VineCopula::BiCopSim(N=N , family = 1,
    par = VineCopula::BiCopTau2Par(1 , conditionalTau ))
X1 = qnorm(simCopula[,1])
X2 = qnorm(simCopula[,2])

result = simpA.kendallReg(
   X1, X2, Z, h_kernel = 0.03,
   listPhi = list(
     function(x){return(x)}, function(x){return(x^2)},
     function(x){return(x^3)}, function(x){return(x^4)},
     function(x){return(x^5)},
     function(x){return(cos(x))}, function(x){return(sin(x))},
     function(x){return(as.numeric(x <= 0.4))},
     function(x){return(as.numeric(x <= 0.6))}) )
print(result$p_val)



[Package CondCopulas version 0.1.3 Index]