tEVcop: The t-EV (Extreme Value) Copula

tEVcopR Documentation

The t-EV (Extreme Value) Copula

Description

The t-EV copula (Joe, 2014, p. 189) is a limiting form of the t-copula (multivariate t-distribution):

\mathbf{C}_{\rho,\nu}(u,v) = \mathbf{tEV}(u,v; \rho, \nu) = \mathrm{exp}\bigl(-(x+y) \times B(x/(x+y); \rho, \nu)\bigr)\mbox{,}

where x = -\log(u), y = -\log(v), and letting \eta = \sqrt{(\nu+1)/(1-\rho^2)} define

B(w; \rho, \nu) = wT_{\nu+1}\bigl(\eta[(w/[1-w])^{1/\nu}-\rho]\bigr) + (1-w)T_{\nu+1}\bigl(\eta[([1-w]/w)^{1/\nu}-\rho]\bigr)\mbox{,}

where T_{\nu+1} is the cumulative distribution function of the univariate t-distribution with \nu-1 degrees of freedom. As \nu \rightarrow \infty, the copula weakly converges to the Hüsler–Reiss copula (HRcop) because the t-distribution converges to the normal (see Examples for a study of this copula).

The \mathbf{tEV}(u,v; \rho, \nu) copula is a two-parameter option when working with extreme-value copula. There is a caveat though. Demarta and McNeil (2004) conclude that “the parameter of the Gumbel [GHcop] or Galambos [GLcop] A-functions [the Pickend dependence function and B-function by association] can always be chosen so that the curve is extremely close to that of the t-EV A-function for any values of \nu and \rho. The implication is that in all situations where the t-EV copula might be deemed an appropriate model then the practitioner can work instead with the simpler Gumbel or Galambos copulas.”

Usage

tEVcop(u, v, para=NULL, ...)

Arguments

u

Nonexceedance probability u in the X direction;

v

Nonexceedance probability v in the Y direction;

para

A vector (two element) of parameters in \rho and \nu order; and

...

Additional arguments to pass.

Value

Value(s) for the copula are returned.

Note

Note that Joe (2014) shows x = \log(u) (note absence of the minus sign). This is not correct.

Author(s)

W.H. Asquith

References

Joe, H., 2014, Dependence modeling with copulas: Boca Raton, CRC Press, 462 p.

Demarta, S., and McNeil, A.J., 2004, The t copula and related copulas: International Statistical Review, v. 33, no. 1, pp. 111–129, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1111/j.1751-5823.2005.tb00254.x")}

See Also

GHcop, GLcop, HRcop

Examples

## Not run: 
tau <- 1/3 # Example from copula::evCopula.Rd
tev.cop <- copula::tevCopula(copula::iTau(copula::tevCopula(), tau))
copula::pCopula(c(0.1,.5), copula=tev.cop)         # 0.07811367
tEVcop(0.1, 0.5, para=slot(tev.cop, "parameters")) # 0.07811367
## End(Not run)

## Not run: 
nsim <- 2000; pargh <- c(5, 0.5, 0.5)
UV <- simCOP(nsim, cop=GHcop, para=pargh)
U <- lmomco::pp(UV[,1], sort=FALSE)
V <- lmomco::pp(UV[,2], sort=FALSE)
RT <- mleCOP(u=U, v=V, cop=tEVcop, init.para=c(0.5,log(4)),
             parafn=function(k) return(c(k[1], exp(k[2]))))
partev <- RT$para

FT <- simCOP(nsim, cop=tEVcop, para=RT$para)

tauCOP(cop=GHcop,  para=pargh )
tauCOP(cop=tEVcop, para=partev)

tauCOP(cop=GHcop,  para=pargh ) # [1] 0.3003678
tauCOP(cop=tEVcop, para=partev) # [1] 0.3178904

densityCOPplot(cop=GHcop,  para=pargh)
densityCOPplot(cop=tEVcop, para=partev, ploton=FALSE, contour.col="red") #
## End(Not run)

## Not run: 
# A demonstration Joe (2014, p. 190) for which tEvcop() has
# upper tail dependence parameter as
para <- c(0.8, 10)
lamU <- 2*pt(-sqrt((para[2]+1)*(1-para[1])/(1+para[1])), para[2]+1)
"tEVcop.copula" <- function(u,v, para=NULL, ...) {
      if(length(u)==1) u<-rep(u,length(v)); if(length(v)==1) v<-rep(v,length(u))
      return(copula::pCopula(matrix(c(u,v), ncol=2),
                   tevCopula(param=para[1], df=para[2])))
}
lamU.copBasic <- taildepCOP(cop=tEVcop,        para)$lambdaU
lamU.copula   <- taildepCOP(cop=tEVcop.copula, para)$lambdaU
print(c(lamU, lamU.copBasic, lamU.copula))
#[1] 0.2925185 0.2925200 0.2925200 # So, we see that they all match.
## End(Not run)

## Not run: 
# Convergence of tEVcop to HRcop as nu goes to infinity.
nu <- 10^(seq(-4, 2, by=0.1)) # nu right end point rho dependent
rho <- 0.7 # otherwise, expect to see 'zeros' errors on the plot()
# Compute Blomqvist Beta (fast computation is reason for choice)
btEV <- sapply(nu, function(n) blomCOP(tEVcop, para=c(rho, n)))
limit.thetas <- sqrt(2 / (nu*(1-rho))) # for nu --> infinity HRcop
thetas <- sapply(btEV, function(b) {
     uniroot(function(l, blom=NA) { blom - blomCOP(HRcop, para=l) },
     interval=c(0,10), blom=b)$root })
plot(limit.thetas, thetas, log="xy", type="b",
     xlab="Theta of HRcop via limit nu --> infinity",
     ylab="Theta from Blomqvist Beta equivalent HRcop to tEVcop")
abline(0,1)
mtext(paste0("Notice the 'weak' convergence to lower left, and \n",
             "convergence increasing with rho"))
# Another reference of note
# https://mediatum.ub.tum.de/doc/1145695/1145695.pdf (p.39) #
## End(Not run)

copBasic documentation built on Oct. 17, 2023, 5:08 p.m.