The Multivariate Gamma Distribution

Share:

Description

Density and random generation functions for the multivariate gamma distribution constructed using a normal (Gaussian) copula.

Usage

1
2
dmvgamma(x, shape, rate, corr=diag(ncol(x)), log=FALSE)
rmvgamma(n, shape=1, rate=1, corr=diag(length(shape)))

Arguments

x

a numeric matrix of which each row represents an observation.

shape

a vector of shape parameters for the marginal distributions of the columns of x. If length(shape) < ncol(x), the elements of shape will be recycled. If length(shape) > ncol(x), the shape vector will be truncated and a warning given.

rate

a vector of rate parameters for the marginal distributions of the columns of x. If length(rate) < ncol(x), the elements of rate will be recycled. If length(rate) > ncol(x), the rate vector will be truncated and a warning given.

corr

the correlation matrix. See Details.

log

logical; if TRUE, density is given as the log-density.

n

number of vectors to simulate.

Details

The construction of multivariate distributions from univariate marginal distributions using normal copulas is discussed in Song (2000). Briefly, given univariate marginal densities and the corresponding distribution functions (here, the gamma distribution), the standard normal quantiles of the values of the distribution functions follow a multivariate standard normal distribution, that is, a multivariate normal distribution with marginal means of 0 and marginal variances of 1. Thus the covariance matrix is referred to as the correlation matrix in this context.

Value

For dmvgamma, a vector of densities. For rmvgamma, a vector with n rows and ncol(corr) columns representing a sample from the multivariate gamma distribution with the specified parameters.

Author(s)

Daniel Dvorkin

References

Song, P. (2000) Multivariate dispersion models generated from Gaussian copula. Scandinavian Journal of Statistics 27, 305–320.

See Also

mvnorm, mvweisd for related distributions; thetahat for parameter estimation.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
set.seed(123)

s <- 1:2
r <- 2:3
rho <- matrix(c(1, 0.5, 0.5, 1), ncol=2)

x <- rmvgamma(5, s, r, rho)
print(x)
#           [,1]      [,2]
# [1,] 0.1600585 0.4178748
# [2,] 1.3762076 0.7846068
# [3,] 0.6280634 1.6192241
# [4,] 0.3958020 0.2131819
# [5,] 0.1229824 0.3399217

dmvgamma(x, s, r, rho)
# [1] 1.92014830 0.10438760 0.08317813 0.79129064 2.32215333

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.