## Generation of Gamma random variables (univariate-2 parameters and multivariate)

Solved
Occasional Contributor
Posts: 13

# Generation of Gamma random variables (univariate-2 parameters and multivariate)

Could someone kindly help with the following?

1. I would like to generate gamma distributed random variables using two parameters alpha(shape) and beta(scale). The call function randgen(gamVar,'GAMMA',alpha) sets beta=1 and hence uses one parameter. How can I generate with the two parameters in stead of assuming one of the parameters = 1?

2. How can I generate correlated/multivariate Gamma random variables? This can probably be done using the Wishart function call, right? How exactly?

George

Accepted Solutions
Solution
‎07-11-2017 09:09 AM
SAS Super FREQ
Posts: 4,243

## Re: Generation of Gamma random variables (univariate-2 parameters and multivariate)

1) If X is a random variable with unit scale, beta*X is a random variable with scale parameter beta.

Therefore:

call randgen(gamVar,'GAMMA',alpha);

gamVar = beta*gamVar;

2) As it says in the doc for the Wishart distribution, there are several distributions that are known as "multivariate gamma."

http://support.sas.com/documentation/cdl/en/imlug/65547/HTML/default/viewer.htm#imlug_modlib_sect023...

The Wishart distribution is best known as the distribution for the covariance of a sample drawn from a MV normal.

If you require that the marginal distributions be univariate gamma (I do), then there are several options for multivariate gamma. For bivariate gamma, see p. 586-588 of Devroye's book, Non-Uniform Random Variate Generation

For higher dimensions, I'd probably use PROC COPULA

All Replies
Occasional Contributor
Posts: 13

## Re: Generation of Gamma random variables (univariate-2 parameters and multivariate)

I got the solution to question 1 from SAS Data Steps under the section "Random numbers". The solution is x = b*rangam(seed,a); /* gamma with shape a & scale b */. Does anyone have a clue on question 2 above?

Solution
‎07-11-2017 09:09 AM
SAS Super FREQ
Posts: 4,243

## Re: Generation of Gamma random variables (univariate-2 parameters and multivariate)

1) If X is a random variable with unit scale, beta*X is a random variable with scale parameter beta.

Therefore:

call randgen(gamVar,'GAMMA',alpha);

gamVar = beta*gamVar;

2) As it says in the doc for the Wishart distribution, there are several distributions that are known as "multivariate gamma."

http://support.sas.com/documentation/cdl/en/imlug/65547/HTML/default/viewer.htm#imlug_modlib_sect023...

The Wishart distribution is best known as the distribution for the covariance of a sample drawn from a MV normal.

If you require that the marginal distributions be univariate gamma (I do), then there are several options for multivariate gamma. For bivariate gamma, see p. 586-588 of Devroye's book, Non-Uniform Random Variate Generation

For higher dimensions, I'd probably use PROC COPULA

Occasional Contributor
Posts: 13

## Re: Generation of Gamma random variables (univariate-2 parameters and multivariate)

Thanks Rick for your reply. I am interested in the general case, bivariate or higher dimensional (indeed) with marginals being univariate gamma. Could you please illustrate with an example of how to implement this using proc copula?

🔒 This topic is solved and locked.