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?
Thanks for your help in advance,
George
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."
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
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?
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."
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
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?
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.
Find more tutorials on the SAS Users YouTube channel.