copBasic (version 2.1.5)

FGMcop: The Generalized Farlie--Gumbel--Morgenstern Copula

Description

The generalized Farlie--Gumbel--Morgenstern copula (Bekrizade et al., 2012) is $$\mathbf{C}_{\Theta, \alpha, n}(u,v) = \mathbf{FGM}(u,v) = uv[1 + \Theta(1-u^\alpha)(1-v^\alpha)]^n\mbox{,}$$ where \(\Theta \in [-\mathrm{min}\{1, 1/(n\alpha^2)\}, +1/(n\alpha)]\), \(\alpha > 0\), and \(n \in 0,1,2,\cdots\). The copula \(\Theta = 0\) or \(\alpha = 0\) or \(n = 0\) becomes the independence copula (\(\mathbf{\Pi}(u,v)\); P). When \(\alpha = n = 1\), then the well-known, single-parameter Farlie--Gumbel--Morgenstern copula results, and Spearman Rho (rhoCOP) is \(\rho_\mathbf{C} = \Theta/3\) but in general $$\rho_\mathbf{C} = 12\sum_{r=1}^n {n \choose r} \Theta^r \biggl[\frac{\phantom{\alpha}\Gamma(r+1)\Gamma(2/\alpha)}{\alpha\Gamma(r+1+2/\alpha)} \biggr]^2 \mbox{.}$$ The support of \(\rho_\mathbf{C}(\cdots;\Theta, 1, 1)\) is \([-1/3, +1/3]\) but extends via \(\alpha\) and \(n\) to \(\approx [-0.50, +0.43]\), which shows that the generalization of the copula increases the range of dependency. The generalized version is implemented by FGMcop.

The iterated Farlie--Gumbel--Morgenstern copula (Chine and Benatia, 2017) for the \(r\)th iteration is $$\mathbf{C}_{\beta}(u,v) = \mathbf{FGMi}(u,v) = uv + \sum_{j=1}^{r} \beta_j\cdot(uv)^{[j/2]}\cdot(u'v')^{[(j+1)/2]}\mbox{,}$$ where \(u' = 1-u\) and \(v' = 1-v\) for \(|\beta_j| \le 1\) that has \(r\) dimensions \(\beta = (\beta_1, \cdots, \beta_j, \cdots, \beta_r)\) and \([t]\) is the integer part of \(t\). The copula \(\beta = 0\) becomes the independence copula (\(\mathbf{\Pi}(u,v)\); P). The support of \(\rho_\mathbf{C}(\cdots;\beta)\) is approximately \([-0.43, +0.43]\). The iterated version is implemented by FGMicop. Internally, the \(r\) is determined from the length of the \(\beta\) in the para argument.

Usage

FGMcop( u, v, para=c(NA, 1,1), ...)
FGMicop(u, v, para=NULL,       ...)

Arguments

u

Nonexceedance probability \(u\) in the \(X\) direction;

v

Nonexceedance probability \(v\) in the \(Y\) direction;

para

A vector of parameters. For the generalized version, the \(\Theta\), \(\alpha\), and \(n\) of the copula where the default argument shows the need to include the \(\Theta\). However, if a fourth parameter is present, it is treated as a logical to reverse the copula (\(u + v - 1 + \mathbf{FGM}(1-u,1-v; \Theta, \alpha, n)\)). Also if a single parameter is given, then the \(\alpha = n = 1\) are automatically set to produce the single-parameter Farlie--Gumbel--Morgenstern copula. For the iterated version, the \(\beta\) vector of \(r\) iterations;

...

Additional arguments to pass.

Value

Value(s) for the copula are returned.

References

Bekrizade, Hakim, Parham, G.A., Zadkarmi, M.R., 2012, The new generalization of Farlie--Gumbel--Morgenstern copulas: Applied Mathematical Sciences, v. 6, no. 71, pp. 3527--3533.

Chine, Amel, and Benatia, Fatah, 2017, Bivariate copulas parameters estimation using the trimmed L-moments methods: Afrika Statistika, v. 12, no. 1, pp. 1185--1197.

See Also

P, mleCOP

Examples

Run this code
# NOT RUN {
# Bekrizade et al. (2012, table 1) report for a=2 and n=3 that range in
# theta = [-0.1667, 0.1667] and range in rho = [-0.1806641, 0.4036458]. However,
# we see that they have seemingly made an error in listing the lower bounds of theta:
rhoCOP(FGMcop, para=c(  1/6, 2, 3))  #  0.4036458
rhoCOP(FGMcop, para=c( -1/6, 2, 3))  # Following error results
# In cop(u, v, para = para, ...) : parameter Theta < -0.0833333333333333
rhoCOP(FGMcop, para=c(-1/12, 2, 3))  # -0.1806641 
# }
# NOT RUN {
# }
# NOT RUN {
# Support of FGMrcop(): first for r=1 iterations and then for large r.
sapply(c(-1,1), function(t) rhoCOP(cop=FGMrcop, para=rep(t,1)))
# [1] -0.3333333  0.3333333
sapply(c(-1,1), function(t) rhoCOP(cop=FGMrcop, para=rep(t,50)))
# [1] -0.4341385  0.4341385
# }
# NOT RUN {
# }
# NOT RUN {
# Maximum likelihood estimation near theta upper bounds for a=3 and n=2.
set.seed(832)
UV <- simCOP(300, cop=FGMcop, para=c(+.16,3,2))
# Define a transform function for parameter domain, though mleCOP does
# provide some robustness anyway---not forcing n into the positive
# domain via as.integer(exp(p[3])) seems to not always be needed.
FGMpfunc <- function(p) {
  d <- p[1]; a <- exp(p[2]); n <- as.integer(exp(p[3]))
  lwr <- -min(c(1,1/(n*a^2))); upr <- 1/(n*a)
  d <- ifelse(d <= lwr, lwr, ifelse(d >= upr, upr, d))
  return(c(d,a,n))
}
para <- c(.16,3,2); init <- c(0,1,1)
ML <- mleCOP(UV$U, UV$V, cop=FGMcop, init.para=init, parafn=FGMpfunc)
print(ML$para) # [1] 0.1596361 3.1321228 2.0000000
# So, we have recovered reasonable estimates of the three parameters
# given through MLE estimation.
densityCOPplot(cop=FGMcop, para=   para, contour.col=2)
densityCOPplot(cop=FGMcop, para=ML$para, ploton=FALSE) # 
# }

Run the code above in your browser using DataLab