# st: R: How to sample from a Multinomial distribution

 From "Carlo Lazzaro" <[email protected]> To <[email protected]> Subject st: R: How to sample from a Multinomial distribution Date Thu, 28 Feb 2008 09:09:31 +0100

Dear Tiago,

Provided that I have understood your question well, I suppose you have to
draw random samples from a so called Dirichlet distribution (please, see
Briggs A, Schulper M, Claxton K. Decision Modelling for Health Economic
Evaluation. Oxford: Oxford University Press, 2006: 116-118).

to fit three independent gamma distributions (where parameter alfa is the
mean^2/SE^2 and parameter beta is SE^2/mean of your original dataset)and use
the inverse gamma for random sampling and eventually obtain the
probabilities you are seeking.

Translating into Stata, it would be like this (please, see the example
below).
------------------------------begin example-------------------------- cap
program drop simgamma

program simgamma, rclass

args a1 b1 a2 b2 a3 b3

tempname beta1 beta2 beta3

scalar `beta1' = `b1'*invgammap(`a1',uniform())

scalar `beta2' = `b2'*invgammap(`a2',uniform())

scalar `beta3' = `b3'*invgammap(`a3',uniform())

return scalar beta1 = `beta1'

return scalar beta2 = `beta2'

return scalar beta3 = `beta3'

end

clear

set obs 10000

g a1=1

g b1=1251

g a2=1

g b2=350

g a3=1

g b3=116

simulate beta1=r(beta1) beta2=r(beta2) beta3=r(beta3), reps(10000) nodots:
simgamma a1 b1 a2 b2 a3 b3

egen first_tot=  rowtotal ( beta1 beta2 beta3)

g pG1= beta1/ first_tot

g pG2= beta2/ first_tot

g pG3= beta3/ first_tot
----------------end example-------------------------------------------------

Please consider that values for a(lfa) and b(eta) in my example should be
changed according to your original data.

HTH and Kind Regards,

Carlo
-----Messaggio originale-----
Da: [email protected]
[mailto:[email protected]] Per conto di
[email protected]
Inviato: mercoled� 27 febbraio 2008 19.42
A: [email protected]
Oggetto: st: How to sample from a Multinomial distribution

Dear Statalisters,

I have to generate data for a sample, which has three groups (G1, G2 and
G3). In this respect,  the probability distribution for the G1, G2 and G3
follows a multinomial distribution with parameter vector P = (pG1 ,pG2
,pG3 ).

I have used -genbinomial- to generate the first two groups, and then the
last one is calculate by subtraction. Since this is not an elegant way to do
that, is the any routine that does in Stata the task above mentioned ?

Tiago

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/support/faqs/res/findit.html
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/