Learn R Programming

copBasic (version 2.0.1)

prod2COP: The Product of Two Copulas

Description

Perform copula multiplication (so-called $\ast$-product or Markov Product) is a continuous analog of matrix multiplication and yields another copula: $$\bigl(\mathbf{C}_1 \ast \mathbf{C}_2 \bigr)(u,v) = \mathbf{C}_3(u,v) = \int_\mathcal{I} \frac{\delta \mathbf{C}_1(u, t)}{\delta v} \frac{\delta \mathbf{C}_2(t, v)}{\delta u}\,\mathrm{d}t\mbox{,}$$ for copulas $\mathbf{C}_1(u, v)$ and $\mathbf{C}_2(u, v)$ are copulas whose $\ast$-product yields copula $\mathbf{C}_3(u, v)$ in terms of partial derivatives (derCOP and derCOP2) of the other two. Nelsen (2006, p. 245) lists several identities of the $\ast$-product involving the product ($\mathbf{\Pi}$; P), lower bound ($\mathbf{W}$; W), and upper bound ($\mathbf{M}$; M) copulas: $$\mathbf{\Pi} \ast \mathbf{C} = \mathbf{C} \ast \mathbf{\Pi} = \mathbf{\Pi}\mbox{,}$$ $$\mathbf{M} \ast \mathbf{C} = \mathbf{C} \ast \mathbf{M} = \mathbf{M}\mbox{,}$$ $$\bigl(\mathbf{W} \ast \mathbf{C}\bigr)(u,v) = v - \mathbf{C}(1-u, v)\mbox{\ and\ } \bigl(\mathbf{C} \ast \mathbf{W}\bigr)(u,v) = u - \mathbf{C}(u, 1-v)\mbox{, and}$$ $$\mathbf{W} \ast \mathbf{W} = \mathbf{M}\mbox{ and } \mathbf{W} \ast \mathbf{C} \ast \mathbf{W} = \hat\mathbf{C}\mbox{,}$$ where $\hat\mathbf{C}$ is the survival copula (surCOP). The $\ast$-product is associative: $$\mathbf{A} \ast (\mathbf{B} \ast \mathbf{C}) = (\mathbf{A} \ast \mathbf{B}) \ast \mathbf{C}\mbox{,}$$ but $\ast$-product is not commutative (order independent). Nelsen (2006, p. 245) reports that if we view $\ast$ as a binary operation on the set of copulas, then $\mathbf{\Pi}$ is the null element, and $\mathbf{M}$ is the identity. Copula mulitiplication is closely linked to Markov Processes (Nelsen, 2006, pp. 244--248).

For other descriptions and computations of copula combination are possible using the copBasic package. (see convex2COP, composite1COP, composite2COP, composite3COP).

Usage

prod2COP(u,v, cop1=NULL, para1=NULL, cop2=NULL, para2=NULL, para=NULL,
              interval=NULL, ...)

Arguments

u
Nonexceedance probability $u$ in the $X$ direction;
v
Nonexceedance probability $v$ in the $Y$ direction;
cop1
The $\mathbf{C}_1(u,v; \Theta_1)$ copula function with vectorization as in asCOP;
para1
Vector of parameters or other data structures for $\Theta_1$, if needed, to pass to copula $\mathbf{C}_1(u,v; \Theta_1)$;
cop2
The $\mathbf{C}_2(u,v; \Theta_2)$ copula function with vectorization as in asCOP;
para2
Vector of parameters or other data structures for $\Theta_2$, if needed, to pass to copula $\mathbf{C}_2(u,v; \Theta_2)$;
para
An Rlist that can take the place of the cop1, para1, cop2, and para2 arguments. These four will be populated from same named elements of the list, and if the other four argument
interval
An optional interval for the above integral. The default is $\mathcal{I} = [0,1]$ but the option of the user to replace exact end points with small numbers is possible (e.g. interval=c(lo, 1-lo) for say
...
Additional arguments to pass to the copulas.

Value

  • Value(s) for the copula are returned.

concept

  • copula multiplication
  • copula product
  • Markov Product

References

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

See Also

COP, convex2COP, composite1COP, composite2COP, composite3COP

Examples

Run this code
# Product P * N4212 ---> P (by identity)
u <- c(0.41, 0.87); v <- c(0.13,0.35)
prod2COP(u,v, cop1=P, cop2=N4212cop, para1=NA, para2=2.12) # 0.0533 and 0.3045
COP(u,v, cop=P)                                            # 0.0533 and 0.3045

para <- list(cop1=PLACKETTcop, para1=0.19, cop2=PLACKETTcop, para2=34.5)
UV <- simCOP(n=1000, cop=prod2COP, para=para)
# This is large simulation run (with a lot of numerical operations) is expected
# at least for the Placketts and chosen parameters to trigger one or more
# Error in uniroot(func, interval = c(0, 1), u = u, LHS = t, cop = cop,  :
#   f() values at end points not of opposite sign
# warnings. The simCOP() function simply continues on with ignoring the solution or
# lack thereof for certain combinations, and simCOP() will report how many of the
# simulated values for sample of size n were computed. For example, for one n=1000,
# some 965 simulated values were returned. Lastly, the Spearman Rho can be computed
rhoCOP(cop=prod2COP, para=para) # -0.4271195 (theoretical)
rhoCOP(para=UV, as.sample=TRUE) # -0.4284223 (the test n=1000 --> n=965 sample)

Run the code above in your browser using DataLab