11-08-2014 01:48 PM
I want to generate a random sample from Binomial distribution (it will be included inside a loop) and another one from Poisson distribution.
How can I do this?
Thanks for your help
11-09-2014 05:09 AM
In SAS/IML there are essentially two ways. The random sample can be generated one at a time with the usual Base SAS functions.
do i = 1 to 10;
b = rand('binomial', 0.05, 20); /* p=0.05 n=20 */
p = rand('poisson', 5); /* lambda=5 */
print b p;
However the RANDGEN call is usually the best option. In general it is more efficient not to use a loop and generate the random numbers all at the same time.
b = j(10, 1);
p = j(10, 1);
call randgen(b, 'binomial', 0.05, 20);
call randgen(p, 'poisson', 5);
print b p;
11-09-2014 06:53 AM
Ian's answer is correct. I will add that if you are only going to simulate ONE sample (that is, not inside a loop), you can use the newer RANDFUN function in SAS/IML 12.3: Convenient functions vs. efficient subroutines: Your choice - The DO Loop
Since you mention the binomial and Poisson distribution together, I wonder whether you are forming a compound distribution? If so, see this article: A different way to interpret the negative binomial distribution - The DO Loop