Learn R Programming

copBasic (version 1.6.0)

asCOP: A Wrapper on a User-Level Formula to Become a Copula Function

Description

This function is intended to document and then to extend a simple API to end users to aid in implementation of other copulas for use in the copBasic package. There is no need (requirement) to use asCOP but for the mathematical definition of some copulas, the asCOP function might help considerably. There is a need for special treatment of $u$ and $v$ vectors of probability as they interact with the vectorization implicit in R. The special treatment is needed because many copulas are based on the operators such as min() and max(). When numerical integration used by the integrate() function in Rin some copula operators, such as tauCOP for the Kendall's Tau of a copula, detailed accommodation of how integrate() works is needed because of R's vectorization.

Basically, the problem is that one can not strictly rely on what Rdoes in terms of value recycling when $u$ and $v$ are of unequal lengths. The source code is straightforward. Simply put, if lengths of $u$ and $v$ are unity, then there is no concern, and even if the length of $u$ (say) is unity and $v$ is 21, then recycling of $u$ would often be ok. The real danger is when $u$ and $v$ have unequal lengths and those lengths are each greater than unity---R's treatment can not be universally relied upon.

The example shows how a formula definition of a copula that is not a copula provided by copBasic is set into a function deltacop and then used inside another function UsersCop that will be the official copula that is compatible with a host of functions in copBasic. The use of asCOP provides the length check necessary on $u$ and $v$, and the argument ... provides optional parameter support should the user's formula require more settings.

Usage

asCOP(u, v, f=NULL, ...)

Arguments

u
Nonexceedance probability $u$ in the $X$ direction;
v
Nonexceedance probability $v$ in the $Y$ direction; and
f
A function for which the user desires to make as a copula;
...
Additional arguments to pass to the function f (such as parameters, if needed, for the copula in the form of a list).

Value

  • The value(s) for the copula are returned.

References

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

See Also

COP

Examples

Run this code
# Concerning Nelson (2006, Example 5.14, p. 195)
"deltacop" <- function(u,v, ...) {   min(c(u,v,(u^2+v^2)/2))   }
"UsersCop" <- function(u,v, ...) { asCOP(u,v, f=deltacop, ...) }
isCOP.PQD(cop=UsersCop) # TRUE and Rho=0.288, Tau=0.333 as Nelson says
isCOP.LTD(cop=UsersCop, wrtV=TRUE) # FALSE as Nelson says
isCOP.RTI(cop=UsersCop, wrtV=TRUE) # FALSE as Nelson says

Run the code above in your browser using DataLab