Learn R Programming

copBasic (version 2.2.6)

duCOP: The Dual of a Copula Function

Description

Compute the dual of a copula (function) from a copula (Nelsen, 2006, pp. 33--34), which is defined as

$$\mathrm{Pr}[U \le v \mathrm{\ or\ } V \le v] = \tilde{\mathbf{C}}(u,v) = u + v - \mathbf{C}(u,v)\mbox{,}$$

where \(\tilde{\mathbf{C}}(u,v)\) is the dual of a copula and \(u\) and \(v\) are nonexceedance probabilities. The dual of a copula is the expression for the probability that either \(U \le u\) or \(V \le v\), which is unlike the co-copula (function) (see coCOP) that provides \(\mathrm{Pr}[U > u \mathrm{\ or\ } V > v]\). The dual of a copula is a function and not in itself a copula. The dual of the survival copula (surCOP) is the co-copula (function) (coCOP). Some rules of copulas mean that

$$\hat{\mathbf{C}}(u',v') + \tilde{\mathbf{C}}(u,v) = 1\mbox{,}$$

where \(\hat{\mathbf{C}}(u',v')\) is the survival copula in terms of exceedance probabilities \(u'\) and \(v'\) or in copBasic code that the functions surCOP + duCOP equal unity.

The function duCOP gives “protection” against simultaneous (concurrent or dual) risk by failure if and only if failure is caused (defined) by both hazard sources \(U\) and \(V\) being by themselves responsible for failure. Expressing this in terms of an annual probability of occurrence (\(q\)), one has $$q = 1 - \mathrm{Pr}[U \le v \mathrm{\ or\ } V \le v] = 1 - \tilde{\mathbf{C}}(u,v)\mbox{\ or}$$ in R code q <- 1 - duCOP(u,v). So, as a mnemonic: A dual of a copula is the probabililty of nonexceedance if the hazard sources must dual (concur, link, pair, twin, twain) between each other to cause failure. An informative graphic is shown within copBasic-package.

Usage

duCOP(u, v, cop=NULL, para=NULL, ...)

Value

Value(s) for the dual of a copula are returned.

Arguments

u

Nonexceedance probability \(u\) in the \(X\) direction;

v

Nonexceedance probability \(v\) in the \(Y\) direction;

cop

A copula function;

para

Vector of parameters or other data structure, if needed, to pass to the copula; and

...

Additional arguments to pass (such as parameters, if needed, for the copula in the form of a list.

Author

W.H. Asquith

References

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

See Also

COP, coCOP, surCOP, jointCOP, joint.curvesCOP

Examples

Run this code
u <- runif(1); t <- runif(1)
duCOP(cop=W,u,t)    # joint or probability for perfect negative dependence
duCOP(cop=P,u,t)    # joint or probability for perfect        independence
duCOP(cop=M,u,t)    # joint or probability for perfect positive dependence
duCOP(cop=PSP,u,t)  # joint or probability for some positive    dependence

# Next demonstrate COP + duCOP = unity.
"MOcop.formula" <- function(u,v, para=para, ...) {
   alpha <- para[1]; beta <- para[2]; return(min(v*u^(1-alpha), u*v^(1-beta)))
}
"MOcop" <- function(u,v, ...) { asCOP(u,v, f=MOcop.formula, ...) }

u <- 0.2; v <- 0.75; ab <- c(1.5, 0.3)
surCOP(1-u,1-v, cop=MOcop, para=ab) + duCOP(u,v, cop=MOcop, para=ab) # UNITY

# See extended code listings and discussion in the Note section

Run the code above in your browser using DataLab