Generalized Hyperbolic Distribution {ghyp} | R Documentation |
Density, distribution function, quantile function, expected shortfall and random generation for the univariate and multivariate generalized hyperbolic distribution and its special cases.
dghyp(x, object = ghyp(), logvalue = F) pghyp(q, object = ghyp(), n.sim = 10000, subdivisions = 200, rel.tol = .Machine$double.eps^0.5, abs.tol = rel.tol) qghyp(p, object = ghyp(), method = c("integration", "splines"), spline.points = 200, subdivisions = 200, root.tol = .Machine$double.eps^0.5, rel.tol = root.tol^1.5, abs.tol = rel.tol) rghyp(n, object = ghyp()) ESghyp(p, object = ghyp(), ...)
p |
A vector of probabilities. |
x |
A vector, matrix or data.frame of quantiles. |
q |
A vector, matrix or data.frame of quantiles. |
n |
Number of observations. |
object |
An object inheriting from class ghypbase . |
logvalue |
If TRUE the logarithm of the density will be returned. |
n.sim |
The number of simulations when computing pghyp of a multivariate
generalized hyperbolic distribution. |
subdivisions |
The number of subdivisions passed to integrate when
computing the distribution function pghyp of a
univariate generalized hyperbolic distribution. |
rel.tol |
The relative accuracy requested from integrate . |
abs.tol |
The absolute accuracy requested from integrate . |
method |
The method how quantiles are computed. |
spline.points |
The number of support points when computing the quantiles using
splines instead of integration. |
root.tol |
The tolerance of uniroot . |
... |
Arguments passed from ESghyp to qghyp . |
qghyp
and ESghyp
only work for univariate generalized hyperbolic
distributions.
pghyp
is a crude implementation of the distribution function for
multivariate generalized hyperbolic distributions by means of monte carlo calculation.
qghyp
computes the quantiles either by using the “integration” method where the root of
the distribution function is solved or via “splines” which interpolates the distribution
function and solves it with uniroot
afterwards. The “integration”
method is recommended when few quantiles are required. If more than approximately
20 quantiles are needed to be calculated the “splines” method becomes faster.
The accuracy can be controlled with an adequate setting of the
parameters rel.tol
, abs.tol
, root.tol
and spline.points
.
rghyp
uses the random generator for generalized inverse gaussian distributed
random variates from the S-Plus library QRMlib
(see http://www.math.ethz.ch/~mcneil/book/QRMlib.html).
dghyp
gives the density,
pghyp
gives the distribution function,
qghyp
gives the quantile function,
ESghyp
gives the expected shortfall and
rghyp
generates random deviates.
Objects generated with hyp
, NIG
, VG
and student.t
have
to use Xghyp
as well. E.g. dNIG(NIG())
does not work.
When the skewness becomes very large the functions using qghyp
may fail.
The functions using qghyp
are ESghyp
, qqghyp
, pairs
and portfolio.optimize
.
David Lüthi
Alexander J. McNeil, Rüdiger Frey, Paul Embrechts (2005) Quantitative
Risk Management, Concepts, Techniques and Tools
ghypuv-class
, ghypmv-class
,
fit.ghypuv
, fit.ghypmv
, integrate
,
uniroot
.
## Univariate generalized hyperbolic distribution univariate.ghyp <- ghyp() par(mfrow=c(5,1)) quantiles <- seq(-4,4,length=500) plot(quantiles,dghyp(quantiles,univariate.ghyp)) plot(quantiles,pghyp(quantiles,univariate.ghyp)) probabilities <- seq(1e-4,1-1e-4,length=500) plot(probabilities,qghyp(probabilities,univariate.ghyp,method="splines")) plot(probabilities,ESghyp(probabilities,univariate.ghyp,method="splines")) hist(rghyp(n=10000,univariate.ghyp),nclass=100) ## Mutivariate generalized hyperbolic distribution multivariate.ghyp <- ghyp(sigma=var(matrix(rnorm(10),ncol=2)),mu=1:2,gamma=-(2:1)) par(mfrow=c(2,1)) quantiles <- outer(seq(-4,4,length=50),c(1,1)) plot(quantiles[,1],dghyp(quantiles,multivariate.ghyp)) plot(quantiles[,1],pghyp(quantiles,multivariate.ghyp,n.sim=1000)) rghyp(n=10,multivariate.ghyp)