vgamma {simEd} | R Documentation |
Variate Generation for Gamma Distribution
Description
Variate Generation for Gamma Distribution
Usage
vgamma(
n,
shape,
rate = 1,
scale = 1/rate,
stream = NULL,
antithetic = FALSE,
asList = FALSE
)
Arguments
n |
number of observations |
shape |
Shape parameter |
rate |
Alternate parameterization for scale |
scale |
Scale parameter |
stream |
if |
antithetic |
if |
asList |
if |
Details
Generates random variates from the gamma distribution.
Gamma variates are generated by inverting uniform(0,1) variates
produced either by stats::runif
(if stream
is
NULL
) or by rstream::rstream.sample
(if stream
is not NULL
).
In either case, stats::qgamma
is used to
invert the uniform(0,1) variate(s).
In this way, using vgamma
provides a monotone and synchronized
binomial variate generator, although not particularly fast.
The stream indicated must be an integer between 1 and 25 inclusive.
The gamma distribution with parameters \code{shape} = \eqn{a} and \code{scale} = \eqn{s} has density \deqn{f(x) = \frac{1}{s^a\, \Gamma(a)} x^{a-1} e^{-x/s}}{ f(x) = 1/(s^a Gamma(a)) x^(a-1) e^(-x/s)} for \eqn{x \ge 0}, \eqn{a > 0}, and \eqn{s > 0}. (Here \eqn{\Gamma(a)}{Gamma(a)} is the function implemented by R's \code{\link[base:Special]{gamma}()} and defined in its help.) The population mean and variance are \eqn{E(X) = as} and \eqn{Var(X) = as^2}.
Value
If asList
is FALSE (default), return a vector of random variates.
Otherwise, return a list with components suitable for visualizing inversion, specifically:
u |
A vector of generated U(0,1) variates |
x |
A vector of gamma random variates |
quantile |
Parameterized quantile function |
text |
Parameterized title of distribution |
Author(s)
Barry Lawson (blawson@bates.edu),
Larry Leemis (leemis@math.wm.edu),
Vadim Kudlay (vkudlay@nvidia.com)
See Also
rstream
, set.seed
,
stats::runif
Examples
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qgamma
vgamma(3, shape = 2, rate = 1)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qgamma
vgamma(3, 2, scale = 1, stream = 1)
vgamma(3, 2, scale = 1, stream = 2)
set.seed(8675309)
# NOTE: following inverts rstream::rstream.sample using stats::qgamma
vgamma(1, 2, scale = 1, stream = 1)
vgamma(1, 2, scale = 1, stream = 2)
vgamma(1, 2, scale = 1, stream = 1)
vgamma(1, 2, scale = 1, stream = 2)
vgamma(1, 2, scale = 1, stream = 1)
vgamma(1, 2, scale = 1, stream = 2)
set.seed(8675309)
variates <- vgamma(100, 2, scale = 1, stream = 1)
set.seed(8675309)
variates <- vgamma(100, 2, scale = 1, stream = 1, antithetic = TRUE)