derCOPinv2 {copBasic} | R Documentation |
Numerical Derivative Inverse of a Copula for U with respect to V
Description
Compute the inverse of a numerical partial derivative for U
with respect to V
of a copula, which is a conditional quantile function for nonexceedance probability t
, or
t = c_v(u) = \mathbf{C}^{(-1)}_{1 \mid 2}(u \mid v) = \frac{\delta \mathbf{C}(u,v)}{\delta v}\mbox{,}
and solving for u
. Nelsen (2006, pp. 13, 40–41) shows that this inverse is quite important for random variable generation using the conditional distribution method. This function is not vectorized and will not be so.
Usage
derCOPinv2(cop=NULL, v, t, trace=FALSE,
delv=.Machine$double.eps^0.50, para=NULL, ...)
Arguments
cop |
A copula function; |
v |
A single nonexceedance probability |
t |
A single nonexceedance probability level |
trace |
A logical controlling a |
delv |
The |
para |
Vector of parameters or other data structure, if needed, to pass to |
... |
Additional arguments to pass to the copula. |
Value
Value(s) for the derivative inverse are returned.
Author(s)
W.H. Asquith
References
Nelsen, R.B., 2006, An introduction to copulas: New York, Springer, 269 p.
See Also
Examples
u <- runif(1); t <- runif(1)
derCOPinv2(u,t, cop=W) # perfect negative dependence
derCOPinv2(u,t, cop=P) # independence
derCOPinv2(u,t, cop=M) # perfect positive dependence
derCOPinv2(u,t, cop=PSP) # a parameterless copula example
## Not run:
# Simulate 500 values from product (independent) copula
plot(NA,NA, type="n", xlim=c(0,1), ylim=c(0,1), xlab="U", ylab="V")
for(i in 1:500) {
v <- runif(1); t <- runif(1)
points(derCOPinv2(cop=P, v, t),v, cex=0.5, pch=16) # black dots
}
# Simulate 500 of a Frechet Family copula and note crossing singularities.
for(i in 1:500) {
v <- runif(1); t <- runif(1)
u <- derCOPinv2(v, t, cop=FRECHETcop, para=list(alpha=0.7, beta=0.169))
points(u,v, cex=2, pch=16, col=2) # red dots
} #
## End(Not run)