copBasic (version 2.1.5)

FRECHETcop: The Fr<U+00E9>chet Family Copula

Description

The Fr<U+00E9>chet 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<U+00E9>chet Family copulas are convex combinations of the fundamental copulas \(\mathbf{W}\) (Fr<U+00E9>chet--Hoeffding lower bound copula; W), \(\mathbf{\Pi}\) (independence; P), and \(\mathbf{M}\) (Fr<U+00E9>chet--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 the Spearman Rho (\(\rho_\mathbf{C}\); rhoCOP) and Kendall 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<U+00E9>chet 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). Durante (2007, p. 257) reports that the Fr<U+00E9>chet 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 Rho from which to estimate the parameters;

tau

Kendall Tau from which to estimate the parameters;

par2rhotau

A logical that if TRUE will return an R list 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\}\), parameter estimation made, and an R list is returned.

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<U+00E9>chet lower and upper bound copulas as the two limiting copulas are called.

For no other reason than that it can be easily done and makes a nice picture, loop through a nest of \(\rho\) and \(\tau\) for the Fr<U+00E9>chet 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
# NOT RUN {
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 Tau
rho <- cor(UV$U, UV$V, method="spearman") # sample Spearman 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