The following simulation program will be the first Stata program
presented to my director at University of Montreal.
It works, but it is slow, and it feels bizarre...
(I have to drop _all two times)
Question-1
In general, is that how a simulation should be done with Stata
(postfile, post, postclose) ?
Question-2
To generate a random number n1, I use two syntax lines:
--------------------
rndpoi 1 `lambda1'
local n1 = xp
--------------------
Is it possible to do this in only one syntax line ?
(pass directly the random number to local n1)
Question-3
It it possible not to drop _all two times ?
(use subroutine ?)
Thank you.
Benoit Dulong
----------------------------------------------------------------------
MY ALGORITHM
----------------------------------------------------------------------
[1]
generate random number n1
from a Poisson distribution with parameter lambda1
generate random number n2
from a Poisson distribution with parameter lambda2
n = n1+n1
[2]
generate random vector x (n component)
from uniform distribution (generate x=uniform())
generate random vector y (n component)
from uniform distribution (generate y=uniform())
[3]
for each (x[i],y[i]), i=1...n,
calculate the distance to the nearest neighbor
using -- nearest -- from N.J COX (NJC 1.1.0 10 January 2003)
the syntax
nearest x y, id(id) dist(h)
gives a file with n rows and 4 columns (x y id h)
[4]
from the file obtained in [3]
calculate the mean (mh) and var (vh) of the n values of h
[5]
repeat [1] to [4] 1000 times
----------------------------------------------------------------------
MY PROGRAM
----------------------------------------------------------------------
program define myprog1
version 7.0
args lambda1 lambda2
postfile mysim1 n1 n2 n mh vh using "myresults1", replace
forvalues i=1(1)1000{
drop _all
display "i= " `i'
rndpoi 1 `lambda1'
local n1 = xp
rndpoi 1 `lambda2'
local n2 = xp
local n = `n1' + `n2'
drop _all
set obs `n'
gen x = uniform()
gen y = uniform()
nearest x y, id(id) dist(h)
summarize h
local mh = r(mean)
local vh = r(Var)
post mysim1 (`n1') (`n2') (`n') (`mh') (`vh')
}
postclose mysim1
end
----------------------------------------------------------------------
Thank you.
BD.
*
* 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/