Learn R Programming

copula (version 0.999-13)

gtrafo: GOF Testing Transformations for Archimedean Copulas

Description

Compute the following goodness-of-fit (GOF) testing transformations, [object Object],[object Object]

Usage

rtrafo(u, cop, j.ind = NULL, n.MC=0, inverse=FALSE, log=FALSE)
htrafo(u, cop, include.K=TRUE, n.MC=0, inverse=FALSE,
       method=eval(formals(qK)$method), u.grid, ...)

Arguments

u
$n\times d$-matrix with values in $[0,1]$. If inverse=FALSE (the default), u contains (pseudo-/copula-)observations from the copula cop based on which the transformation is carried out; consider applying
cop
a "Copula" with specified parameters based on which the transformation is computed. For htrafo(), currently only Archimedean copulas are supported (specified as "outer_na
j.ind
NULL (in which case the Rosenblatt transformation is computed (all components)) or an integer between 2 and $d$ indicating the conditional distribut
n.MC
parameter n.MC for K (for htrafo) or for approximating the derivatives involved in the Rosenblatt transform for Archimedean copulas (for rtrafo).
inverse
logical indicating whether the inverse of the transformation is returned.
log
logical specifying if the logarithm of the transformation, i.e., conditional distributions is desired.
include.K
logical indicating whether the last component, involving the Kendall distribution function K, is used in htrafo.
method
method to compute qK.
u.grid
argument of qK (for method="discrete").
...
additional arguments passed to qK() if inverse is true.

Value

  • htrafo() returns an $n\times d$- or $n\times (d-1)$-matrix (depending on whether include.K is TRUE or FALSE) containing the transformed input u.

    rtrafo() returns an $n\times d$-matrix containing the transformed input u.

Details

[object Object],[object Object]

References

Genest, C., Ré{e}millard, B., and Beaudoin, D. (2009). Goodness-of-fit tests for copulas: A review and a power study. Insurance: Mathematics and Economics 44, 199--213.

Rosenblatt, M. (1952). Remarks on a Multivariate Transformation, The Annals of Mathematical Statistics 23, 3, 470--472.

Hering, C. and Hofert, M. (2014). Goodness-of-fit tests for Archimedean copulas in high dimensions. Innovations in Quantitative Risk Management.

Hofert, M., Mächler{Maechler}, M., and McNeil, A. J. (2012). Likelihood inference for Archimedean copulas in high dimensions under known margins. Journal of Multivariate Analysis 110, 133--150.

See Also

gofCopula where both transformations are applied or emde where htrafo is applied.

Examples

Run this code
tau <- 0.5
(theta <- copGumbel@iTau(tau)) # 2
(copG <- onacopulaL("Gumbel", list(theta, 1:5))) # d = 5

set.seed(1)
n <- 1000
x <- rnacopula(n, copG)
x <- qnorm(x) # x now follows a meta-Gumbel model with N(0,1) marginals
u <- pobs(x) # build pseudo-observations

## graphically check if the data comes from a meta-Gumbel model
## with the transformation of Hering and Hofert (2014):
u.h <- htrafo(u, cop=copG) # transform the data
pairs(u.h, gap=0, cex=0.2) # looks good

## with the transformation of Rosenblatt (1952):
u.r <- rtrafo(u, cop=copG) # transform the data
pairs(u.r, gap=0, cex=0.2) # looks good

## what about a meta-Clayton model?
## the parameter is chosen such that Kendall's tau equals (the same) tau
copC <- onacopulaL("Clayton", list(copClayton@iTau(tau), 1:5))

## plot of the transformed data (Hering and Hofert (2014)) to see the
## deviations from uniformity
u.H <- htrafo(u, cop=copC) # transform the data
pairs(u.H, gap=0, cex=0.2) # clearly visible

## plot of the transformed data (Rosenblatt (1952)) to see the
## deviations from uniformity
u.R <- rtrafo(u, cop=copC) # transform the data
pairs(u.R, gap=0, cex=0.2) # clearly visible

## rtrafo() for elliptical:
fN <- fitCopula(normalCopula(dim=ncol(u)), u) # fit a Gauss copula
pairs(rtrafo(u, cop=fN@copula), gap=0, cex=0.2) # visible but not so clearly
if(copula:::doExtras()) {
  f.t <- fitCopula(tCopula(dim=ncol(u)), u)
  tCop <- f.t@copula
} else {
  tCop <- tCopula(param = 0.685, df = 7, dim=ncol(u))
}
u.Rt <- rtrafo(u, cop=tCop) # transform with a fitted t copula
pairs(u.Rt, gap=0, cex=0.2) # *not* clearly visible
stopifnot(all.equal(log(u.R),
		    rtrafo(u, cop=copC, log=TRUE), tolerance=1e-14),
	  all.equal(log(rtrafo(u, cop= fN@copula)),
		    rtrafo(u, cop=fN@copula, log=TRUE), tolerance=1e-14),
	  all.equal(log(u.Rt),
		    rtrafo(u, cop=tCop, log=TRUE), tolerance=1e-14),
	  TRUE)

Run the code above in your browser using DataLab