JOMAcop: The Joe-Ma Copula

JOMAcopR Documentation

The Joe–Ma Copula

Description

The Joe–Ma copula (Joe, 2014, p. 177), crediting Joe and Ma (2000), is

\mathbf{C}_{\Theta}(u,v) = \mathbf{JOMA}(u,v) = 1 - F_{\Gamma}\biggl(\biggl\{ \bigl[F_\Gamma^{(-1)}(1-u; \Theta)\bigr]^\Theta + \bigl[F_\Gamma^{(-1)}(1-v; \Theta)\bigr]^\Theta \biggr\}^{(1/\Theta)}; \Theta\biggr)\mbox{,}

where F_\Gamma(x;\Theta) is the cumulative distribution function of the Gamma distribution, F_\Gamma^{(-1)}(f;\Theta) is the quantile function of the Gamma distribution, and \Theta \in (-1, +1), which is a different parameter range than shown in Joe (2014, p. 177) because of numerical difficulties with the Gamma distribution and functional performance in context of copBasic design. The copula limits, as \Theta \rightarrow -1, to the countermonotonicity coupla (\mathbf{W}(u,v); W), as \Theta \rightarrow 1, to the comonotonicity copula (\mathbf{M}(u,v); M), and as \Theta \rightarrow 0^{\pm}, to the independence copula (\mathbf{\Pi}(u,v); P), and as \Theta \rightarrow +\infty. The parameter \Theta is readily computed from Kendall Tau (tauCOP) or Spearman Rho (rhoCOP) by root-solving methods. Because the formulation here uses a differing parameter range than shown in Joe (2014), integral formulations for Kendall Tau are not shown in this documentation.

Usage

JOMAcop(u, v, para=NULL, rhotau=NULL,
              cortype=c("kendall", "spearman", "tau", "rho"), ...)

Arguments

u

Nonexceedance probability u in the X direction;

v

Nonexceedance probability v in the Y direction;

para

A vector (single element) of parameters—the \Theta parameter of the copula;

rhotau

Optional Kendall Tau or Spearman Rho and parameter para is returned depending on the setting of cortype. The u and v can be used for estimation of the parameter as computed through the setting of cortype;

cortype

A character string controlling, if the parameter is not given, to use a Kendall Tau or Spearman Rho for estimation of the parameter. The name of this argument is reflective of an internal call to stats::cor() to the correlation (association) setting for Kendall Tau or Spearman Rho; and

...

Additional arguments to pass.

Value

Value(s) for the copula are returned. Otherwise if tau is given, then the \Theta is computed and a list having

para

The parameter \Theta, and

tau

Kendall Tau.

and if para=NULL and tau=NULL, then the values within u and v are used to compute Kendall Tau and then compute the parameter, and these are returned in the aforementioned list. Or if rho is given, then the \Theta is computed and a similar list is returned having similar structure but with Spearman Rho instead.

Note

The implementation of the copula here makes use of the negative association part of Joe's parameterization and rotates the copula to positive association. Experiments show Gamma distribution limitations that are not symmetrical to the problem at hand as the shape parameter in the distribution gets large. The negative association part of the copula makes use of conversion to Joe (2014, p. 179) formula for the lower bounds of the copula. Internally, the parameter range is converted to \Theta \in (-1, +1) and therefore \Theta = 0 is in the middle and independence. There are two thresholds for absolute value of the transformed \Theta in the source code and these stem from estimation of where the Gamma distribution simply breaks down. The benefit of the parameterization for this copula is we get near complete comprehensiveness that is symmetrical in Kendall Tau or Spearman Rho, which does seem likely in the R source code that Joe (2014) has accompanying that book.

Remark, because reflection of 1-v is used for the construction of the positive association, for 0 < \Theta \le +1, the copula is the copula of (u, 1-v); care will be needed in some situations to work with this fact. Also, though the formula above suggests permutation symmetry between (u,v) and (v,u), simulations shown some tendency for skewing off the diagonal of the association. This is currently thought to be tied to the numerical derivative direction used in copBasic simulation; counter point is the following recipe:

  UV <- simCOP(2000, cop=JOMAcop, para=-0.9, seed=1) # appears to
  # "cry" !!!! towards the upper-right corner and this is the native
  # formulation because the Theta is less than 0. Let us then have a
  # check of permutation symmetry through all four rotations.
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=-0.9, reflect=1))
  # [1] TRUE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=-0.9, reflect=2))
  # [1] TRUE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=-0.9, reflect=3))
  # [1] FALSE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=-0.9, reflect=4))
  # [1] FALSE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=+0.9, reflect=1))
  # [1] FALSE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=+0.9, reflect=2))
  # [1] FALSE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=+0.9, reflect=3))
  # [1] TRUE
  isCOP.permsym(cop=COP, para=list(cop=JOMAcop, para=+0.9, reflect=4))
  # [1] TRUE

