coeffG: Coefficients of Polynomial used for Gumbel Copula

coeffGR Documentation

Coefficients of Polynomial used for Gumbel Copula

Description

Compute the coefficients a[d,k](θ) involved in the generator (psi) derivatives and the copula density of Gumbel copulas.

For non-small dimensions d, these are numerically challenging to compute accurately.

Usage

coeffG(d, alpha,
       method = c("sort", "horner", "direct", "dsumSibuya",
                  paste("dsSib", eval(formals(dsumSibuya)$method), sep = ".")),
       log = FALSE, verbose = FALSE)

Arguments

d

number of coefficients, (the copula dimension), d >= 1.

alpha

parameter 1/θ in (0,1]; you may use mpfr(alph, precBits = <n_prec>) for higher precision methods ("Rmpfr*") from package Rmpfr.

method

a character string, one of

"sort":

compute coefficients via exp(log()) pulling out the maximum, and sort.

"horner":

uses polynomial evaluation, our internal polynEval().

"direct":

brute force approach.

"dsSib.<FOO>":

uses dsumSibuya(..., method= "<FOO>").

log

logical determining if the logarithm (log) is to be returned.

verbose

logical indicating if some information should be shown, currently for method == "sort" only.

Value

a numeric vector of length d, of values

a_k(θ, d) = (-1)^(d-k) Sum(j=k..d; α^j * s(d,j) * S(j,k)), k in 1..d.

Note

There are still known numerical problems (with non-"Rmpfr" methods; and those are slow), e.g., for d=100, alpha=0.8 and sign(s(n,k)) = (-1)^(n-k).

As a consequence, the methods and its defaults may change in the future, and so the exact implementation of coeffG() is still considered somewhat experimental.

Examples

a.k  <- coeffG(16, 0.55)
plot(a.k, xlab = quote(k), ylab = quote(a[k]),
     main = "coeffG(16, 0.55)", log = "y", type = "o", col = 2)
a.kH <- coeffG(16, 0.55, method = "horner")
stopifnot(all.equal(a.k, a.kH, tol = 1e-11))# 1.10e-13 (64-bit Lnx, nb-mm4)


copula documentation built on Feb. 16, 2023, 8:46 p.m.