Learn R Programming

copBasic (version 1.7.1)

isCOP.radsym: Is a Copula Radially Symmetric

Description

Numerically set a logical whether a copula is radially symmetric (Nelsen, 2006, p. 37). 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).

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
# 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 absence of algebraic
# manipulation or verification is difficult and subject to the fineness of the grid
# to find a nonequality to immediately conclude FALSE.
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
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

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 estimaton for
# small samples (see Salvadori et al., 2007 p. 175).

Run the code above in your browser using DataLab