Learn R Programming

copBasic (version 2.0.1)

FRECHETcop: The Fréchet{Frechet} Family Copula

Description

The Fréchet{Frechet} Family copula (Durante, 2007, pp. 256--259) is $$\mathbf{C}_{\alpha, \beta}(u,v) = \mathbf{FF}(u,v) = \alpha\mathbf{M}(u,v) + (1-\alpha-\beta)\mathbf{\Pi}(u,v)+\beta\mathbf{W}(u,v)\mbox{,}$$ where $\alpha, \beta \ge 0$ and $\alpha + \beta \le 1$. The Fréchet{Frechet} Family copulas are convex combinations of the fundamental copulas $\mathbf{W}$ (Fréchet{Frechet}-Hoeffding lower bound copula; W), $\mathbf{\Pi}$ (independence; P), and $\mathbf{M}$ (Fréchet{Frechet}-Hoeffding upper bound copula; M). The copula is comprehensive because both $\mathbf{W}$ and $\mathbf{M}$ can be obtained. The parameters are readily estimated using Spearman's Rho ($\rho_\mathbf{C}$; rhoCOP) and Kendall's Tau ($\tau_\mathbf{C}$; tauCOP) by

$$\tau_\mathbf{C} = \frac{(\alpha - \beta)(\alpha + \beta + 2)}{3}\mbox{\ and\ } \rho_\mathbf{C} = \alpha - \beta\mbox{.}$$

The Fréchet{Frechet} Family copula virtually always has a visible singular component unless $\alpha, \beta = 0$. The copula has respective lower- and upper-tail dependency parameters of $\lambda^L = \alpha$ and $\lambda^U = \alpha$ (taildepCOP). Lastly, Durante (2007, p. 257) reports that the Fréchet{Frechet} Family copula can approximate any bivariate copula in a unique way and the error bound can be estimated.

Usage

FRECHETcop(u,v, para=NULL, rho=NULL, tau=NULL, par2rhotau=FALSE, ...)

Arguments

u
Nonexceedance probability $u$ in the $X$ direction;
v
Nonexceedance probability $v$ in the $Y$ direction;
para
A vector (two element) of parameters $\alpha$ and $\beta$;
rho
Spearman's $\rho_\mathbf{C}$ from which to estimate the parameters;
tau
Kendall's $\tau_\mathbf{C}$ from which to estimate the parameters;
par2rhotau
A logical that if TRUE will return an Rlist of the $\rho$ and $\tau$ for the parameters; and
...
Additional arguments to pass.

Value

  • Value(s) for the copula are returned using the $\alpha$ and $\beta$ as set by argument para; however, if para=NULL and rho and tau are set and compatible with the copula, then ${\rho_\mathbf{C}, \tau_\mathbf{C}} \rightarrow {\alpha, \beta}$ and an Rlist is returned.

encoding

utf8

concept

  • Linear Spearman copula
  • Linear Spearman

Details

The function will check the consistency of the parameters whether given by argument or computed from $\rho_\mathbf{C}$ and $\tau_\mathbf{C}$. The term Family is used with this particular copula in copBasic so as to draw distinction to the Fréchet{Frechet} lower and upper bound copulas as the two limiting copulas are called.

For no other reason than that it can be done and makes a nice picture, loop through a nest of $\rho$ and $\tau$ for the Fréchet{Frechet} Family copula and plot the domain of the resulting parameters: ops <- options(warn=-1) # warning supression because "loops" are dumb taus <- rhos <- seq(-1,1, by=0.01) plot(NA, NA, type="n", xlim=c(0,1), ylim=c(0,1), xlab="Frechet Copula Parameter Alpha", ylab="Frechet Copula Parameter Beta") for(tau in taus) { for(rho in rhos) { fcop <- FRECHETcop(rho=rho, tau=tau) if(! is.na(fcop$para[1])) points(fcop$para[1], fcop$para[2]) } } options(ops)

References

Durante, F., 2007, Families of copulas, Appendix C, in Salvadori, G., De Michele, C., Kottegoda, N.T., and Rosso, R., 2007, Extremes in Nature---An approach using copulas: Springer, 289 p.

See Also

M, P, W

Examples

Run this code
ppara <- c(0.25, 0.50)
fcop <- FRECHETcop(para=ppara, par2rhotau=TRUE)
RHO <- fcop$rho; TAU <- fcop$tau

level.curvesCOP(cop=FRECHETcop, para=ppara) # Durante (2007, Fig. C.27(b))
mtext("Frechet Family copula")
 UV <- simCOP(n=50, cop=FRECHETcop, para=ppara, ploton=FALSE, points=FALSE)
tau <- cor(UV$U, UV$V, method="kendall" ) # sample Kendall's Tau
rho <- cor(UV$U, UV$V, method="spearman") # sample Spearman's Rho
spara <- FRECHETcop(rho=rho, tau=tau) # a fitted Frechet Family copula
spara <- spara$para
if(is.na(spara[1])) { # now a fittable combination is not guaranteed
   warning("sample rho and tau do not provide valid parameters, ",
           "try another simulation")
} else { # now if fit, draw some red-colored level curves for comparison
   level.curvesCOP(cop=FRECHETcop, para=spara, ploton=FALSE, col=2)
}

Run the code above in your browser using DataLab