[Date Prev][Date Next][Thread Prev][Thread Next][Date index][Thread index]
Re: st: one-way tables with survey data
Please check help before posting: -whelp svytab- shows that svytab does
allow a row option to have it display row percentages instead of cell
percentages. Unlike tabulate, svytab does not allow you to abbreviate row
with just r.
Also, your solution of using -if- will give incorrect standard errors with
svy data, you would need to use subpop() instead so that the full sample
design is taken into account for a subpopulation.
You may also want to check out -svytabs- which I wrote a while ago that
creates more complicated svy cross tabs allowing tabulation of multiple
variables against a common variable, multiple subpops, starred significance
levels and many other additions that may be of interest to you. It produces
comma delimited files of results. Type -findit svytabs- and you will be led
----- Original Message -----
From: "Steven A. Harvey" <email@example.com>
Cc: "Saifuddin Ahmed" <SAHMED@jhsph.edu>
Sent: Tuesday, June 14, 2005 5:38 PM
Subject: Re: st: one-way tables with survey data
Nick Winter's answer works very well for unstratified variables (Thank
you, Nick). This solves part of my problem, but not all of it. For many
variables, I need to stratify by respondent characteristics. For example,
if I want to stratify by age in a non-survey dataset, I could type:
tab agegrp myvar , r
and Stata would return percentages that add up to 100% for each row, with
each row corresponding to a different age group.
but svytab doesn't allow the , r option, and when I type
svytab agegrp myvar
Stata returns a table of proportions in which the rows and columns
combined add up to 1. I can't figure out a way to get row totals.
svytab also does not allow "by" statements, so I can't say "bysort agegrp:
svytab myvar one" (where "one" is the constant variable mentioned in
The only workaround I've been able to discover so far is to use an "if"
statement for each stratum:
svytab myvar one if agegrp==1
svytab myvar one if agegrp==2
svytab myvar one if agegrp==3
Very cumbersome and time-consuming, especially for characteristics with
many strata (e.g., 17 provinces in the country)
This syntax also prevents me from using the syntax "for varlist varA varB
varC etc: svytab X myvar"
Surely there must be a more efficient way to produce such basic
* For searches and help try: