Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.

# st: RE: simulation: finding the winner, and generating unique values

 From Kieran McCaul To "statalist@hsphsun2.harvard.edu" Subject st: RE: simulation: finding the winner, and generating unique values Date Sat, 25 May 2013 11:40:30 +0800

```...

I'm not quite sure what the intent of the simulation is.

1. How can I simulate B so that only unique values of 1-5 are created?

I don't understand what you mean here, particularly given that the code you use is under a comment "* simulate variable: B (values 1-5 sampled without replacement) ".

There are 20 observations, 5 per level of "a".  The only way that "b" can be assigned the values 1 to 5 without replacement is by assigning them within "a".

I don't think this is what you are trying to do, but if it is, the following will do that:

clear
set seed 12358
* simulate A
set obs 20

gen byte a = mod(_n,4) + 1

sort a
by a:gen byte b=_n

gen byte c = uniform()>=0.5

-----Original Message-----
From: owner-statalist@hsphsun2.harvard.edu [mailto:owner-statalist@hsphsun2.harvard.edu] On Behalf Of Michael McCulloch
Sent: Saturday, 25 May 2013 3:31 AM
To: statalist@hsphsun2.harvard.edu
Subject: st: simulation: finding the winner, and generating unique values

Greetings!

* I have three questions related to the following data simulation.
* 1. How can I simulate B so that only unique values of 1-5 are created?
* 2. Is there a more elegant way to code simulation of variable B?
* 3. How can I identify which variable B had the highest total count of C, within levels of A?

clear
set seed 12358
* simulate A
set obs 20		//create 20 observations
gen 	a=1 in 1/5
replace a=2 in 6/10
replace a=3 in 11/15
replace a=4 in 16/20

* simulate variable: B (values 1-5 sampled without replacement) gen b=.
replace b=(1 + int(5*runiform())) if a==1
replace b=(1 + int(5*runiform())) if a==2
replace b=(1 + int(5*runiform())) if a==3
replace b=(1 + int(5*runiform())) if a==4

* simulate variable: C
gen c1=uniform()	//Generate n (equal chance of 0-1)
gen c=.
replace c=0 if c1<0.5
replace c=1 if c1>=0.5
drop c1
list, noobs

Best wishes,
Michael McCulloch, LAc MPH PhD

--
Pine Street Foundation, since 1989
124 Pine Street | San Anselmo | California | 94960-2674
P: (415) 407-1357 | F: (206) 338-2391 | http://www.PineStreetFoundation.org

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
```