copBasic (version 2.1.5)

isCOP.radsym: Is a Copula Radially Symmetric

Description

Numerically set a logical whether a copula is radially symmetric (Nelsen, 2006, p. 37) [reflection symmetric, Joe (2014, p. 64)]. A copula \(\mathbf{C}(u,v)\) is radially symmetric if and only if for any \(\{u,v\} \in [0,1]\) either of the following hold $$\mathbf{C}(u,v) = u + v - 1 + \mathbf{C}(1-u, 1-v)$$ or $$u + v - 1 + \mathbf{C}(1-u, 1-v) - \mathbf{C}(u,v) \equiv 0\mbox{.}$$

Thus if the equality of the copula \(\mathbf{C}(u,v) = \hat\mathbf{C}(u,v)\), then radial symmetry exists: COP \(=\) surCOP or \(\mathbf{C}(u,v) = \hat{\mathbf{C}}(1-u,1-v)\). The computation is (can be) CPU intensive.

Usage

isCOP.radsym(cop=NULL, para=NULL, delta=0.005, tol=1e-4, ...)

Arguments

cop

A copula function;

para

Vector of parameters, if needed, to pass to the copula;

delta

The increments of \(\{u,v\} \mapsto [0+\Delta\delta, 1-\Delta\delta, \Delta\delta]\);

tol

A tolerance on the check for symmetry, default 1 part in 10,000, which is the test for the \(\equiv 0\) (zero equivalence, see source code); and

...

Additional arguments to pass to the copula or derivative of a copula function.

Value

A logical TRUE or FALSE is returned.

References

Nelsen, R.B., 2006, An introduction to copulas: New York, Springer, 269 p.

Salvadori, G., De Michele, C., Kottegoda, N.T., and Rosso, R., 2007, Extremes in Nature---An approach using copulas: Springer, 289 p.

See Also

isCOP.permsym

Examples

Run this code
# NOT RUN {
# Radially symmetry is computationally intensive and relies on a gridded [0,1]x[0,1]
# space and laborious check on equality. Thus these examples are commented out for
# R's --timings check. Note that the proof of radial symmetry absent of algebraic
# manipulation or verification is difficult and subject to the fineness of the grid
# to find a nonequality from which to immediately conclude FALSE.
# }
# NOT RUN {
isCOP.radsym(cop=P) # TRUE

para <- list(cop1=PLACKETTcop, cop2=M, para1=c(.3), para2=NA, alpha=0.8, beta=0.5)
isCOP.radsym(composite2COP, para=para) # FALSE
# }
# NOT RUN {
gh <- simCOP(n=34, cop=GHcop, para=theta, ploton=FALSE, points=FALSE) * 150
# Pretend gh is real data, the * 150 is to clearly get into an arbitrary unit system.

# The sort=FALSE is critical in the following two calls
fakeU <- lmomco::pp(gh[,1], sort=FALSE) # Weibull plotting position i/(n+1)
fakeV <- lmomco::pp(gh[,2], sort=FALSE) # Weibull plotting position i/(n+1)
uv <- data.frame(U=fakeU, V=fakeV); # our U-statistics

set.seed(120); theta <- 2
gh <- simCOP(n=34, cop=GHcop, para=theta, ploton=FALSE, points=FALSE) * 150
# Pretend psp is real data, the * 150 is to clearly get into an arbitrary unit system.

# The sort=FALSE is critical in the following two calls
fakeU <- lmomco::pp(gh[,1], sort=FALSE) # Weibull plotting position i/(n+1)
fakeV <- lmomco::pp(gh[,2], sort=FALSE) # Weibull plotting position i/(n+1)
uv <- data.frame(U=fakeU, V=fakeV); # our U-statistics

isCOP.radsym(cop=EMPIRcop, para=uv) # FALSE
isCOP.LTD(cop=EMPIRcop,    para=uv) # TRUE
isCOP.RTI(cop=EMPIRcop,    para=uv) # FALSE
isCOP.PQD(cop=EMPIRcop,    para=uv,
                    empirical=TRUE) # TRUE

isCOP.radsym(cop=GHcop, para=theta) # FALSE
isCOP.LTD(cop=GHcop,    para=theta) # TRUE
isCOP.RTI(cop=GHcop,    para=theta) # TRUE
isCOP.PQD(cop=GHcop,    para=theta) # TRUE

# Notice that isCOP.RTI is not the same for empirical and theoretical.
# This shows the difficulty in tail dependence parameter estimation for
# small samples (see Salvadori et al., 2007 p. 175).
# }

Run the code above in your browser using DataLab