absdPsiMC {copula} | R Documentation |
Absolute Value of Generator Derivatives via Monte Carlo
Description
Computes the absolute values of the d
th generator derivative
\psi^{(d)}
via Monte Carlo simulation.
Usage
absdPsiMC(t, family, theta, degree = 1, n.MC,
method = c("log", "direct", "pois.direct", "pois"),
log = FALSE, is.log.t = FALSE)
Arguments
t |
|
family |
Archimedean family (name or object). |
theta |
parameter value. |
degree |
order |
n.MC |
Monte Carlo sample size. |
method |
different methods:
|
log |
if TRUE the logarithm of absdPsi is returned. |
is.log.t |
if TRUE the argument |
Details
The absolute value of the d
th derivative of the
Laplace-Stieltjes transform
\psi=\mathcal{LS}[F]
can be approximated via
(-1)^d\psi^{(d)}(t)=\int_0^\infty
x^d\exp(-tx)\,dF(x)\approx\frac{1}{N}\sum_{k=1}^NV_k^d\exp(-V_kt),\
t> 0,
where V_k\sim F,\ k\in\{1,\dots,N\}
.
This approximation is used where d=
degree
and
N=
n.MC
. Note that this is comparably fast even if
t
contains many evaluation points, since the random variates
V_k\sim F,\ k\in\{1,\dots,N\}
only have
to be generated once, not depending on t
.
Value
numeric
vector of the same length as t
containing
the absolute values of the generator derivatives.
References
Hofert, M., Mächler, M., and McNeil, A. J. (2013). Archimedean Copulas in High Dimensions: Estimators and Numerical Challenges Motivated by Financial Applications. Journal de la Société Française de Statistique 154(1), 25–63.
See Also
Examples
t <- c(0:100,Inf)
set.seed(1)
(ps <- absdPsiMC(t, family="Gumbel", theta=2, degree=10, n.MC=10000, log=TRUE))
## Note: The absolute value of the derivative at 0 should be Inf for
## Gumbel, however, it is always finite for the Monte Carlo approximation
set.seed(1)
ps2 <- absdPsiMC(log(t), family="Gumbel", theta=2, degree=10,
n.MC=10000, log=TRUE, is.log.t = TRUE)
stopifnot(all.equal(ps[-1], ps2[-1], tolerance=1e-14))
## Now is there an advantage of using "is.log.t" ?
sapply(eval(formals(absdPsiMC)$method), function(MM)
absdPsiMC(780, family="Gumbel", method = MM,
theta=2, degree=10, n.MC=10000, log=TRUE, is.log.t = TRUE))
## not really better, yet...