breveCOP | R Documentation |
Adding permutation asymmetry (Chang and Joe, 2020, p. 1596) (isCOP.permsym
) is simple for a bivariate copula family. Let \mathbf{C}
be a copula with respective vectors of parameters \Theta_\mathbf{C}
, then the permutation asymmetry is added through an asymmetry parameter \beta \in (-1, +1)
by
\breve{\mathbf{C}}_{\beta;\Theta}(u,v) = v^{-\beta}\cdot\mathbf{C}(u, v^{(1+\beta)};\Theta)\mbox{, and}
for 0 \le \beta \le +1
by
\breve{\mathbf{C}}_{\beta;\Theta}(u,v) = u^{+\beta}\cdot\mathbf{C}(u^{(1-\beta)}, v;\Theta)\mbox{.}
The parameter \beta
clashes in name and symbology with a parameter used by functions composite1COP
, composite2COP
, and composite3COP
. As a result, support for alternative naming is provided for compatibility.
breveCOP(u,v, para, breve=NULL, ...)
u |
Nonexceedance probability |
v |
Nonexceedance probability |
para |
A special parameter |
breve |
An alternative way from |
... |
Additional arguments to pass to the copula. |
Value(s) for the copula are returned.
The following descriptions list in detail the structure and content of the para
argument where cop1
and cop
and para1
and para
are respectively synonymous to have some structural similarity to the various copula constructors (compositors) of the copBasic package:
beta
— The \beta
asymmetry parameter;
breve
— The \beta
asymmetry parameter and presence of breve
will not cause the non-use of beta
; this feature is present so that beta
remains accessible to the compositors that use beta
(see Examples);
cop
— Function of the copula \mathbf{C}
;
cop1
— Alternative naming of the function of the coupla \mathbf{C}
;
para
— Vector of parameters \Theta_\mathbf{C}
for \mathbf{C}
; and
para1
— Alternative naming of the vector of parameters \Theta_\mathbf{C}
for \mathbf{C}
.
The function silently restricts the \beta
to its interval as defined, but parameter transform might be useful in some numerical optimization schemes. The following recipes might be useful for transform from a parameter in numerical optimization to the asymmetry parameter:
# transform into space for optimization BREVEtfunc <- function(p) { return( qnorm((p[1] + 1) / 2) ) } # [-Inf, +Inf] # re-transform back into space for the copula BREVErfunc <- function(p) { return(2 * pnorm(p[1]) - 1) } # [-1 , +1 ]
W.H. Asquith
Chang, B., and Joe, H., 2020, Copula diagnostics for asymmetries and conditional dependence: Journal of Applied Statistics, v. 47, no. 9, pp. 1587–1615, \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1080/02664763.2019.1685080")}.
COP
, convex2COP
, convexCOP
, composite1COP
, composite2COP
, composite3COP
, FRECHETcop
, glueCOP
para <- list(breve=0.24, cop1=FRECHETcop, para1=c(0.4, 0.56))
breveCOP(0.87, 0.35, para=para) # 0.282743
betas <- seq(-1,1, by=0.01)
bloms <- sapply(betas, function(b) {
breveCOP(0.15, 0.25, para=list(cop=GLPMcop, para=c(2, 2), beta=b))
} )
plot(betas, bloms, type="l", main="GLPMcop(u,v; 2,2) by breveCOP(beta)")
## Not run:
# Notice the argument cop and para name adjustments to show that
# translation exists inside the function to have use flexibility.
para <- list(beta=+0.44, cop1=FRECHETcop, para1=c(0.2, 0.56))
UV <- simCOP(1000, cop=breveCOP, para=para)
para <- list(beta=-0.44, cop= FRECHETcop, para= c(0.2, 0.56))
UV <- simCOP(1000, cop=breveCOP, para=para) #
## End(Not run)
## Not run:
# Testing on a comprehensive copula (Plackett)
betas <- rhos <- thetas <- brhos <- NULL
for(beta in seq(-1, 1, by=0.1 )) {
for(rho in seq(-1, 1, by=0.01)) {
theta <- PLACKETTpar(rho=rho, byrho=TRUE)
thetas <- c(thetas, theta)
para <- list( cop=PLcop, para=theta, beta=beta)
brho <- rhoCOP(cop=breveCOP, para=para)
betas <- c(betas, beta); rhos <- c(rhos, rho)
brhos <- c(brhos, brho)
}
}
df <- data.frame(beta=betas, theta=thetas, rho=rhos, brho=brhos)
plot(df$theta, df$brho, log="x", pch=16, cex=0.9, col="seagreen",
xlab="Plackett parameter", ylab="Spearman Rho")
lines(df$theta[df$beta == 0], df$brho[df$beta == 0], col="red", lwd=2)
# Red line is the Plackett in its permutation symmetric definition. #
## End(Not run)
## Not run:
# Here is an example for a test using mleCOP() to estimate a 5-parameter asymmetric
# copula model to "some data" on transition from yesterday to today data for a very
# large daily time series. The purpose of example here is to demonstrate interfacing
# to the breveCOP() for it to add asymmetry to composition of two copula.
myASYMCOP <- function(u,v, para, ...) {
subpara <- list(alpha=para$alpha, beta=para$beta, cop1=GHcop, para1=para$para1,
cop2=PLcop, para2=para$para2)
breveCOP(u,v, cop=convex2COP, para=subpara)
}
para <- list(alpha=+0.16934027, cop1=GHcop, para1=c(1.11144148, 10.32292673),
beta=-0.01923808, cop2=PLcop, para2=3721.82966727)
UV <- simCOP(30000, cop=myASYMCOP, para=para, pch=16, col=grey(0, 0.1))
abline(0,1, lwd=3, col="red") #
## End(Not run)
## Not run:
# Here is a demonstration of the permutations of the passing of the
# asymmetry parameter into the function and then by
UV <- simCOP(1E3, cop=breveCOP, para=list(cop=HRcop, para=5), breve=+0.5)
UV <- simCOP(1E3, cop=breveCOP, para=list(cop=HRcop, para=5), breve=-0.5)
UV <- simCOP(1E3, cop=breveCOP, para=list(cop=HRcop, para=5, beta =+0.5))
UV <- simCOP(1E3, cop=breveCOP, para=list(cop=HRcop, para=5, breve=+0.5))
UV <- simCOP(1E3, cop=breveCOP, para=list(cop=HRcop, para=5, beta=-0.4, breve=+0.5))
para <- list(cop1=HRcop, para1=6, cop2=PSP, para2=NULL, alpha=1, beta=0.7)
myCOP <- function(u,v, para, ...) breveCOP(u,v, cop=composite2COP, para=para)
para$breve <- "here I am"
UV <- simCOP(1E3, cop=composite2COP, para=para, seed=1) # breve is not used
para$breve <- -0.16
UV <- simCOP(1E3, cop=myCOP, para=para, seed=1)
para$breve <- +0.16
UV <- simCOP(1E3, cop=myCOP, para=para, seed=1) #
## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.