srvyr brings parts of dplyrâs syntax to survey analysis, using the survey package.
srvyr focuses on calculating summary statistics from survey data, such as the mean, total or quantile. It allows for the use of many dplyr verbs, such as summarize
, group_by
, and mutate
, the convenience of pipe-able functions, rlangâs style of non-standard evaluation and more consistent return types than the survey package.
You can try it out:
install.packages("srvyr")
# or for development version
# remotes::install_github("gergness/srvyr")
Example usage
First, describe the variables that define the surveyâs structure with the function as_survey()
with the bare column names of the names that you would use in functions from the survey package like survey::svydesign()
, survey::svrepdesign()
or survey::twophase()
.
library(srvyr, warn.conflicts = FALSE)
data(api, package = "survey")
dstrata <- apistrat %>%
as_survey_design(strata = stype, weights = pw)
Now many of the dplyr verbs are available.
mutate()
adds or modifies a variable.dstrata <- dstrata %>%
mutate(api_diff = api00 - api99)
summarise()
calculates summary statistics such as mean, total, quantile or ratio.dstrata %>%
summarise(api_diff = survey_mean(api_diff, vartype = "ci"))
#> # A tibble: 1 Ã 3
#> api_diff api_diff_low api_diff_upp
#> <dbl> <dbl> <dbl>
#> 1 32.9 28.8 37.0
group_by()
and then summarise()
creates summaries by groups.dstrata %>%
group_by(stype) %>%
summarise(api_diff = survey_mean(api_diff, vartype = "ci"))
#> # A tibble: 3 Ã 4
#> stype api_diff api_diff_low api_diff_upp
#> <fct> <dbl> <dbl> <dbl>
#> 1 E 38.6 33.1 44.0
#> 2 H 8.46 1.74 15.2
#> 3 M 26.4 20.4 32.4
my_model <- survey::svyglm(api99 ~ stype, dstrata)
summary(my_model)
#>
#> Call:
#> svyglm(formula = api99 ~ stype, design = dstrata)
#>
#> Survey design:
#> Called via srvyr
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 635.87 13.34 47.669 <2e-16 ***
#> stypeH -18.51 20.68 -0.895 0.372
#> stypeM -25.67 21.42 -1.198 0.232
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> (Dispersion parameter for gaussian family taken to be 16409.56)
#>
#> Number of Fisher Scoring iterations: 2
Learning more
Here are some free resources put together by the community about srvyr:
dplyr::across
and rlang
âs âcurly curlyâ {{}}
)
Still need help?
I think the best way to get help is to form a specific question and ask it in some place like positâs community website (known for itâs friendly community) or stackoverflow.com (maybe not known for being quite as friendly, but probably has more people). If you think youâve found a bug in srvyrâs code, please file an issue on GitHub, but note that Iâm not a great resource for helping specific issue, both because I have limited capacity but also because I do not consider myself an expert in the statistical methods behind survey analysis.
Have something to add?
These resources were mostly found via vanity searches on twitter & github. If you know of anything I missed, or have written something yourself, please let me know in this GitHub issue!
What people are saying about srvyrminimal changes to my #r #dplyr script to incorporate survey weights, thanks to the amazing #srvyr and #survey packages. Thanks to @gregfreedman & @tslumley. Integrates soooo nicely into tidyverse
âBrian Guay (@BrianMGuay on Jun 16, 2021)
Spending my afternoon using
srvyr
for tidy analysis of weighted survey data in #rstats and itâs so elegant. Vignette here: https://CRAN.R-project.org/package=srvyr/vignettes/srvyr-vs-survey.htmlâChris Skovron (@cskovron on Nov 20, 2018)
Contributing
- Yay!
âThomas Lumley, in the Biased and Inefficient blog
I do appreciate bug reports, suggestions and pull requests! I started this as a way to learn about R package development, and am still learning, so youâll have to bear with me. Please review the Contributor Code of Conduct, as all participants are required to abide by its terms.
If youâre unfamiliar with contributing to an R package, I recommend the guides provided by Rstudioâs tidyverse team, such as Jim Hesterâs blog post or Hadley Wickhamâs R packages book.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4