Learn R Programming

simEd (version 1.0.3)

vgamma: Variate Generator for the Gamma Distribution

Description

Generates random variates from the gamma distribution, with options for independent streams and antithetic variates.

Usage

vgamma(n, shape, rate = 1, scale = 1/rate, stream = NULL, antithetic = FALSE)

Arguments

n

number of observations

shape, scale

shape and scale parameters (must be positive)

rate

an alternative way to specify the scale

stream

if NULL (default), uses stats::runif to generate uniform variates to invert via stats::qgamma; otherwise, an integer in 1:25 indicates the rstream stream from which to generate uniform variates to invert via stats::qgamma

antithetic

if FALSE (default), inverts \(u\) = uniform(0,1) variate(s) generated via either stats::runif or rstream::rstream.sample; otherwise, uses \(1 - u\)

Value

A vector of gamma random variates.

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 gamma variate generator, although not particularly fast.

The stream indicated must be an integer between 1 and 25 inclusive.

If scale is omitted, it assumes the default value of 1.

The gamma distribution with parameters shape = \(a\) and scale = \(s\) has density

$$f(x) = \frac{1}{s^a\, \Gamma(a)} x^{a-1} e^{-x/s}$$

for \(x \ge 0\), \(a > 0\), and \(s > 0\). (Here \(\Gamma(a)\) is the function implemented by R's gamma() and defined in its help.)

The mean and variance are \(E(X) = as\) and \(Var(X) = as^2\).

See Also

stats::rgamma, stats::runif, rstream, set.seed

Examples

Run this code
# NOT RUN {
set.seed(8675309)
vgamma(3, shape = 2, scale = 1)  # inverts stats::runif using stats::qgamma

set.seed(8675309)
vgamma(3, shape = 2, scale = 1, stream = 1)  # inverts rstream::rstream.sample using stats::qgamma
vgamma(3, shape = 2, scale = 1, stream = 2)

set.seed(8675309)
vgamma(1, shape = 2, scale = 1, stream = 1)  # inverts rstream::rstream.sample using stats::qgamma
vgamma(1, shape = 2, scale = 1, stream = 2)
vgamma(1, shape = 2, scale = 1, stream = 1)
vgamma(1, shape = 2, scale = 1, stream = 2)
vgamma(1, shape = 2, scale = 1, stream = 1)
vgamma(1, shape = 2, scale = 1, stream = 2)

set.seed(8675309)
variates <- vgamma(1000, shape = 2, scale = 1, stream = 1)
set.seed(8675309)
variates <- vgamma(1000, shape = 2, scale = 1, stream = 1, antithetic = TRUE)
# }

Run the code above in your browser using DataLab