# Re: st: Identifying single psu within strata

 From "R.E. De Hoyos" To 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

To: <statalist@hsphsun2.harvard.edu>
Sent: Friday, April 29, 2005 8:45 PM
Subject: Re: st: Identifying single psu within strata

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

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

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