All this tells us is that when the principle direction of the points are along the primary diagonal from lower left to upper right that variables are not exchangeable and hence there appears some directionality at the Gamma distribution itself within the what seems to be a symmetrical formula undoubtedly for the native form. Is this caused by the skewness itself of the Gamma? Will this be a source of L-coskewness of this copula implementation relative to Gaussian (NORMcop) or Frank (FRcop) copulas? Lastly, consult the following

  lcomCOP(cop=JOMAcop, para=-0.6)
  lcomCOP(cop=FRcop, para=FRcop(rhotau=tauCOP(cop=JOMAcop, para=-0.6))$para)

that shows us that the two copula for the same Kendall Tau have differing L-comoments of course but that the Frank as L-coskews of zero and the Joe–Ma does not. One more check is now made to provide more informative about the diagonal and symmetry or not:

  d <- -0.9; t <- seq(0.001, 0.999, by=0.001)
  UV <- simCOP(1000, cop=JOMAcop, para=d) # "crying" towards the upper right
  abline(1, -1, col="red") # corner, so not symmetrical about the -1 diagonal.
  u <- 0.5; der <- derCOP(cop=JOMAcop, u, t, para=-0.9, derdir="left")
  plot(qnorm(t), qnorm(der), type="l", )

that tells us that a vertical second line at u = c has a longer tail above the median and hence confirming that the Gamma distribution involvement must be producing the asymmetry.

Author(s)

W.H. Asquith

References

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

Joe, H., and Ma, C., 2000, Multivariate survival functions with a min-stable property: Journal of Multivariate Analyses, v. 75, no. 1, pp. 13–35, \Sexpr[results=rd]{tools:::Rd_expr_doi("https://doi.org/10.1006/jmva.1999.1891")}.

See Also

M, P, W

Examples

JOMAcop(rhotau=0.7, method="kendall")$para # 0.8645555

## Not run: 
  n <- 100 # Demonstrate "comprehensiveness" for the copula
  d <- sort( sample(c(-1,1), n, replace=TRUE) * 10^runif(n, min=-0.5, max=0) )
  for(i in 1:n) {
    UV <- simCOP(100, cop=JOMAcop, para=d[i]); mtext(d[i])
  } # 
## End(Not run)

## Not run: 
  # Close to maximum L-comoments and sample counterparts for general check
  # against the postive and negative aspects and signs. It is interesting
  # that there are some larger than anticipated differences with some of
  # of the sample to the theory. Perhaps numerical improvements are needed?
  UVp <- simCOP(100000, cop=JOMAcop, para=+0.6, graphics=FALSE, seed=1)
  UVn <- simCOP(100000, cop=JOMAcop, para=-0.6, graphics=FALSE, seed=1)
  #                                Lcomom:T3[12,21] Lcomom:T4[12,21]
  lcomCOP(cop=JOMAcop, para=+0.6)  #    0.014081858      0.014592670
  #                                #   -0.014081858      0.014592670
  lcomCOP(cop=JOMAcop, para=-0.6)  #    0.014081858     -0.014592670
  #                                #    0.014081858     -0.014592670
  lmomco::lcomoms2(UVp, nmom=4) #$T3    0.0155001646     0.0161519394
  #                                #   -0.0145945494     0.0148050507
  lmomco::lcomoms2(UVn, nmom=4) #$T4    0.010777365      0.0143115158
  #                                #   -0.0168424348    -0.0131075545 # 
## End(Not run)

## Not run: 
  # A quick look at L-comoments of the copula with some remarks about limits.
  # The numerical intergrations for the L-comoments "diverage" for
  #   T3.12 NAs begin at -0.988, 0.987
  #   T3.21 NAs begin at -0.988, -----
  #   T4.12 NAs begin at -0.988, -----
  #   T4.12 NAs begin at -0.988, -----
  d <- seq(-1, 1, by=0.001)
  t3.12 <- t4.12 <- rep(NA, length(d))
  t3.21 <- t4.21 <- rep(NA, length(d))
  for(i in seq_len(length(d))) {
    lcm <- lcomCOP(cop=JOMAcop, para=d[i])
    t3.12[i] <- lcm$lcomUV[3]; t4.12[i] <- lcm$lcomUV[4]
    t3.21[i] <- lcm$lcomVU[3]; t4.21[i] <- lcm$lcomVU[4]
  }
  plot(d,  t3.12, col="skyblue4", type="l", lwd=3, ylim=c(-0.02, +0.02),
       xlab="JOMAP parameter", ylab="L-coskew and L-kurtosis")
  lines(d, t4.12, col="skyblue4", lty=2,    lwd=3)
  lines(d, t3.21, col="red")
  lines(d, t4.21, col="red",      lty=2) # 
## End(Not run)

copBasic documentation built on July 23, 2026, 1:07 a.m.