I noticed the the discussion regarding exact poisson probabilities on the
list. I get the digest only, so have had to respond later.
I did indeed make a mistake with naming two programs by the same name. The
current -cpoisson is a censored poisson written using version 9.1 code. It is
found on the SSC site. I had forgotten that I wrote another back in 1991. The
-cpoisson- I wrote for STB-1 in May 1991 calculated cumulative poisson
probabilities. However, there is another program that was published together with
it that calculates exact poisson probabilities, called -epoisson.ado-. Is
this more of what you want? One simply provides the population ratio (mu), the
number of observations, and the number of cases. The exact poisson probability
is thereupon displayed. An example is provided in the help file, which can be
downloaded from the web.
I have pasted the file code into this email below. Note that it uses version
2.1 code and creates new variables, and at the end erases all variables in
memory. Like the old -cpoisson- program, it was meant to be used without
anything else in memory. As I recall, Stata had not yet developed the temp
variable class. It didn't come out until version 3. And there may have been problems
using the program if data was already in memory. Instead of the -drop _all -
code, you can replace it with dropping just those variables that were
created by the program. Of course, it is preferable to just rewrite it with
tempvars and in current code. This would eliminate any such problems.
Isn't there another function in Stata that calculates exact and cumulative
poisson probabilities? These were the first two programs written for the STB
some 16 years ago. I haven't checked, but it seems that Stata should have a
function for it that can be used in your program.
Joe Hilbe
/* DATE 4\24\91 */
/* EXACT POISSON PROBABILITY
Joseph Hilbe - STB */
program define epoisson
version 2.1
if "%_3"=="" {
di in re "Type 3 arguments:"
di in re " pop ratio observations cases"
exit 198
}
drop _all
quietly {
set obs %_3
if (%_3<1) {
set obs 1
gen double expect=%_1*%_2
di in gr "Exact poisson probability => " in ye exp(-expect)
}
if (%_3>0) {
gen double expect=%_1*%_2
gen double prob=exp(-expect)
gen double cum=1
gen num=[_n-1]+1
while num-1<_N {
replace cum=cum*num
replace num=num+1
}
replace prob=(expect^%_3)*(exp(-expect))/cum
di in gr "Exact poisson probability => " in ye prob
}
}
drop _all
end
*
* 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/