derCOP2 {copBasic}R Documentation

Numerical Derivative of a Copula for U with respect to V

Description

Compute the numerical partial derivative of a copula, which is a conditional distribution function, according to Nelsen (2006, pp. 13, 40–41) with respect to vv:

0δδvC(u,v)1\mbox,0 \le \frac{\delta}{\delta v} \mathbf{C}(u,v) \le 1\mbox{,}

or

Pr[UuV=v]=C12(uv)=limΔv0C(u,v+Δv)C(u,v)Δv\mbox,\mathrm{Pr}[U \le u\mid V=v] = \mathbf{C}_{1 \mid 2}(u \mid v) = \lim_{\Delta v \rightarrow 0}\frac{\mathbf{C}(u, v+\Delta v) - \mathbf{C}(u,v)}{\Delta v}\mbox{,}

which is to read as the probability that UuU \le u given that V=vV = v and corresponds to the
derdir="left" mode of the function. For derdir="right", the following results

Pr[UuV=v]=limΔv0C(u,v)C(u,vΔv)Δv\mbox,\mathrm{Pr}[U \le u\mid V=v] = \lim_{\Delta v \rightarrow 0}\frac{\mathbf{C}(u,v) - \mathbf{C}(u, v-\Delta v)}{\Delta v}\mbox{,}

and for derdir="center" (the usual method of computing a derivative), the following results

Pr[UuV=v]=limΔv0C(u,v+Δv)C(u,vΔv)2Δv\mbox.\mathrm{Pr}[U \le u\mid V=v] = \lim_{\Delta v \rightarrow 0}\frac{\mathbf{C}(u,v+\Delta v) - \mathbf{C}(u, v-\Delta v)}{2 \Delta v}\mbox{.}

The “with respect to UU” versions are under derCOP.

Copula derivatives (δC/δv\delta \mathbf{C}/\delta v or say δC/δu\delta \mathbf{C}/\delta u derCOP) are non-decreasing functions meaning that if u1u2u_1 \le u_2, then C(u2,v)C(u1,v)\mathbf{C}(u_2, v) - \mathbf{C}(u_1,v) is a non-decreasing function in vv, thus

δ(C(u2,v)C(u1,v))δv\frac{\delta\bigl(\mathbf{C}(u_2, v) - \mathbf{C}(u_1,v)\bigr)}{\delta v}

is non-negative, which means

δC(u2,v)δvδC(u1,v)δv\mbox for u2u1\mbox.\frac{\delta\mathbf{C}(u_2, v)}{\delta v} \ge \frac{\delta\mathbf{C}(u_1, v)}{\delta v}\mbox{\ for\ } u_2 \ge u_1\mbox{.}

Usage

derCOP2(cop=NULL, u, v, delv=.Machine$double.eps^0.50,
        derdir=c("left", "right", "center"), ...)

Arguments

cop

A copula function;

u

Nonexceedance probability uu in the XX direction. If the length of u is unity, then the length of v can be arbitrarily long. If the length of u is not unity, then the length of v should be the same and if not only the first value in v will be silently used;

v

Nonexceedance probability vv in the YY direction (see previous comment on u);

delv

The Δv\Delta v interval for the derivative;

derdir

The direction of the derivative as described above. Default is left but internally any setting can be temporarily suspended to avoid improper computations (see source code); and

...

Additional arguments to pass such as the parameters often described in para arguments of other copula functions. (The lack of para=NULL for derCOP and derCOP2 was either design oversight or design foresight but regardless it is too late to enforce package consistency in this matter.)

Value

Value(s) for the partial derivative are returned.

Note

A known caveat of the current implementation of the copula derivative is that there is a chance that the Δv\Delta v will span a singularity or discontinuous (or nearly so) portion of a copula should it have a property of singularity (or nearly so). The delv is chosen small so the chance is mitigated to be a small change and certainly seems to work throughout the examples herein. It is not decided whether a derivative from the positive side (dir="left"), when failing should switch over to a computation from the negative side (dir="right"). The distinction is important for the computation of the inverse of the derivative derCOPinv2 because the solution finder needs a sign reversal to work.

Author(s)

W.H. Asquith

References

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

See Also

derCOPinv2, derCOP

Examples

derCOP2(cop=W, 0.4, 0.6); derCOP2(cop=P, 0.4, 0.6); derCOP2(cop=M, 0.4, 0.6)

lft <- derCOP2(cop=P,     0.4,  0.6, derdir="left"  )
rgt <- derCOP2(cop=P,     0.4,  0.6, derdir="right" )
cnt <- derCOP2(cop=P,     0.4,  0.6, derdir="center")
cat(c(lft, rgt, cnt,"\n"))
# stopifnot(all.equal(lft, rgt), all.equal(lft, cnt))

# Let us contrive a singularity though this NOT A COPULA in the function "afunc".
"afunc" <- function(u,v, ...) return(ifelse(u <= 0.5, sqrt(u^2+v^2), P(u,v,...)))
lft <- derCOP2(cop=afunc, 0.67, 0.5, derdir="left"  )
rgt <- derCOP2(cop=afunc, 0.67, 0.5, derdir="right" )
cnt <- derCOP2(cop=afunc, 0.67, 0.5, derdir="center")
cat(c(lft,rgt,cnt,"\n")) # For this example, all are correct (see derCOP examples)

[Package copBasic version 2.2.4 Index]