Problem Statement: You have a survey data and you wish to summarize your prevalence by gender
Prerequisites:
- gender coded as 1 = male. 2 = female
- Outcome coded as : 1 = outcome, 0 = no outcome
- You are aware of setting up weights properly using svyset in stata: In my case – svyset distCode, fpc(NumDists) weight(wtDist2India2) vce(linearized) singleunit(missing) || cluster, weight(wtExam2Dist)
Stata Code
cap prog drop mfprevalences
prog define mfprevalences
args outcome
qui count if `outcome'==1 & sex==1
local countm = r(N)
qui count if `outcome'==1 & sex==2
local countf = r(N)
qui svy linearized : proportion `outcome', over(sex) cformat(%9.7f)
cap mat drop aa
mat aa = r(table)
mat aa = aa'
qui mat list aa
local numMt : di %4.2f aa[3,1]*100
local numMll : di %4.2f aa[3,5]*100
local numMul : di %4.2f aa[3,6]*100
local numFt : di %4.2f aa[4,1]*100
local numFll : di %4.2f aa[4,5]*100
local numFul : di %4.2f aa[4,6]*100
qui count if `outcome'==1
local countt = r(N)
qui svy linearized : proportion `outcome', cformat(%9.7f)
cap mat drop aa
mat aa = r(table)
mat aa = aa'
qui mat list aa
local numAllt : di %4.2f aa[2,1]*100
local numAllll : di %4.2f aa[2,5]*100
local numAllul : di %4.2f aa[2,6]*100
di "`outcome' " _column(18) `countm' _column(22) `numMt' " (`numMll', `numMul') " _column(55) `countf' _column(60) " `numFt' (`numFll', `numFul') " _column(85) `countt' _column(90) " `numAllt' (`numAllll', `numAllul')"
end
foreach x in coVi360Ul coVi360Bl coNoVi360 coVi360prev coVi360prevSurg coVi660Ul coVi660Bl coNoVi660 coVi660prev coVi660prevSurg coVi618Ul coVi618Bl coNoVi618 coVi618prev coVi618prevSurg coVi612Ul coVi612Bl coNoVi612 coVi612prev coVi612prevSurg {
mfprevalences `x'
}
Code language: Stata (stata)
Result
You will get the outcome variable name in first column, male total, male %(95% CI), female total, female % (95%CI), total number, total % (95% CI).
This can be copied and pasted in excel, use “Import Text” and use Fixed width import to format the results as table cleanly.
Potential customizations
Change the multiplier from *100 to *1000 or *10000 to get results per thousand, per ten thousand etc
Change the number of decimals