| FGMcop | R Documentation |
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 rth 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.
FGMcop( u, v, para=c(NA, 1,1), ...)
FGMicop(u, v, para=NULL, ...)
u |
Nonexceedance probability |
v |
Nonexceedance probability |
para |
A vector of parameters. For the generalized version, the |
... |
Additional arguments to pass. |
Value(s) for the copula are returned.
W.H. Asquith
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.
P, mleCOP
## 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
## End(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=FGMicop, para=rep(t, 1)) )
# [1] -0.3333333 0.3333333
sapply(c(-1, 1), function(t) rhoCOP(cop=FGMicop, para=rep(t,50)) )
# [1] -0.4341385 0.4341385
## End(Not run)
## Not run:
# Maximum likelihood estimation near theta upper bounds for a=3 and n=2.
set.seed(832)
UV <- simCOP(3000, cop=FGMcop, para=c(+0.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(0.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="red")
densityCOPplot(cop=FGMcop, para=ML$para, ploton=FALSE) #
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.