Survey data

Start with the expanded example for each command. Open the variants for options and alternative R approaches. Read the qualifications before adapting the code.

svy

Survey-weighted logit

Stata

svy: logit y x

R Package:survey

survey::svyglm(y ~ x, design = design, family = quasibinomial())

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

Survey-weighted mean

Stata

svy: mean x

R Package:srvyr

summarise(design, x = srvyr::survey_mean(x, na.rm = TRUE))

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

Survey-weighted regression

Stata

svy: regress y x

R Package:survey

survey::svyglm(y ~ x, design = design)

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

Survey-weighted proportions

Stata

svy: tabulate x

R Package:srvyr

design |> group_by(x) |> summarise(p = srvyr::survey_prop())

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

3 more examples and alternatives

Subpopulation estimate

Stata

svy, subpop(rural): mean x

R Package:srvyr

design |> filter(rural == 1) |> summarise(x = srvyr::survey_mean(x, na.rm = TRUE))

Differs from Stata Filtering a survey design keeps the full design for the variance, as subpop() does. Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

Survey-weighted means by group

Stata

svy: mean x, over(g)

R Package:srvyr

design |> group_by(g) |> summarise(x = srvyr::survey_mean(x, na.rm = TRUE))

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

Survey-weighted proportions with intervals

Stata

svy: proportion x

R Package:srvyr

design |> group_by(x) |> summarise(p = srvyr::survey_prop(vartype = "ci"))

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.

svydescribe

Describe the survey design

Stata

svydescribe

R Package:base

summary(design)

svyset

Declare a survey design

Stata

svyset psu [pweight = wt], strata(stratum)

R Package:srvyr

design <- srvyr::as_survey_design(data, ids = psu, strata = stratum, weights = wt)

Differs from Stata Match design and missing-data exclusions first; singleton-PSU policy, degrees of freedom and confidence-interval transformations can differ between R and Stata.