Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: Creating a second output data set


From   Bryan Sayer <bsayer@chrr.osu.edu>
To   statalist@hsphsun2.harvard.edu
Subject   Re: st: Creating a second output data set
Date   Fri, 09 Sep 2011 15:49:34 -0400

So I am still a bit confused about how -postfile- works when I want to preserve the data in memory. Specifically, how I generate the variables that I want in my -postfile- output versus the new one I do want to add to the data set in memory.

I'm thinking I want to use a local (maybe macro?) variable for my results that go to -postfile-? In other words, how do I distinguish variables between the two files.

Also, how do I accumulate results for my new variable that goes in my memory data set. I need to accumulate a sum for two observations in memory on each post to -postfile-.

Here is what I have so far, but with the last part calculating the marginal probability (note that the joint probability calculation should be on one line):

program jointprob
args design infile outfile psu count margprob
tempvar psu1 psu2 pi_one pi_joint
tempfile results
	/* set up the file with the joint probabilities */
	postfile `results' `psu1' `psu2' using "`outfile'" ,replace
	/* get the number of observations and the total count */
	local N=_N
	local N_total
	egen double `N_total'=total(`count')

quietly {
	/* read the input data set and create combinations of N items
	   taken 2 at a time, without replacement */
	forvalues J = 1/`N'{
		forvalues K = 1/`N'{
			if `K'>`J'{
				psu1=`psu'[`J']
				psu2=`psu'[`K']
pi_joint=(`count[`J']'*`count[`K']'/`N_total') * ((1/(`N_total'-`count[`J']')+(1/(`N_total'-`count[`K']'))
				post `results' psu1 psu2 pi_joint
				}
		}
	}
}


Bryan Sayer
Monday to Friday, 8:30 to 5:00
Phone: (614) 442-7369
FAX:  (614) 442-7329
BSayer@chrr.osu.edu


On 9/7/2011 9:44 AM, Roger Newson wrote:
-postfile- will still work if there is an existing dataset in the
memory. However, the new dataset will be built in a file.

Best wishes

Roger


Roger B Newson BSc MSc DPhil
Lecturer in Medical Statistics
Respiratory Epidemiology and Public Health Group
National Heart and Lung Institute
Imperial College London
Royal Brompton Campus
Room 33, Emmanuel Kaye Building
1B Manresa Road
London SW3 6LR
UNITED KINGDOM
Tel: +44 (0)20 7352 8121 ext 3381
Fax: +44 (0)20 7351 8322
Email: r.newson@imperial.ac.uk
Web page: http://www.imperial.ac.uk/nhli/r.newson/
Departmental Web page:
http://www1.imperial.ac.uk/medicine/about/divisions/nhli/respiration/popgenetics/reph/


Opinions expressed are those of the author, not of the institution.

On 07/09/2011 14:40, Bryan Sayer wrote:
-postfile- will post my results, but my reading of how it works seems to
indicate that my original data set cannot be open at the same time. The
examples appear to me to clear the existing data set from memory.

Admittedly, this is without me having tried anything yet, but am I not
reading it correctly?

What I need to do is a double loop through the input data set,
outputting a record on each iteration of each loop. So I need the input
data set open in memory, and a second file to post the results to.

Are there any examples of something similar?

Thanks!

Bryan Sayer
Monday to Friday, 8:30 to 5:00
Phone: (614) 442-7369
FAX: (614) 442-7329
BSayer@chrr.osu.edu


On 9/6/2011 4:58 PM, Roger Newson wrote:
I think you are looking for the -postfile- utility. In Stata, type

help postfile

to find out more.

HTH.

Best wishes

Roger


Roger B Newson BSc MSc DPhil
Lecturer in Medical Statistics
Respiratory Epidemiology and Public Health Group
National Heart and Lung Institute
Imperial College London
Royal Brompton Campus
Room 33, Emmanuel Kaye Building
1B Manresa Road
London SW3 6LR
UNITED KINGDOM
Tel: +44 (0)20 7352 8121 ext 3381
Fax: +44 (0)20 7351 8322
Email: r.newson@imperial.ac.uk
Web page: http://www.imperial.ac.uk/nhli/r.newson/
Departmental Web page:
http://www1.imperial.ac.uk/medicine/about/divisions/nhli/respiration/popgenetics/reph/




Opinions expressed are those of the author, not of the institution.

On 06/09/2011 21:53, Bryan Sayer wrote:
I need to create an output data set that will differ in the content and
number of observations from the input file. The observations will be
created one at a time, based on the input data set.

Specifically, I am creating all combinations of N objects taken two
at a
time. I will probably also do permutations.

The input data set (to start with) consists of N records with two
variables, the primary sampling unit (PSU) and a size variable
associated with the PSU (a count variable). I want to create two output
data sets. One is each combination of PSU with the associated joint
probability. The second has the same structure as the input data set
but
includes the marginal probability, calculated as the sum of the joint
probabilities associated with the PSU (which are accumulated as each
combination is created).

The part I am stuck on is how to output the data set of combinations.
Can someone point me to a program that outputs a file as calculations
are made?

(For those interested, this is for probability proportional to size
(PPS) sampling. See, for example, Levy and Lemeshow "Sampling of
Populations, chapter 11).

Here is an example of one stratum:

Input data set (with marginal probability added)

District Size pi(i)
LUWEERO 12,466 0.916858
KAMPALA 3,459 0.542857
TORORO 2,815 0.448739
KAMULI 549 0.091546
Total 19,289


Output data set:

COMBINATIONS pi(I,j)
LUWEERO,KAMPALA 0.468854
LUWEERO,TORORO 0.377069
LUWEERO,KAMULI 0.070934
KAMPALA,TORORO 0.062531
KAMPALA,KAMULI 0.011473
TORORO,KAMULI 0.009139




*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/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/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/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/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index