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).
Assuming you start with counts instead of probabilities, I would suggest you
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 ?
I have not found anything yet.
Thanks in advance!
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/