derCOP: Numerical Derivative of a Copula for V with respect to U

derCOPR Documentation

Numerical Derivative of a Copula for V with respect to U

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 u:

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

or

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

which is to read as the probability that V \le v given that U = u and corresponds to the
derdir="left" mode of the function. For derdir="right", we have

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

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

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

The “with respect to V” versions are available under derCOP2.

Copula derivatives (\delta \mathbf{C}/\delta u or say \delta \mathbf{C}/\delta v derCOP2) are non-decreasing functions meaning that if v_1 \le v_2, then \mathbf{C}(u, v_2) - \mathbf{C}(u,v_1) is a non-decreasing function in u, thus

\frac{\delta\bigl(\mathbf{C}(u, v_2) - \mathbf{C}(u,v_1)\bigr)}{\delta u}

is non-negative, which means

\frac{\delta\mathbf{C}(u, v_2)}{\delta u} \ge \frac{\delta\mathbf{C}(u, v_1)}{\delta u}\mbox{\ for\ } v_2 \ge v_1\mbox{.}

Usage

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

Arguments

cop

A copula function;

u

Nonexceedance probability u in the X 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, then only the first value in v is silently used;

v

Nonexceedance probability v in the Y direction (see previous comment on u);

delu

The \Delta u 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 \Delta u will span a singularity or discontinuous (or nearly so) portion of a copula should it have a property of singularity (or nearly so). The delu is chosen small so the chance is mitigated to be a small change and certainly appear 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 derCOPinv 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

derCOPinv, derCOP2

Examples

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

lft <- derCOP(cop=PSP,   0.4, 0.6, derdir="left"  )
rgt <- derCOP(cop=PSP,   0.4, 0.6, derdir="right" )
cnt <- derCOP(cop=PSP,   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 through 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 <- derCOP(cop=afunc, 0.5, 0.67, derdir="left"  )
rgt <- derCOP(cop=afunc, 0.5, 0.67, derdir="right" )
cnt <- derCOP(cop=afunc, 0.5, 0.67, derdir="center")
cat(c(lft,rgt,cnt,"\n")) # The "right" version is correct.

wasquith/copBasic documentation built on March 10, 2024, 11:24 a.m.