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

Re: st: Identifying single psu within strata


From   "R.E. De Hoyos" <redeho@hotmail.com>
To   <statalist@hsphsun2.harvard.edu>
Subject   Re: st: Identifying single psu within strata
Date   Fri, 29 Apr 2005 21:09:08 +0100

Many thanks to Nichols and Jeff.

I run the -singleton- code and it is working perfectly.

Best,
Rafa


----- Original Message ----- From: "Jeff Pitblado, StataCorp LP" <jpitblado@stata.com>
To: <statalist@hsphsun2.harvard.edu>
Sent: Friday, April 29, 2005 8:45 PM
Subject: Re: st: Identifying single psu within strata



R.E. De Hoyos <redeho@hotmail.com> asks about generating an indicator variable
that identifies strata with a single PSU:


I want to run wage regressions for several population groups. Estimations
have to take care of the survey design (svy). The problem is that for some
of the groups there are strata with a single psu (primary samplying unit).
Using -svydes- I can identify does strata, for example:

For wage equation: svyreg wage_1 varlist_1:

svydes wage_1 varlist_1

And Stata will highlight those strata with a single psu. How can I create a
dummy variable that indicates weather a strata has a single psu given the
variables that I want to use for the analysis?
In other words I want a dummy variable that takes the value of 1 if -svydes-
highlights a strata.
This feature was added to -svydes- in Stata 9. -svydes- now has a
-generate()- option that generates this variable.

In Stata 8, there is no such option; however, the output of -svydes- should
identify the "singleton" strata using the values from the strata variable that
was -svyset-. You can use the output from -svydes- to generate a new
variable.

If you need to do this for a bunch of different groups, you will need to write
a program. You can start with the following:

***** BEGIN: singleton.ado
program singleton, sort
version 8
syntax [varlist(numeric default=none)] [if] [in], ///
STRata(varname) gen(name) [ PSU(varname) ]
confirm new var `gen'
marksample touse
if "`psu'" == "" {
tempvar psu
gen `psu' = _n
}
tempvar u
sort `touse' `strata' `psu'
quietly by `touse' `strata' `psu': gen `u' = _n == 1
quietly by `touse' `strata': replace `u' = sum(`u')
quietly by `touse' `strata': replace `u' = cond(`u'[_N] == 1, 1, 0)

quietly replace `u' = . if !`touse'
rename `u' `gen'
end
***** END: singleton.ado

Here is a log using the above -singleton- program with the auto data:

***** BEGIN:
. clear

. sysuse auto
(1978 Automobile Data)

. * Example with no singleton strata
. singleton, strata(rep) gen(jj)

. tab rep if jj
no observations

. * Example with 2 singleton strata
. singleton, strata(rep) psu(for) gen(kk)

. tab rep if kk

Repair |
Record 1978 | Freq. Percent Cum.
------------+-----------------------------------
1 | 2 20.00 20.00
2 | 8 80.00 100.00
------------+-----------------------------------
Total | 10 100.00

. * Proof that 2 categories of -rep78- have only "Domestic" cars
. tab rep for

Repair |
Record | Car type
1978 | Domestic Foreign | Total
-----------+----------------------+----------
1 | 2 0 | 2
2 | 8 0 | 8
3 | 27 3 | 30
4 | 9 9 | 18
5 | 2 9 | 11
-----------+----------------------+----------
Total | 48 21 | 69
***** END:

--Jeff
jpitblado@stata.com
*
* 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/

*
*   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–2014 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index