Stata The Stata listserver
[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]

st: RE: RE: returning value from a program


From   "Nick Cox" <[email protected]>
To   <[email protected]>
Subject   st: RE: RE: returning value from a program
Date   Tue, 20 Dec 2005 23:23:11 -0000

Joe Hilbe has used the name -cpoisson- for 
two quite different programs, for cumulative
and for censored Poisson. 

The first, published in STB-1, sounds closer to what 
you want, but it long predates
the -poisson- command, and it is not compatible
with that. Also, it -drop-s all data in memory 
without warning!!!  

My guess is that your own program needs a lot of 
changes before it will work. You are putting constants in variables 
(not illegal, but inefficient) and variables in constants
(usually fatal).  The line

 local cum = `cum' = ((exp(-poi_pred)*(poi_pred^`i'))/`fact')

even after correcting the second = to + is not
going to work the way you want it to. 

I recommend keeping much closer to what -predict- 
can supply for you. 

Nick 
[email protected] 

Patrick McElduff
 
> Hi Nick
> 
> What I am attempting to do (and there may be a much more 
> simple solution) is to calculate the exact probability of 
> observing a value of x or greater  given that I expect to 
> observe mu. The value of mu comes from a poisson regression 
> and is potentially different for each observed value.  
> 
> The code that I believe works is:
> 
> generate temp = 0
> 
> local i = 0
> local cum = 0
> generate prob = 0
> 
> while `i' <= cases	 {
> 	local j = 1
> 	local fact = 1
> 
> 	while `j' <= `i' {
> 		local fact = `fact' * `j'
> 		local j = `j' + 1
> 	}	
> 	
>       local cum = `cum' = ((exp(-poi_pred)*(poi_pred^`i'))/`fact')
> 	local i = `i' + 1
> 	replace prob = 1 - `cum' if `i' == cases & cases ~= 0
> 	replace prob = 1 if cases == 0 
> }
> 
> There is also a program called cpoisson by Joseph Hilbe  that 
> can by easily modified to work for my scenario but it doesn't 
> seem to return the answer the way I need it to.
 
 
> >>> [email protected] 21/12/2005 8:46:33 am >>>
> You can't write a program with exactly 
> this syntax. You could write an -egen- 
> function. 
> 
> If you want a new variable as output, 
> why this question? 
> 
> I could start speculating on what you might mean, 
> but better that you should tell us much more. 
> 
> Indeed, please show us your program. 
> 
> Nick 
> [email protected] 
> 
> Patrick McElduff
>  
> > I want to write a  program that has two arguements and 
> > returns a value so that I can use it in the form:
> > 
> > generate temp = program(var1 var2)
> > 
> > I have written the guts of the program to do the work but I 
> > don't know how to get the input and output in the form I want.
> > 
> > Could you please tell me where I should start looking.
> 

*
*   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/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index