From 018e5a58bb6fc8fa1ddf93fd7f9275b272aa83a2 Mon Sep 17 00:00:00 2001 From: avallecam Date: Thu, 22 Oct 2020 13:29:50 -0500 Subject: [PATCH] clean readme + pass content to intro article --- README.Rmd | 332 +--------------- README.md | 438 ++-------------------- man/figures/README-unnamed-chunk-10-1.png | Bin 7405 -> 7554 bytes man/figures/README-unnamed-chunk-13-1.png | Bin 8195 -> 8500 bytes man/figures/README-unnamed-chunk-14-1.png | Bin 8154 -> 8327 bytes man/figures/README-unnamed-chunk-9-1.png | Bin 0 -> 7516 bytes vignettes/intro.Rmd | 224 ++++++++++- 7 files changed, 266 insertions(+), 728 deletions(-) create mode 100644 man/figures/README-unnamed-chunk-9-1.png diff --git a/README.Rmd b/README.Rmd index 19c35af..e348916 100644 --- a/README.Rmd +++ b/README.Rmd @@ -45,311 +45,37 @@ The goal of `serosurvey` is to gather __Serological Survey Analysis__ functions +You can install the developmental version of `serosurvey` from +[GitHub](https://github.com/avallecam/serosurvey) with: + ``` r if(!require("remotes")) install.packages("remotes") remotes::install_github("avallecam/serosurvey") ``` -## Example - -Three basic examples which shows you how to solve common problems: - -```{r example} -library(serosurvey) -``` - -```{r,echo=FALSE} -# additional -library(tidyverse) -library(srvyr) -library(survey) -library(tictoc) -library(furrr) -library(purrr) -# theme -theme_set(theme_bw()) -``` - -```{r,echo=FALSE} -data(api) - -datasurvey <- apiclus2 %>% - mutate(survey_all="survey_all") %>% - # create variables - mutate(outcome_one = awards, - outcome_two = cut(pct.resp,breaks = 2), - covariate_01 = stype, - covariate_02 = both) -``` - -```{r,echo=FALSE} -# tratamiento de stratos con un solo conglomerado -options(survey.lonely.psu = "certainty") - -# uu_clean_data %>% count(CONGLOMERADO,VIVIENDA) - -# diseño muestral de la encuesta --------------------------------- - -design <- datasurvey %>% - - filter(!is.na(outcome_one)) %>% #CRITICAL! ON OUTCOME - filter(!is.na(pw)) %>% #NO DEBEN DE HABER CONGLOMERADOS SIN WEIGHT - - as_survey_design( - id=c(dnum, snum), #~dnum+snum, # primary secondary sampling unit - # strata = strata, #clusters need to be nested in the strata - weights = pw # factores de expancion - ) -``` - -```{r,echo=FALSE} -# denominadores -covariate_set01 <- datasurvey %>% - select(covariate_01, - #sch.wide, - #comp.imp, - covariate_02) %>% - colnames() - -# numerators within outcome -covariate_set02 <- datasurvey %>% - select(#stype, - #sch.wide, - #comp.imp, - covariate_02) %>% - colnames() -``` +## Brief description -### 1. `survey`: Estimate single prevalences +The current workflow is divided in two steps: -- From a [`srvyr`](http://gdfe.co/srvyr/) __survey design object__, __`serosvy_proportion`__ estimates: +1. `survey`: Estimate multiple prevalences, and +2. `serology`: Estimate prevalence Under misclassification for a device +with Known or Unknown test performance - + weighted prevalence (`prop`), - + total population (`total`), - + raw proportion (`raw_prop`), - + coefficient of variability (`cv`), - + design effect (`deff`) - -```{r} -serosvy_proportion(design = design, - denominator = covariate_01, - numerator = outcome_one) -``` - -```{r,eval=FALSE} -example("serosvy_proportion") -``` - -### 2. `survey`: Estimate multiple prevalences +## More +- In the +[Introductory article](https://avallecam.github.io/serosurvey/articles/intro.html) +we provide detailed definitions and references of the methods available. - In -the [Article tab](https://avallecam.github.io/serosurvey/articles/howto-reprex.html) -we provide a workflow to __estimate multiple prevalences__: - - + using different set of covariates and outcomes as numerators or denominators, - + in one single pipe operation - -```{r} -# crear matriz - # - # set 01 of denominator-numerator - # -expand_grid( - design=list(design), - denominator=c("covariate_01","covariate_02"), # covariates - numerator=c("outcome_one","outcome_two") # outcomes - ) %>% - # - # set 02 of denominator-numerator (e.g. within main outcome) - # - union_all( - expand_grid( - design=list(design), - denominator=c("outcome_one","outcome_two"), # outcomes - numerator=c("covariate_02") # covariates - ) - ) %>% - # - # create symbols (to be readed as arguments) - # - mutate( - denominator=map(denominator,dplyr::sym), - numerator=map(numerator,dplyr::sym) - ) %>% - # - # estimate prevalence - # - mutate(output=pmap(.l = select(.,design,denominator,numerator), - .f = serosvy_proportion)) %>% - # - # show the outcome - # - select(-design,-denominator,-numerator) %>% - unnest(cols = c(output)) %>% - print(n=Inf) -``` - -#### `learnr` tutorial - -- Learn to build this with in a tutorial in Spanish: - -```r -# update package -if(!require("remotes")) install.packages("remotes") -remotes::install_github("avallecam/serosurvey") -# install learner and run tutorial -if(!require("learnr")) install.packages("learnr") -learnr::run_tutorial(name = "taller",package = "serosurvey") -``` +the +[Workflow article](https://avallecam.github.io/serosurvey/articles/howto-reprex.html) +we provide a reproducible example with this package. -### 3. `serology`: Estimate prevalence Under misclassification - -- We gather __one frequentist approach__ [@ROGAN1978], -available in different Github repos, that deal with -misclassification due to an imperfect diagnostic -test [@Azman2020; @Takahashi2020]. -Check the [Reference tab](https://avallecam.github.io/serosurvey/reference/index.html). - -- We provide __tidy outputs for bayesian approaches__ developed -in @Larremore2020unk [here](https://github.com/LarremoreLab/bayesian-joint-prev-se-sp/blob/master/singleSERO_uncertainTEST.R) -and @Larremore2020kno [here](https://github.com/LarremoreLab/covid_serological_sampling/blob/master/codebase/seroprevalence.R): - -- You can use them with [`purrr`](https://purrr.tidyverse.org/) and [`furrr`](https://davisvaughan.github.io/furrr/) to efficiently iterate -and parallelize this step for __multiple prevalences__. -Check the workflow -in [Article tab](https://avallecam.github.io/serosurvey/articles/howto-reprex.html). - - -#### __Known test performance - Bayesian method__ - -```{r,eval=FALSE} -serosvy_known_sample_posterior( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # known performance - sensitivity = 0.93, - specificity = 0.975 -) -``` - -```{r,echo=FALSE} -tidy_result <- serosvy_known_sample_posterior( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # known performance - sensitivity = 0.93, - specificity = 0.975 -) - -tidy_result_out <- - tidy_result %>% - select(summary) %>% - unnest(cols = c(summary)) - -tidy_result %>% - select(posterior) %>% - unnest(cols = c(posterior)) %>% - ggplot(aes(x = r1)) + - geom_histogram(aes(y=..density..),binwidth = 0.0005) + - geom_density() + - geom_vline(aes(xintercept=tidy_result_out %>% - pull(numeric.mean)), - color="red",lwd=1) + - geom_vline(aes(xintercept=tidy_result_out %>% - pull(numeric.p05)), - color="red") + - geom_vline(aes(xintercept=tidy_result_out %>% - pull(numeric.p95)), - color="red") + - scale_x_continuous(breaks = scales::pretty_breaks()) -``` - -```{r,eval=FALSE} -example("serosvy_known_sample_posterior") -``` - -#### __Unknown test performance - Bayesian method__ - -- The test performance is called _"unknown"_ or _"uncertain"_ when test -sensitivity and specificity are not known with -certainty [@Kritsotakis2020; @Diggle2011; @Gelman2020] and -lab validation data is available with a limited set of samples, -tipically during a novel pathogen outbreak. - -```{r,eval=FALSE,echo=FALSE} -# result_unk <- sample_posterior_r_mcmc_testun( -# samps = 10000, -# #in population -# pos = 692, #positive -# n = 3212, #total -# # in lab (local validation study) -# tp = 670,tn = 640,fp = 202,fn = 74) -``` - -```{r,eval=FALSE} -serosvy_unknown_sample_posterior_ii( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # in lab (local validation study) - true_positive = 670, - true_negative = 640, - false_positive = 202, - false_negative = 74) -``` - -```{r,echo=FALSE} -result_unk <- serosvy_unknown_sample_posterior_ii( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # in lab (local validation study) - true_positive = 670, - true_negative = 640, - false_positive = 202, - false_negative = 74) - -result_unk %>% - select(posterior) %>% - unnest(posterior) %>% - rownames_to_column() %>% - pivot_longer(cols = -rowname, - names_to = "estimates", - values_to = "values") %>% - ggplot(aes(x = values)) + - geom_histogram(aes(y=..density..),binwidth = 0.0005) + - geom_density() + - facet_grid(~estimates,scales = "free_x") -``` - -```{r,eval=FALSE} -example("serosvy_unknown_sample_posterior") -``` - ## Contributing Feel free to fill an issue or contribute with your functions or workflows in a pull request. -Here are a list of publications with interesting approaches using R: - -- @Silveira2020 and @Hallal2020 analysed a serological survey accounting for sampling design and test validity using parametric bootstraping, following @Lewis2012. - -- @Flor2020 implemented a lot of frequentist and bayesian methods for test with known sensitivity and specificity. Code is available [here](https://github.com/BfRstats/bayespem-validation-code). - -- @Gelman2020 also applied Bayesian inference with hierarchical regression -and post-stratification to account for test uncertainty -with unknown specificity and sensitivity. -Here a [case-study](https://github.com/bob-carpenter/diagnostic-testing/blob/master/src/case-study/seroprevalence-meta-analysis.Rmd). - -## How to cite this R package - -```{r} -citation("serosurvey") -``` - ## Contact Andree Valle Campos | @@ -364,28 +90,8 @@ Many thanks to the Centro Nacional de Epidemiología, Prevención y Control de Enfermedades [(CDC Perú)](https://www.dge.gob.pe/portalnuevo/) for the opportunity to work on this project. -## References - -Azman, Andrew S, Stephen Lauer, M. Taufiqur Rahman Bhuiyan, Francisco J Luquero, Daniel T Leung, Sonia Hegde, Jason B Harris, et al. 2020. “Vibrio Cholerae O1 Transmission in Bangladesh: Insights from a Nationally- Representative Serosurvey,” March. https://doi.org/10.1101/2020.03.13.20035352. - -Diggle, Peter J. 2011. “Estimating Prevalence Using an Imperfect Test.” Epidemiology Research International 2011: 1–5. https://doi.org/10.1155/2011/608719. - -Flor, Matthias, Michael Weiß, Thomas Selhorst, Christine Müller-Graf, and Matthias Greiner. 2020. “Comparison of Bayesian and Frequentist Methods for Prevalence Estimation Under Misclassification.” BMC Public Health 20 (1). https://doi.org/10.1186/s12889-020-09177-4. - -Gelman, Andrew, and Bob Carpenter. 2020. “Bayesian Analysis of Tests with Unknown Specificity and Sensitivity.” Journal of the Royal Statistical Society: Series C (Applied Statistics), August. https://doi.org/10.1111/rssc.12435. - -Hallal, Pedro C, Fernando P Hartwig, Bernardo L Horta, Mariângela F Silveira, Claudio J Struchiner, Luı́s P Vidaletti, Nelson A Neumann, et al. 2020. “SARS-CoV-2 Antibody Prevalence in Brazil: Results from Two Successive Nationwide Serological Household Surveys.” The Lancet Global Health, September. https://doi.org/10.1016/s2214-109x(20)30387-9. - -Kritsotakis, Evangelos I. 2020. “On the Importance of Population-Based Serological Surveys of SARS-CoV-2 Without Overlooking Their Inherent Uncertainties.” Public Health in Practice 1 (November): 100013. https://doi.org/10.1016/j.puhip.2020.100013. - -Larremore, Daniel B., Bailey K Fosdick, Kate M Bubar, Sam Zhang, Stephen M Kissler, C. Jessica E. Metcalf, Caroline Buckee, and Yonatan Grad.2020.“Estimating SARS-CoV-2 Seroprevalence and Epidemiological Parameters with Uncertainty from Serological Surveys.” medRxiv, April. https://doi.org/10.1101/2020.04.15.20067066. - -Larremore, Daniel B., Bailey K. Fosdick, Sam Zhang, and Yonatan Grad.2020.“Jointly Modeling Prevalence, Sensitivity and Specificity for Optimal Sample Allocation.” bioRxiv, May. https://doi.org/10.1101/2020.05.23.112649. - -Lewis, Fraser I, and Paul R Torgerson. 2012. “A Tutorial in Estimating the Prevalence of Disease in Humans and Animals in the Absence of a Gold Standard Diagnostic.” Emerging Themes in Epidemiology 9 (1). https://doi.org/10.1186/1742-7622-9-9. - -Rogan, Walter J., and Beth Gladen. 1978. “Estimating Prevalence from the Results of A Screening Test.” American Journal of Epidemiology 107 (1): 71–76. https://doi.org/10.1093/oxfordjournals.aje.a112510. - -Silveira, Mariângela F., Aluı́sio J. D. Barros, Bernardo L. Horta, Lúcia C. Pellanda, Gabriel D. Victora, Odir A. Dellagostin, Claudio J. Struchiner, et al. 2020. “Population-Based Surveys of Antibodies Against SARS-CoV-2 in Southern Brazil.” Nature Medicine 26 (8): 1196–9. https://doi.org/10.1038/s41591-020-0992-3. +## How to cite this R package -Takahashi, Saki, Bryan Greenhouse, and Isabel Rodríguez-Barraquer. 2020. “Are SARS-CoV-2 seroprevalence estimates biased?” The Journal of Infectious Diseases, August. https://doi.org/10.1093/infdis/jiaa523. +```{r} +citation("serosurvey") +``` diff --git a/README.md b/README.md index 90c0732..f848a23 100644 --- a/README.md +++ b/README.md @@ -25,248 +25,50 @@ Misclassification**. -``` r -if(!require("remotes")) install.packages("remotes") -remotes::install_github("avallecam/serosurvey") -``` - -## Example - -Three basic examples which shows you how to solve common problems: - -``` r -library(serosurvey) -``` - -### 1\. `survey`: Estimate single prevalences - - - From a [`srvyr`](http://gdfe.co/srvyr/) **survey design object**, - **`serosvy_proportion`** estimates: - - - weighted prevalence (`prop`), - - total population (`total`), - - raw proportion (`raw_prop`), - - coefficient of variability (`cv`), - - design effect (`deff`) - - - -``` r -serosvy_proportion(design = design, - denominator = covariate_01, - numerator = outcome_one) -#> # A tibble: 6 x 23 -#> denominator denominator_lev~ numerator numerator_level prop prop_low -#> -#> 1 covariate_~ E outcome_~ No 0.211 0.130 -#> 2 covariate_~ E outcome_~ Yes 0.789 0.675 -#> 3 covariate_~ H outcome_~ No 0.852 0.564 -#> 4 covariate_~ H outcome_~ Yes 0.148 0.0377 -#> 5 covariate_~ M outcome_~ No 0.552 0.224 -#> 6 covariate_~ M outcome_~ Yes 0.448 0.160 -#> # ... with 17 more variables: prop_upp , prop_cv , -#> # prop_se , total , total_low , total_upp , -#> # total_cv , total_se , total_deff , total_den , -#> # total_den_low , total_den_upp , raw_num , -#> # raw_den , raw_prop , raw_prop_low , raw_prop_upp -``` +You can install the developmental version of `serosurvey` from +[GitHub](https://github.com/avallecam/serosurvey) with: ``` r -example("serosvy_proportion") -``` - -### 2\. `survey`: Estimate multiple prevalences - - - In the [Article - tab](https://avallecam.github.io/serosurvey/articles/howto-reprex.html) - we provide a workflow to **estimate multiple prevalences**: - - - using different set of covariates and outcomes as numerators or - denominators, - - in one single pipe operation - - - -``` r -# crear matriz - # - # set 01 of denominator-numerator - # -expand_grid( - design=list(design), - denominator=c("covariate_01","covariate_02"), # covariates - numerator=c("outcome_one","outcome_two") # outcomes - ) %>% - # - # set 02 of denominator-numerator (e.g. within main outcome) - # - union_all( - expand_grid( - design=list(design), - denominator=c("outcome_one","outcome_two"), # outcomes - numerator=c("covariate_02") # covariates - ) - ) %>% - # - # create symbols (to be readed as arguments) - # - mutate( - denominator=map(denominator,dplyr::sym), - numerator=map(numerator,dplyr::sym) - ) %>% - # - # estimate prevalence - # - mutate(output=pmap(.l = select(.,design,denominator,numerator), - .f = serosvy_proportion)) %>% - # - # show the outcome - # - select(-design,-denominator,-numerator) %>% - unnest(cols = c(output)) %>% - print(n=Inf) -#> # A tibble: 25 x 23 -#> denominator denominator_lev~ numerator numerator_level prop prop_low -#> -#> 1 covariate_~ E outcome_~ No 0.211 0.130 -#> 2 covariate_~ E outcome_~ Yes 0.789 0.675 -#> 3 covariate_~ H outcome_~ No 0.852 0.564 -#> 4 covariate_~ H outcome_~ Yes 0.148 0.0377 -#> 5 covariate_~ M outcome_~ No 0.552 0.224 -#> 6 covariate_~ M outcome_~ Yes 0.448 0.160 -#> 7 covariate_~ E outcome_~ (-0.1,50] 0.182 0.0499 -#> 8 covariate_~ E outcome_~ (50,100] 0.818 0.515 -#> 9 covariate_~ H outcome_~ (-0.1,50] 0.0769 0.00876 -#> 10 covariate_~ H outcome_~ (50,100] 0.923 0.560 -#> 11 covariate_~ M outcome_~ (50,100] 1.00 1.00 -#> 12 covariate_~ No outcome_~ No 1.00 1.00 -#> 13 covariate_~ Yes outcome_~ No 0.0334 0.00884 -#> 14 covariate_~ Yes outcome_~ Yes 0.967 0.882 -#> 15 covariate_~ No outcome_~ (-0.1,50] 0.218 0.0670 -#> 16 covariate_~ No outcome_~ (50,100] 0.782 0.479 -#> 17 covariate_~ Yes outcome_~ (-0.1,50] 0.0914 0.0214 -#> 18 covariate_~ Yes outcome_~ (50,100] 0.909 0.684 -#> 19 outcome_one No covariat~ No 0.939 0.778 -#> 20 outcome_one No covariat~ Yes 0.0615 0.0148 -#> 21 outcome_one Yes covariat~ Yes 1.00 1.00 -#> 22 outcome_two (-0.1,50] covariat~ No 0.549 0.294 -#> 23 outcome_two (-0.1,50] covariat~ Yes 0.451 0.219 -#> 24 outcome_two (50,100] covariat~ No 0.305 0.188 -#> 25 outcome_two (50,100] covariat~ Yes 0.695 0.546 -#> # ... with 17 more variables: prop_upp , prop_cv , -#> # prop_se , total , total_low , total_upp , -#> # total_cv , total_se , total_deff , total_den , -#> # total_den_low , total_den_upp , raw_num , -#> # raw_den , raw_prop , raw_prop_low , raw_prop_upp -``` - -#### `learnr` tutorial - - - Learn to build this with in a tutorial in Spanish: - - - -``` r -# update package if(!require("remotes")) install.packages("remotes") remotes::install_github("avallecam/serosurvey") -# install learner and run tutorial -if(!require("learnr")) install.packages("learnr") -learnr::run_tutorial(name = "taller",package = "serosurvey") -``` - -### 3\. `serology`: Estimate prevalence Under misclassification - - - We gather **one frequentist approach** (Rogan and Gladen - [1978](#ref-ROGAN1978)), available in different Github repos, that - deal with misclassification due to an imperfect diagnostic test - (Azman et al. [2020](#ref-Azman2020); Takahashi, Greenhouse, and - Rodríguez-Barraquer [2020](#ref-Takahashi2020)). Check the - [Reference - tab](https://avallecam.github.io/serosurvey/reference/index.html). - - - We provide **tidy outputs for bayesian approaches** developed in - Daniel B. Larremore et al. ([2020](#ref-Larremore2020unk)) - [here](https://github.com/LarremoreLab/bayesian-joint-prev-se-sp/blob/master/singleSERO_uncertainTEST.R) - and Daniel B Larremore et al. ([2020](#ref-Larremore2020kno)) - [here](https://github.com/LarremoreLab/covid_serological_sampling/blob/master/codebase/seroprevalence.R): - - - You can use them with [`purrr`](https://purrr.tidyverse.org/) and - [`furrr`](https://davisvaughan.github.io/furrr/) to efficiently - iterate and parallelize this step for **multiple prevalences**. - Check the workflow in [Article - tab](https://avallecam.github.io/serosurvey/articles/howto-reprex.html). - -#### **Known test performance - Bayesian method** - -``` r -serosvy_known_sample_posterior( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # known performance - sensitivity = 0.93, - specificity = 0.975 -) ``` - +## Brief description -``` r -example("serosvy_known_sample_posterior") -``` +The current workflow is divided in two steps: -#### **Unknown test performance - Bayesian method** +1. `survey`: Estimate multiple prevalences, and +2. `serology`: Estimate prevalence Under misclassification for a device + with Known or Unknown test performance - - The test performance is called *“unknown”* or *“uncertain”* when - test sensitivity and specificity are not known with certainty - (Kritsotakis [2020](#ref-Kritsotakis2020); Diggle - [2011](#ref-Diggle2011); Gelman and Carpenter - [2020](#ref-Gelman2020)) and lab validation data is available with a - limited set of samples, tipically during a novel pathogen outbreak. +## More - - -``` r -serosvy_unknown_sample_posterior_ii( - #in population - positive_number_test = 321, - total_number_test = 321+1234, - # in lab (local validation study) - true_positive = 670, - true_negative = 640, - false_positive = 202, - false_negative = 74) -``` - - - -``` r -example("serosvy_unknown_sample_posterior") -``` + - In the [Introductory + article](https://avallecam.github.io/serosurvey/articles/intro.html) + we provide detailed definitions and references of the methods + available. + - In the [Workflow + article](https://avallecam.github.io/serosurvey/articles/howto-reprex.html) + we provide a reproducible example with this package. ## Contributing Feel free to fill an issue or contribute with your functions or workflows in a pull request. -Here are a list of publications with interesting approaches using R: +## Contact + +Andree Valle Campos | [`@avallecam`](https://twitter.com/avallecam) | + - - Silveira et al. ([2020](#ref-Silveira2020)) and Hallal et al. - ([2020](#ref-Hallal2020)) analysed a serological survey accounting - for sampling design and test validity using parametric bootstraping, - following Lewis and Torgerson ([2012](#ref-Lewis2012)). +Project Link: - - Flor et al. ([2020](#ref-Flor2020)) implemented a lot of frequentist - and bayesian methods for test with known sensitivity and - specificity. Code is available - [here](https://github.com/BfRstats/bayespem-validation-code). +## Acknowledgements - - Gelman and Carpenter ([2020](#ref-Gelman2020)) also applied Bayesian - inference with hierarchical regression and post-stratification to - account for test uncertainty with unknown specificity and - sensitivity. Here a - [case-study](https://github.com/bob-carpenter/diagnostic-testing/blob/master/src/case-study/seroprevalence-meta-analysis.Rmd). +Many thanks to the Centro Nacional de Epidemiología, Prevención y +Control de Enfermedades [(CDC +Perú)](https://www.dge.gob.pe/portalnuevo/) for the opportunity to work +on this project. ## How to cite this R package @@ -294,193 +96,3 @@ citation("serosurvey") #> url = {https://avallecam.github.io/serosurvey/}, #> } ``` - -## Contact - -Andree Valle Campos | [`@avallecam`](https://twitter.com/avallecam) | - - -Project Link: - -## Acknowledgements - -Many thanks to the Centro Nacional de Epidemiología, Prevención y -Control de Enfermedades [(CDC -Perú)](https://www.dge.gob.pe/portalnuevo/) for the opportunity to work -on this project. - -## References - -Azman, Andrew S, Stephen Lauer, M. Taufiqur Rahman Bhuiyan, Francisco J -Luquero, Daniel T Leung, Sonia Hegde, Jason B Harris, et al. 2020. -“Vibrio Cholerae O1 Transmission in Bangladesh: Insights from a -Nationally- Representative Serosurvey,” March. -. - -Diggle, Peter J. 2011. “Estimating Prevalence Using an Imperfect Test.” -Epidemiology Research International 2011: 1–5. -. - -Flor, Matthias, Michael Weiß, Thomas Selhorst, Christine Müller-Graf, -and Matthias Greiner. 2020. “Comparison of Bayesian and Frequentist -Methods for Prevalence Estimation Under Misclassification.” BMC Public -Health 20 (1). . - -Gelman, Andrew, and Bob Carpenter. 2020. “Bayesian Analysis of Tests -with Unknown Specificity and Sensitivity.” Journal of the Royal -Statistical Society: Series C (Applied Statistics), August. -. - -Hallal, Pedro C, Fernando P Hartwig, Bernardo L Horta, Mariângela F -Silveira, Claudio J Struchiner, Luı́s P Vidaletti, Nelson A Neumann, et -al. 2020. “SARS-CoV-2 Antibody Prevalence in Brazil: Results from Two -Successive Nationwide Serological Household Surveys.” The Lancet Global -Health, September. . - -Kritsotakis, Evangelos I. 2020. “On the Importance of Population-Based -Serological Surveys of SARS-CoV-2 Without Overlooking Their Inherent -Uncertainties.” Public Health in Practice 1 (November): 100013. -. - -Larremore, Daniel B., Bailey K Fosdick, Kate M Bubar, Sam Zhang, Stephen -M Kissler, C. Jessica E. Metcalf, Caroline Buckee, and Yonatan -Grad.2020.“Estimating SARS-CoV-2 Seroprevalence and Epidemiological -Parameters with Uncertainty from Serological Surveys.” medRxiv, April. -. - -Larremore, Daniel B., Bailey K. Fosdick, Sam Zhang, and Yonatan -Grad.2020.“Jointly Modeling Prevalence, Sensitivity and Specificity for -Optimal Sample Allocation.” bioRxiv, May. -. - -Lewis, Fraser I, and Paul R Torgerson. 2012. “A Tutorial in Estimating -the Prevalence of Disease in Humans and Animals in the Absence of a Gold -Standard Diagnostic.” Emerging Themes in Epidemiology 9 (1). -. - -Rogan, Walter J., and Beth Gladen. 1978. “Estimating Prevalence from the -Results of A Screening Test.” American Journal of Epidemiology 107 (1): -71–76. . - -Silveira, Mariângela F., Aluı́sio J. D. Barros, Bernardo L. Horta, Lúcia -C. Pellanda, Gabriel D. Victora, Odir A. Dellagostin, Claudio J. -Struchiner, et al. 2020. “Population-Based Surveys of Antibodies Against -SARS-CoV-2 in Southern Brazil.” Nature Medicine 26 (8): 1196–9. -. - -Takahashi, Saki, Bryan Greenhouse, and Isabel Rodríguez-Barraquer. 2020. -“Are SARS-CoV-2 seroprevalence estimates biased?” The Journal of -Infectious Diseases, August. . - -
- -
- -Azman, Andrew S, Stephen Lauer, M. Taufiqur Rahman Bhuiyan, Francisco J -Luquero, Daniel T Leung, Sonia Hegde, Jason B Harris, et al. 2020. -“Vibrio Cholerae O1 Transmission in Bangladesh: Insights from a -Nationally- Representative Serosurvey,” March. -. - -
- -
- -Diggle, Peter J. 2011. “Estimating Prevalence Using an Imperfect Test.” -*Epidemiology Research International* 2011: 1–5. -. - -
- -
- -Flor, Matthias, Michael Weiß, Thomas Selhorst, Christine Müller-Graf, -and Matthias Greiner. 2020. “Comparison of Bayesian and Frequentist -Methods for Prevalence Estimation Under Misclassification.” *BMC Public -Health* 20 (1). . - -
- -
- -Gelman, Andrew, and Bob Carpenter. 2020. “Bayesian Analysis of Tests -with Unknown Specificity and Sensitivity.” *Journal of the Royal -Statistical Society: Series C (Applied Statistics)*, August. -. - -
- -
- -Hallal, Pedro C, Fernando P Hartwig, Bernardo L Horta, Mariângela F -Silveira, Claudio J Struchiner, Luı́s P Vidaletti, Nelson A Neumann, et -al. 2020. “SARS-CoV-2 Antibody Prevalence in Brazil: Results from Two -Successive Nationwide Serological Household Surveys.” *The Lancet Global -Health*, September. . - -
- -
- -Kritsotakis, Evangelos I. 2020. “On the Importance of Population-Based -Serological Surveys of SARS-CoV-2 Without Overlooking Their Inherent -Uncertainties.” *Public Health in Practice* 1 (November): 100013. -. - -
- -
- -Larremore, Daniel B, Bailey K Fosdick, Kate M Bubar, Sam Zhang, Stephen -M Kissler, C. Jessica E. Metcalf, Caroline Buckee, and Yonatan Grad. -2020. “Estimating SARS-CoV-2 Seroprevalence and Epidemiological -Parameters with Uncertainty from Serological Surveys.” *medRxiv*, April. -. - -
- -
- -Larremore, Daniel B., Bailey K. Fosdick, Sam Zhang, and Yonatan H. Grad. -2020. “Jointly Modeling Prevalence, Sensitivity and Specificity for -Optimal Sample Allocation.” *bioRxiv*, May. -. - -
- -
- -Lewis, Fraser I, and Paul R Torgerson. 2012. “A Tutorial in Estimating -the Prevalence of Disease in Humans and Animals in the Absence of a Gold -Standard Diagnostic.” *Emerging Themes in Epidemiology* 9 (1). -. - -
- -
- -Rogan, Walter J., and Beth Gladen. 1978. “Estimating Prevalence from the -Results of A Screening Test.” *American Journal of Epidemiology* 107 -(1): 71–76. . - -
- -
- -Silveira, Mariângela F., Aluı́sio J. D. Barros, Bernardo L. Horta, Lúcia -C. Pellanda, Gabriel D. Victora, Odir A. Dellagostin, Claudio J. -Struchiner, et al. 2020. “Population-Based Surveys of Antibodies Against -SARS-CoV-2 in Southern Brazil.” *Nature Medicine* 26 (8): 1196–9. -. - -
- -
- -Takahashi, Saki, Bryan Greenhouse, and Isabel Rodríguez-Barraquer. 2020. -“Are SARS-CoV-2 seroprevalence estimates biased?” *The Journal of -Infectious Diseases*, August. . - -
- -
diff --git a/man/figures/README-unnamed-chunk-10-1.png b/man/figures/README-unnamed-chunk-10-1.png index cbeed1a9c968acd50a482aa159faf05a423d2ae2..1a37e0357fe80fe3eb59e663e8d66ab21aa1c411 100644 GIT binary patch literal 7554 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 WiLJMSzYL+jrP^(F+*D%4i2omWkt5^) literal 7405 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 V%BaxU%lvF|d!A zA(SOcU)P>BOGM27Q}=&w_y6mh|9Z~f;hgt^Vq>5l#vUHV3=a?NH_IdIg-2FjD3ux-iV^Ezd?Um#W-wMDvKTMeQCc9XC@QM6 zD5{g47!!De?PId)Wpc64Ci z*jYzslvXFZsFU5<$!7OudGxW_BO@ai8v6x<-5IrV+?T~>V>B?-6%aO?eLq!c9i|d) z`d(`<00gR6{-7GqjAH;uzudQH*CF5du>{_v?x#T)IatP4Hgoy3J+gDx_;#L zQ*~AKo}2I7TSZEb!*SLreaIYGqwhdmnCsx0Qd-sXL%eNcA z?i1xeG+CGz7PNWzkA)#&p3nL+&lz)A?5#L=p7G&7L>Uj|4Y1796N=13u5%F@)D4%`9k;ib8j(uL(4a~HDmRiLfH zpO;M8vrAR;Z=3zLy}byQl_Q3WFyfA|iN=x@wF zzZxtGg9seW7>rtiO$x_gU7>%R@W2{ZIYj?f{jjuyO$c4d#Bx`oTNUr)?wHn_M<8Yp zo}zhCn(0WORqcYT)FGzx|JTZ!i%vF_4<93-Va<42Jr@#u0mnRn`@dQZaiKy-fQKN6 zkOQq(z^LZN|H^7Da0ofO+;seU*Y@pIb1BOY*GYkMT(I66aPs+4*t0V5x?Oj`>BaeV zB@3+o@G-B-_gYt=kKep<$@16y&p%-5j|ftF=O>*U86H7?nUog8Lv4a+np*za1T%;0 zo5n-y>nBD6I1r2R2xS7EIrCPq=!T$g@{DMxM(Q)!8Rf+FdDPNP2I$9{%f6uNSFqL? zWQ&DE4dFe>0W{!&ImL>Etum8iy_^-M$q>r|Y>EX|YBpW?Djh0&@+G=m1r%e!hY6wY zqWBQ}JAf8PJMJhb5|APu@Vd{5#0tVoL=IXL;eWSkQbjIs;h8>@DsZg!j{k=484%;* zDk5zJJqk3=`C~FB;K-5$WCQLSOHE2hN62k?5;vTHd9oBH3ivD`^j)ZEU@#z3cQc%T zG#H)SPl7dMz#=~nlEVG-RjL=6$_WQJK|fIWnOBa3&GQ^+ zCioVcGZ5WD<$qwICSGJm6KL1+72R2%@K0Tlz+A&WMEMyL!C+i~6KQ>14cx|OFjvAc z-{1Z2R9bk}6J-$nFA5St>}&o(HW8SVHc;?Cm=kLEJn-Flf3^yOx(c<`fh{KqpHb5C zkA!dn!d!crl(hb3ef4yJ@<(aKKQy56Uqs=Y3*pe4u3;>RJp%K?dQ%HM5uG(6FW=V8 zMhbrdEZy%c3*ZB%-yZ+eIXf6#h@EQzkIjSN2fo6g%H==ihGl1FMU=0{DJR{N-e;km zHY0=@nSE|EB*%zfX8`4dYlTBs7Oo$ICS642E5fse$f&~HGm+iA$ndIHT(7F~t3C?g2@(zVl%@^^@O1ZS%8J6@GchK_z=tme(Yn(J z=-T{URrWbgap+m-KP1MXHE2=Lwx1jL@36=N#pSJ}pPKP+gDwy#_72;$A^`c%EYPHk z)E6&6KXsnJX*U8*t{-FdrzXYQk@$Xky%vrY;Q(@%HWU8U+C!44&9VQ)=bNa={p256 zWP=(I5157W2jI9kU1PqX+P~`wg@hdc^aJp7F`(0dO8($IWM2B%oew5(K|$5Iz}Iuu z24Tqp31QX_k3ZA&u{tRhs<%dl=^T$oKN2T?NE=QPi063K^z2RmioCzqu67+cZ~^4D$#;8~fnX`Ua{|%L z_9D&T)G*;&?t3VV7DuKGwakQD+Uqj8=q2&1f8hR92v4`)upQeRRDBFBw+l@9elPTke*>22u%GST*Eim12nM!^PZ;HvK7U=h}Wstgzx z0ukwxfKls*9x@ZsL8@^y!wuLG3Yl;dY4VYVlygM-yPd#pK|!Nww6jK5@-Z%u_1oEs zn_C+0pT``H0yFx<=U{V|J&GjECMEgl0`g@coe$IU=owLrt)R!NY@Ixhw#u(xKduh3Klvy&jdNM!D3g z?4VaK)}p!!m?M+nu|5)-!HFK*0p15shgS~;EIo_p8>rhbY;Z7vyyX<{WZj8m^Qh>S zm42mJ*(-SVL!0mLjqJwr8F{0}7OH>gY%8uFdNl^9ktwE0B8KvLQum@8^CpCWWr?OE zVf@X4KDzv?uYnBHIU@lsZsr^@%mautLq8lP zPJE2BJzXN;MO_>i(l_b_Z0h8XA5SDBrM8+!H_%->o_E%I`P_=j7ez z`1n1559v;~fb94lgRZz5+4w~QrDAf6d&}G1+JNG)q2w?e;d8Tj5#d4h5s+jMXy<=ftH14dt|^U)7+P~tXDUQY~j z^@BBns|mgbuxPi#BM-N2TLWL+11k;aX%guRS$bzy;0a8>)4BOkGB_F-7Y5q3p?EkV zl?W&|UgXu64-ugTk%-Rz(|f`8R-f|VT;;UUz*k%drmawjtO<>elH!Q0yJiGm`VsF4 z5GRs8Hbq$vq(*8zU?4KB&?FQ8w<$c>~!)W+N{P!1!PJ4kjEM{ z*){~6b#^PgoI_Ipnl>4QhJaom<8q4w>GmV926egR1F0-dv{hEWljuvRdZuwsdS@Jg zBK1yG0&6!*0pkxHjLE}V)0?)P5|1XZLUzdlZM6>2m2&TRre_N)Cce>%-g zGo5}^?}?lIy@3x|!qGZ}JF~?JG=l`c0#H^m4rp(WPm=9sRQ z`89R%)A=C34ndZ(wLZ-yy-1LjL42;* zWS17`oarBLC_f6@2f9PdkF|{g5AhVnXNb8hbbIo2>A5LGGtg0q+Lf;%F`AQYCmeOzs^ABB1Un^YHXaN3TwSm0EXd z#&N+LX8Yao+e_YnQ-k6pdfKI}JWPpT$oJ4u(B5F-F~2?e5@4B1in^20eT&iyXFSAE zdE-a>U`hL(6C!BqGcrd05QlHq`P4C--KZ_PN1Ma9mY7}{Z%d$zWc6w(0^0`{WI&P9 zRqa7%NUB3E)op!}H7BiJlz`-5by3Znd$QefU@JdUEx5j8DA%jq^Y523A090-7YFSz z!(5X?mII8M*Pg4;OUhGi0r}J9&k}fu)nB+9^SD?6ED^Qt=;_i?mB6->6vsXbnzL>sI~6q>_v{Y09JT(3BV+chI>9Vp6rAh#c!vK2pP0&qBQhtz)|yj|ri~$C!9GOVUkl1E!C0N&V5PmB&iA05YKZtQDNiUt?gbO7Xn%@O&&zDthUTY}2k0+ES0ROGFnL=Z_dAyCUVl&Xow^z#Q0g9_S5o^S zstJdVG&VFUU+=?O(+ZK}5*rzsIC|xoHd0luvRnlSobJETw;*Eb zA?>i*H_N7bNhC+H;=8TMF4fYnV)H3x^t=>-0%*W(?(ICnmEi8N@E(bwmJk$I}b^rN&r}oh&!J>_>^<$#B%3!V}Z zRj3P-s&GvFjZXW>>1xSx=O7v2@>Y0Eh*l6L542TE#xkvSJt5S3UP=1cm;gGO#S2T` z={joxS~E}900Th&1<_w?FH469KNJV9uAssNUKu%RcqCz}$pUIWD33I;$nPZZ92CYT zk+Fo^&lA?bWt}dpyx;gIjlSMC-=~eID3=5=0Lwm6stCulu`VN6VGp*>eqQuL!)kRz zZO4;ZMa8k_i-h(>Y=#ltdBamNr@#Xq>}%V8sYf1ZCE)30<Rx8rrDl{ zSoY=(c&QV2LoafRq1Ioz<&m`PL_Iv+{9%mI+?!2GgAdDUOFdzi3jEgEtyMDzZW@K+ zM?JbDhq`bGhBY7ax--wvy|AOddwcSji0M=Q%{BvpHhw?tn zPZYHBOh1?r9gpejMJCidXOA~TCS`eu`^+|*vh5qWx+>By2(mIqJx)sboQ+d4Ksl7} zo;1)fQmW-qPBxZ&G`JehnwnXCv}}s_z=2HUX4Xu@O5SG-U z^ucU^eo5rxvuN#0S$~p9+5CA})C(*KfW)%6Smiewpd9V@k_QcL$wm3A;j4deJdb(W zo!nAFe5hsL9_ z(2+Hjr`=ceY(v6c^);({e#7PLFt5K6(+>pl5Bgh-Jpl1pckK7`z+P8033MShOXHJ4 z^002sjU%#Vs=XYDhHQ=4A6G%VgYlhx*V9fG8xAMn+|z_m2(Y z=wBnPLe}ntV`Y~s17oCb9X#P2+1YduZ&|lrn^t`Jx=(Z<0nv1@ zmupLMXw`9k;Fd!>CwFk?=&L|Lp|p*Qu!&4GGX+q zZ-@TuCVTa&%r`c6-ev7y)v@xgd}O_*gU&wc_1YTiXCE@xjIK=xp5kI2FBju2{4HBC zJFC+9)ybXtL$nK^s?rkJ_3K2ZZqR|YT?qVLqxDhx40+;`#&gkN#8rkq>*V$%>ojh1 z_sY!9`wXdEd=o^OUzsrSm?lem>x3QQzYWNN--f@h@OeZ-AfU4{LN+<X9LUs z{+Sb`e>>&L9y5p7=aAi?U-SJoNiU-V=f2RbQdD%6qO9g2+jY3f_+3zY@{>V+SeL<# z9Ql5pfWNZJ<`B5@`Z5Q?m1FhSLI!Lu9(oa?)luLSFRq$L)uvX_$t|M?Cn!VT#+O#@ zB#wolE&FmC8e87aDr6b#$ER7`nt75>wQ@q3E6{`|I&hQb!$8N zRDrC8^qcX2F}?4idF7ytb17+HRykeWNX_~B*5*BM+^(b}$FwH|I$Ch{l7XhmChQ}o ztlw|mQ3^?_mCgLk-}l-@@%N0Y2lUE@OAf9vx)ohjwroJiJ~Z(Z_Ph7eSAAU~l8m?W zFppt-mwNVZ)NrgcQQMv)qV6bFSrYtZ zvbOZu5+glp^fSu4_51c4tEl!*zx{nFsDv|19k@`>9P`u%~t0~h-Cg&JZY5K1= z_2xQZRKg!bzg7xk2Q|vtxhhv~myWGdFR2y3CO}PdsPjWE9T)9n*smzV?ffPAkdUQF zE{YGqL;cOM?eAhMuVmouq~1ocz5UNtW8BI)Q*Db?^Q4R_IXws!%db$%u}05h&5B9Y zllLsGWe)aS^g~V`e~}wN4ct;GDUrOo#Y5&ynw-_ms$xtH@&0x1PGr3FeWV`5!N5in zap5iV?)8Jm;Ac-PN5eNSX@yXxW*lp|0=U=p?B&KXkR zm6;hUA^uw}PwUDa?VCetsJF%j@Tl8)>+i;YfOk$!Cimb){IZ^?4#>}3=)KU+IWXLR zVc0bJr0V_Y&MPsLJNjJ< zIV8D|Y;#|EIt_*@UYk0)jzrNqlm;0z;-ixl3R-SByC|*R@X#cW6cMOMDE%*;_`lT3$?%;+sH-MfSz}E|hDvgY#mW4Yc zRV{Xtr1zM4YjRMWC`u~h92 zY8*8LJXRD2o;LD{;cWIq&flGofc2R@TRmb#l`_N*Zwafki+6BtikW>x!4X@8p&vBo-hV0GigU4&s3=M5=1bM!!9HnH*~QfwQ(320 z>4=4rLNZz7UZnDa(B$)3cmL4%=7nlbF>DC@euteEHVE!C;LIR}Bz5zuRXnm;fl-KC zr`0u7IXy8)txt3fTBXOH@lv~blksF=+;{j?%C(>9>0dSX?PL(z-~BCpE5a#-2y-Yz!{LDfO9cFzZyTk1HW1*zeAdUfPkEw z9QKR^NF?A)it56isqs6gsX3^HR_Ja0JoWUbdY(CY)Ot%xONSqt4*U)dn2>{-Lt3Zv z4_xQsV&`HSChDo@>8VHc^u(?l&zySCoPkg^wa`!utdsf!h^j}WZb{@&>uFIW5LFx% z)m0qTMN4zwPwVW=@zl%N(xm24^>PLVat3I{&Y+k^s|Z!A=ebU|ooNo86``G- zm^jwg*%d|Vq7`@1y1HnzfgH~P8f|=h98;s!Q)yjMTipXWG#ZA1scwnTXtbc|CCgK;(Dr6Tg}GB~PZXmL)3$-1Po-SyA%Ynm1S2MDh5u*va-u zl51p_Q|$Q^pUKZJyE+`RHi_%Boqs?O{u-!ImtibT8xKD>p`!IIZYmn=7Ux%Yd8reB z5UAJNgFBzX2?*mei+^Z{(=Fqa!eOS9S%lj_;L4aaMuln7lLtf*^>A*q)v~vSy z0&*BC$O9I8K|B+DiGZj>1*br+6yVtgpT&`Fp@P#udOH~32H(Ju?*j{SAiV=L{tY5? z60F;YEGUMou4OQ{7$yVS%o_&(+|;1e-+XpQY$tCokgQtIV&5F_)lJBF#tNjKhcn-w${%cy)kf}5v{r-RjA>OTaV~7-Ra+Y zN5^|hpw<59#&pP?9AfsDk!3!f4)5J$C?~+B4aOf5WhIknx@Gs3))TZ0kw_SmCV9j zj3j-y5k9(7)2G2(FbRaRzR?jKYM2TP{bi)~|D&&JSSWY?#YsVs26Ycvom1w%3gk&! zK!XRqwfpN*ycd;r=V%GNzi;zGHAs#_**r-Mj9Wn#BY=FL6Tb8eNc(_-4~)obGr&Uv z7S42JTPeUS45a071$o@?4K@(Z4_SQKhNv@u#ycR_oj^{`%7HGCkQz#`d{I` z6PDp*pWhIt*SqZYwBX0BMni9~1(5F_;y_$U=`8bBkY6Gmex$?o|K60pW=2of!Ri1O zoAz@t0L{4num1SUi2p0@{daKJpybA)zdUM)LbcekJ+fwB zA6tx=Xo(vv*nbAlqq18oodSZ_YN{tzyTanDv#&#Za5WL*gb!|cMN;$DG%tR1J<2Am zm<3_*$rC^`mVK`!GgXup~mgU{!a2FU5igSQg2zGGP=fSi6!#KPGGUm8jNdx$+|Lux+g3?Kf^ z1Uvd{>C@wvlkLI5U&9B0B{3$X((>dtfIf-&cbw*iinIQ^#9uio5m;|0{M}MFoJUF{ z^aH#Dk5qUStx58~dqsx~KL@{LM#}pM9mU6vfHi0C+j#i+Fe?I79&I&*<&eQ1>9n^v zN-}i=c+~kl0=~-xRQ=})KVhcKHmBYophRIHM4Hxuu<4vj+g=#{4norB>B%6qWvfBu zM_&}ZRsMnQI1Uo5w>tqAgdarwryTngWDO^YK?PoB(L_M>>BXe61I_!3Cee;8y)Jc4hN8#-i1^I?g`XIG}4m0@#pv3TP#WZ9wW+8$;{v8PsT-nR4s5YX(|8;ju%smJU;5SYh%Riy*y>!0S8|x z3V-+f4BTkWm#9~wJ0k#smv(7S4cXg?l%YWrK^tLpU;4V|E15C2O^jL4qqRhDJg9nQ z%${=bXjS?8$Qgw}CCWuxwx8~+1XEn)+u-r35`&*v(NPJG&3=xf@S?4J0zU_ngO%wt z*=LF#|IxI04|KF(8MV#zE22K zO@>sR@xM|Y**_xX<8hZi*AOh!(}kjO$?oz%xtRw)JIjc~fONmdlk;;y$5FiRumrR@wLv@NwPW$U zAUZFje2j`mScKdAVhvffc)z(RHG08$^zHTcw6y#hI2fXHrlA0t+j<+L-SmxGqvfx4u z^+0Lxv+Ar;C>MAbZYLY-Vq;*J!tsC`7T*Gm5VZ=%q=6Z87bAY_ikidjbRFWy zL27k$v9AOXO8%Pl0h&P$1f&?TZJo$p)5EbnxQRL$j1C57*cSTv!IfH8z^>wGyl?P< z_aRvL0^Qa?F*sQeNcZN)GIV2!u~-L(UPT-H*NBjXOlKR;LxMcXMP4x`gLn=WWR>bh zf0i9FEpuVvhe|!mtMRUYo_s~qUy~c#H*#B4Ad5ajz0fIqX|5PhH5cIpJiJ@{6x3N_ zq4f33NkTKrSSn}}9#WX#K!$=@L6^XEFC-$$2fq|v_^Q-C)}Sxrg{MdoA0-7rvOr2X z+a0-r^Z3|k4w9*MSe#{wUV=(b*KrL40vH4b!od&O4>B!Aqw}sXxmk6BlYUVbe?qOKM0>wi?Q5BVn(VjBDU9X z$k|=lX~)C9Ei%D9!WV*Bk+Xsjx_>XQAv`>%Xa&r?>sNXN5K|z5SJ9eD1;zRISdsl~ zeHna>8il*ztYT}Bhl7xdAUSh8bkGV*(QMVz0U&szb8yf!9@|;U*OzBI&uBoH5VTE> zjgqMET1k(#oNV&NQG_{Dj7S1?(2tjZt*uehJihu)CIb#OhbSxS7DW%n0E57>1Wro` z$yZg{oE;ha@v3kKcjE2hDIvI;WK?9bc74cd>RP7d>9eqLWZ=y4E#X(xikYspgc_|? zKdrpu#?YQ1>w005pzZL#HV*H zv~LG#M~>_y3BdLtW_^`7@>6*dob_cpD5*|AtrO}kgvRulm)JXf3HjuA$0XaD4zP_g ze)iM!9f}Y@k#%~1UQJ$feZ?zyZEShP@QSDamW!Xbv4bj%3o>H_Yy*4qt**)UHYmGEGf@1nv$u(_+djZ>;c?qxi_jNV@U_0T0^zm2 zV5$}eaoq>$G0}ToTsLwhfTxD2$G(%lUbWMi3vgAS+o(tg z2-O?XD_Dr1t#(hGW5yK9`ic<94AECuPey|y6?>^SRFsd^R`SJKAsbDSn~zQd6$0c#`&|t z*cN}AIwvlcLd^ zh~AIHwmWqTA%nXFU`f(FXsV2p71^${PhMkNLBFcskHLcB*qM^Foc&h(NWjvAoQ)Or zdqy62cAyTUSe_kWEM)UZTlM`yN2VEt-+hit#?AOJfM!ODB%ddI-q6B6QyK& zx?S-;9^TO1r=Ytp8z~Y6Gxuo_o;hRU} zOmQ9q6}c-KP@cIAfh>a|v&`_H0LfJXEJ!b#ZLpp=cf{|6quk=Kd_Fwx0w{6>0>Q8FaY)wPnVZ+dmd0a2|?yzLJbBOg5By=F{(1(~ekCO8N~zi|6c|oCG5`<(U5@ zptGd0DFp#uB$L01D`F9I%J>-{0kW~5%yc4@n$zT*qNKG(=(uQq^*laV-aL_e3osng zA95?|(Y`(lsaQ*c(nq;=CWd~_yUX3_{ce^i#JyubrpQc@+W~C$7U}QsC1MM*fXiJF zs4@i}%qP3S&cr|N+|pK6$~EC_ho4GmUveKj1?3Fy@hPY3xu^z5`V*u|liFMG3>`aq z8_Pb55cL-9`b%_4*Uk)y_-Vj`yJ~vyC7YQ7oUuW+$JPdAfuhjh;*rFc7woj(GCY{a zsSHoTwUPWl(NxWo4mGS>2U)i#7RNK8crWQfW?1TKlfBT#T=OnM>77&A1+njc-$UiY|BJ3({qDWA1Vt)MYMzK;oUHJUV<^l`5Es)8`jSWoU!-7vX| zR|z=+Iv!py69?=KC!9HhTcsgXWAEdP?+SSY@*^<_h1%xZc}|;sZu)M_#5%JlVf)*& zO-p#nbP_8_&Pi3Ogg*>4jb;@RU^y_ws@J^L?cQs7t-^Hsc4S^vJzIUZO?!|z=<4$T zsLcY$Sx#(cxOJ*Dccl^(S9SvA)mRc;#9k@$W8qAwW#6a^L9~I5joFZ~`J5o=8aj!m zA~B0I2^J*`dunNVK2}h4!-+Igf%Q?iU~FI zNSxol#73E2_MKf!OtjRB2IT|7D;h_HUKqgh`lYGym$Xv6R?c&xge)(gd*a?eNb}U| z#@@hGgEa3NkhCl|RD15VG2FDK*~rdgaKTl#2$cKmx^p-zOIw+qDDODx)C}q_tXOBS z-8$w|m=37d`y4K>UZ>m<_`*)f6Y~yns}zS@$K)$--7`2Q;;uIa>J9~ejO$!F&68?S zFeugHQVS*69d*0_$S!V~LZ_wL>mjDx6y zt0iVnOq)vRDCXyQ?JJIWF``bP3zEVn&Ebp0&QZ|(lE2_YbqX{1;zsAT1~fZP3ktXu zy#|_m@nd?rY4iLFo-C-w0|j=9ilWS+%NL`!_tMoIw}GMK&V`Pd83tU#j1U2D41CmN4Fb3Jdv z3yoHbMyzU313+Db*VhoN%y*8&ot^Azxp__2#v7Ncak%k|X|YBQf%3hdYj(QxiFYi> zYC0#?uyS%X5wg47qpc?1VwW?OLHy?hMDa{h5^0>Vn7F z^o(h}m->*=e90u3{r6+xz!s%3S7>u)z-LD`p~Y-S+3(CoS-!x0B?MFMT#= zo7I%mKDe~_ooeH#(FNTrw{Mf5HIUs>T2Es|w}T;p392c_E{y7az5953zBk+#yh04z zNUA#*#(zK?p@ly z*D6QG_wb|UB~oyiTGYJi{rfJq3yzN&vBLayD= z{hPwxf3Mg7ReW2;-4Qy8T;F4Ncm?X7m*X%aJ=L)4;K&FUW6cOKZXz#e<7VDI)xhlp z`A4*Y9kERd#iMZ&O04ATpC01K*UhAXhD*)g8*^a!#R<)oXD^+@@<~rCHz(%i+}yHz zoSKXl(v2%NhvpuIi85G5s-+IrMb^|=x9(Mw$k?5)V|@tsIZ6E5Rs}oAK|cPm=E!Qy z_s9X4nD+Yjkm~ui)4}f3J?K;Y>=m8g^VQPK4C9@O%G)!G^F6a8^THQ=YwCv2t*rY! znDBEKFf|Hx?XG&y9&dhD^0w@PbK|ZrQu!8l#YZ_`_lh;X$UJ`L8S3dY2-4!8N>{!7 z^6a~bWShBv=T5zo&tfNLeJ7@AN`BcZVP9rz9#+`vM3!V42A|UEj|iK~o)F{A?DgPx z%G?+D&P`f7^3#Gu=aUxK(>^gTG|kv%T+>J9tOEyK3@#ZR_;|)GJKib3Y9q4YxQj01 zrtRTeWnufx(rp;tpDlOkp6Fx*6rH7*^osgpPz|F;3oI%UD#|N zcvOl!7tp=1N^s9o$UNTijO^|tIu+X2o7T(baU+Fo<}=3;s+wJE`Rej>O~x|U-`T5< z%n6FoW+oqtl%Cpis=`uEHlcF&TJe5u|B-;$@A)my#U`WgE((+`XQbrn7YEnJfcaZ(7BQ`5jh=Vu%jxsN&)v;! zwjBvvIM5L|bntrxhi`hb5o;?Oslj=-i0CEbD`EoeDb)O6o3j`vW=1shU3c*Es+x9c z?~$!)+G87HEh`bZg%^nGpFb7$(E3e#eSjLn#}J{nY7D9wR!1K)CwuVBC{dK@V(2NP z&9<}Nni_uP@^|N|m07E@RSfo=uIM~WwB@Atcj?mlL)522JJsz-{YBI`X0iV8cII?$ zW|-6JIpF)3hM&ReXmcg@S#fVJ@H4=nO-%5T80bv~evJW3X!~sQR*kDQOgpCgJ#>)o zBh3%1{`IbHE+3`Y`z9RRH@5?LSvB|44rMJjrIg+5-;PX+bW3lRtgMA`lp8@anQ{I8 z>(jL0BYlFP>O)|kXouRy%91WGmmUYExWY%8zEPA==RJ2<0%?v>FDaak85sJb=0q>z+cfaf1`|Lx^A!~Df z9w{CG0Kdily|w_L5da_Fue0+FrAWVS^f z`4#i3KDb(X^(w9ODvg=tEty57=HaaJ*q-D(vQ^%P4|yM$r9PmP$*hhtuBK97k*!`a znba(AYIPKq$}(q-QE6B8Y0Od@lSX4QKjh&)Fqz}y<19DkD>9RIl|B3+kI7`kV7anQ zm`rBwJ#_^ZB;17k&SwA+sAvB{FYynK10XMBv3JiAV)|qTe_F@B;Aq~o<0I==D4 zeaER@c%4mg8GJF-4X=Bsbw@X9XzA7OSY{e;Dk#K--^|v}sd%S8nm!UW8g(zszHBad z^yzWi*t>TVokKac#C{fs?mzg=3|86dE$kH=>x4NN;oOcRfw+{7l9a*Z7wcc9c%6G83bGEvNhCRc3zEtg^XL)D&8(4~?ARFkY>-o%k7 zNB$F3&EV8}C`lCJG=nvSy_|);4q+s2Y)5Y1bJ}qzUtGxsPOF`g6{lrRV=0mOpN?O< zNH|~%O}HH&rolljD7A4##A_WYeu*^^3E+YScE=xz$P*(JpVCGoB>^-pV|S!n1jmg2 ze;T5o^i3Yr?&<&iO#TfJW;uxTBiAQX(po}!_RW8cpFjUx*s1HKu!Q9^VToDRgvdjj zH-x;JScC}2NLZS{8uC!mys*~}Zm5BTaq2RM>o#Hjrwl!Jz!^dg9{wmbsq=t$@!u%- zzeSE380_AVU)6(g(!xMuGyeuS;_DfQFD8nofw)T>5L8Vd>^Z5KF=A{S(dCjKdjJk2 z{Rwdv4ZHf~>-gN~-X~6?iC|&zJByX!!rJov_)HHcvAnzM7;@j|W&|^nXCokF+;T4a zshQ?v+9S|!XC(`HgqnG`vBc^%2g4s&7aA2NJd=r%4VQ_k+awdEk;RKpg$Z|t0(U^c zbKmE48}KyJk5E8ve{ZETpu8ur<N{zwGI}_!F>Se+9jXP10H9v&=UKtD7w2R=}_wqe| zg#|I_|JRPHVE|>*Yd3#@O86G)J6W@Y5JT}BKX1-}5sV1q-Cs#_>KTh!bI<%$#LpR3 z288!a%j=)LMZDUCFiwavm_baV-^5wLW~M@3&_DKo1?Xiu)&6i1=VM6KVirIAi!6vh z<>x#EhF>TlcQ;}w@IR{5aWEB@@A(6}pR~2XFeY?!C&FD4{zdL=u#C)@vp;J6o92kd3ydyD#iLltz3-4e zO+e_9vjYjHe;XU8MMo?kDV1wS-5{Ky$WN7+mq(w(M$UxWNT4P@e&@n6i12NitbZIt zCu{xeJ_nd?tntUuF9TL|Axl{HF9xrv1x-Ib6IQgK|G# zp&L}cig1fuQmbB`eA?x0e+1P#^gVxlAb*KIAx5@*p)qr`JEUy4O<}}>e)U&{V@qo7 zH4h`;1)tgzKLyB_gsE9xRWOWyhM#r>-M<&sh;i;?g#J2APm+l;GbLceW_B4_6GI}T zqQ>Lw4|5a#;`URN+r+-^LIw9sK{@ooY?_w$&kP;l+RBWYRmMv4ixb)Y^rb&&Cw1ut zW5&FOsF^@-*&ppyIHLJ(MY$|N_jJ|!$tm}2)9$D+rNqq$M#7r4n0X2!({jBWQ_mHU z>hHUTR?e9f<#Y7j<*l@9Q=%AxAC{$%?1e9DUScsfp=t8#NmiPoe{=YxY3uq^31iUd z8%dgb=BNKSrNsJ(to8?{v!-f~MH(X^amny`9JQNvJ@A$a@UR zty!=@zWgmar#5av6iyA)Mw-B;ORSY(FBj6B{8`jB&;SVbKWqCDfxRMsasO3hag&4g zQ*s2uWQA=kjSPR07DWUU5c2l|@tp7((UCjzXz};ob&v|N_*kEO6qjQlY;aV4=&$wt z%Se>*YSv)PGmjDwEChYIl5?SE5^~$)YW*a=0ZsU-H(>f9&;->x!sbN)NIN~Psd&5{ zjN}&0eGgs%bVO?{qE4UCC)x55mNjY7Et#X!qJNS;W-Hu0`oTK*{>$em!m<)=RGyIx zD%o4My~4=lq5k$iTxIwjl_o*L8#E){YYmD1!UjqXzGC4DvRE6~9+!r1`#)`vHioi2 zCcSOfVLrlH`OQJ9o1rPz=4D5W7;NQ-)_Vx0^O;?9uTGs%F47F*lHWQ9mFw)@T#@wY z+rzjKr4qE;x_oJ`MGiWqygOHhalAvApss-G*%S_P@2}SKqe!W}0`A}BCs0j*5aNG| z6Ku1=`Er)Oj}{1%O#xvI3W!KMs)mQ*7grMSVyQW?0^0T%Eojv^AV_J)6-VrF4{rko zUFxo=9zOrJ&dv9qeP;cZ3FP!}ya$B@~LciXU&tZ2jdv^4#jm6~bguZLB#}E*=S20T6 z%+v9%Ns%&CRQvT>XJ_tN%(j>0e&O<+TpbSk7)7Ifeu|X#EBr3zj0QXwi8-jW=2gK0 zac~1dVJ~EZQ2BCl0NOym*6++Id3uT?mU3Q^xkSq5=hT5RV^ILIPKcQT}7fMW0pPkLgMdpVRUeVAS2x!|pJluqXEbq|@2e%}ZF3 z<6u9R;;06}{Ls`R17(0VsM080&$veVmL8_3V|(%()LUVGl*MeT98=hJQm!i6jGaja zDAV1eiZmZgmj*o-=x!Kd5DOSzOwW^?bzYGXm(M9X^31%l%KjDz-BXj-gDPJvYuMaU zf}Uud-Uk_l*Sh}F#iD_Y2vTyxE~B5)bSeo=nvg*mP*fTVJqp=#)B*XwM+dY?JHX?W z7UP`6XTpR)gDsVz=$c_*G<92;@$fZv<_LX##ErUkr#z1G#TL~hfi9_V7EWm`cW{Mo z0#$llguJ4B)UX6^EahPSX2>YxrHd}oz9_5DqlD}~HMevV@?VGYZ{G`ZUGhT37w^lm z5ky`DC&55o*9v7&r5^XVAI4k2H>QpaiMZZtW$Dno8;TKQj+mVocEG=7FZ_>yjtYwc zhLBwUO%6x=+p;Z)#nPb=O4rBP7lMS4-YOqBca|0@6$cax+D6(j6bmfH9@FFcVrNR7 z%e~fIA+M1D%>tW3Q`kJV(^LrB#~#FbG1kraRyOHcJ;lN3nM!BaZl&?W+=bDxIC)04 zLRTL2O^|S1x=N@0$*Ja4=u2wMJ-Y`+7n8Ua zm*e8*#%ANb?bYw7OqLpn=gV6H^LBjp|Eu=MK^0bA#*z4lL#@asWJ0)tNqd6?@cKOL0k2Slm zT2BimsJ-(%ftd7wS5F;AHz~vTnvk2*W?B0NU`5I#E3~$s9o73EDk_UUn!OF!EZ- zxrG8xl9u=aR>4^UaJYw*?Of}p z8#aEK}ty<8)$VwLhyw{0KU=2dSTI{?m(JpyVx`C zD(7`9tF+I&exwLXct^eJC`hR8D=FN@Rx~lL9t?&!7N=DL$z;;A&v?G`0l10Vqpajv zJaj%WyL}(4%O~SRdD?NNu;C4UkdD7s2jn*C>BAh01^rA3@A+O*D6qy-@S3QJVMQeI zS#f0-;ahCZ@}7P5kin!`sx(x-XJ#L0F=K_8N4eqdVtW4I4Hcg&`o)z~59-erjl%~3 zn@~YIYqdGf`HmBJX)7Eh{^|Lk>w1Qtyv7zp#6#gO4}+4RQT#@W-m;1HYF;3~P{Bj* z1rX)TQVv4N*^lg$Hz6-?XzhWfHtWg3s?SX9U)bJnMx|T&T`{7c2U+A#&!F^$!;E=< zDF@Vy|Lz;C_xdtEWVp_+Ji<5FmNH)~;e#qC6=bIC@DQlDZ#7_?{L$_lh)K!l5#KXl z5(|}f%lme0rzp5W0H3tYVNZqC^KGZ}5o$ElkW_rV06ot`mk-Hxw;mgX} z7I00j3sbgox2ZhJ2{&7U+%x`fmO*e>a!$4OGN}<5&~|mHjQi@oLc2AsDR^u|O|(gc z*L0$KGvrk{;n|&p*KUC386kUHQdkV)zwwpq%fbu8C)cf- z+EIskD0^S&${G_+WTssLYBI z3^$e?Y2u&x=qg+1Qyj6tLG*O|s3a~dh@Fn3D|Fo|@j9O>!gzkslex1fw3$fQ=$@V0 zK}JH_8&3sS4`O?Rn<}rIw@cY>fZASPI3!e6;r?-Tq$iPp>OI{=Ox!uW!JqTP3CJUs zUiZ5A6YBwv`~=P5bqPRM_Kd;EdzQH7Y5gu)Krcb3^Lgx7M66!ACBvushDtKgoGP$5 zEedDv>%DUjO&nY)PWsZ!L$UDTl1P086rM(-6Aa&u1V|z$pzD1mT(;P zSaQF~71~??hG?=glvD)VYT~yZ${U$&M$HW7{(AcS!oAjJbqoa+!R47h(G@S}xd}Lq z{OTek!q9U5A{PDVvcTFsQ7?|+jflnMRtwmnb>s$@6S~%-%NRr4dm+9+ieX8`6|0QQ zW%Q0Mkp_Y4K)1eKv5nmYbbgMJ;=-{2!0?vQ!IW>)UL_j@5B7Gv1=}MdZYxDqo>xTc zsZ2|x_ptn)0oB3oqkJA1Moyk>GU8tM2};i@xy8P99gOQm+PC*eQ~{)dM+>GV0c)$0 z9Dfz(&Rk%g6_zjvsGV76*lV_W^%?-UC$40z5{iA;ZOeK zwliMU%@CP9@S*H2UW##oeRn2UOBWfdVZ`DTk4(So%y!o7cj1V z_ydkEx-{4-gNINfmU{5!Lz%$a@8=dB0KvVh zK294-pEgk4N=%sGdbShFm!;nu!-_C$hn0+a{kq327dTk$ZC&+p<2d!>ERAuZ?8X=G=p@|k+t=fkE3zVZCj9C_ zn*CMRt#mEx0DYaa42OcFaGK%G{9M}{ay6ayE1q>ANlNlq`{I16XshXQ&H6|0kJuNY zmulqa9ZCv7a^_g+<-2GHv&Z&^(YTIA0m8A|?6Ypg2b{-_Bt9q^-No8zRd$cgi;Ghg zZhcYh!uB8Yd#=ygmU}mF`dup+I9VDRP_{RkQ)m52nBHFq9-r|HSC3b(cFvm14%UcH znLo;@ZZujfr$`7diurk7cwPp5YP$mDAk01_hM&Go2yHd_IdI;MtIK0ADqn$phRgB0 z$iXmSZb~fskniVl(?6bF{XFvezZfo|EdTmwgf1UBwc%#z`t85uTU~zJTQ*QX-=K&b zd=V!uE4xu^Az+b!adNLBwzUbHoS|P5RL1NuI~*4a?2fPwB-V=-VRx9Bsi7pP-O4a=Mcyk7`dXidP8t>IZ+s(fXTmW2)s>gh zuD?-cd9=JK&;9cUC({=j!K(RGAdVtgwXx${wj_ z6O55QV)Dq+@yZ+CC$5mrVo@*0E-o z5(&PeKDj1H?<=*-|EwyS(8(PoC@mw<^bk`!eWrEHHyJlY?#ZKhJQoVtj2F;MKXs{9PfU*^R9(|o<47*CbMxZ5PB3_3q* z+Fi8eKYv*L+qYKY!R68IH7=o|4=4(V>pI9I13Qzn7j{%eRryp$o?e()XcVkrjw&8& z>f>Xi4@?v;*u*a}R_aG4YUQ?7-@loQoq06>xn6!}EZvakL?EFS*KW|3BE@SX_nuc2 zg*-|$4Fn^ONia zOxS2=c9j|2U7#!fbvkO`oFFc|Q!46AK5uo{Re3%;jaX3VIvp{Kza0KScWFbfM3i7{ zr<)*=Pv#+Z=FPl&>4o&R<#zL3?4w1)2`BpU*xC(r$K}Y@gy@hE6&GPf;^L}~!%`4Adw0(M)XA$xb5)k*Vs_=8@t9%Xblt*gMsY~pCD6lZI L-uu|Z>->KJ`=9yo literal 8154 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 Nj~_KYQlvw?@Lx`aT6h2e diff --git a/man/figures/README-unnamed-chunk-9-1.png b/man/figures/README-unnamed-chunk-9-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d475b2366de7e7e2afcfa983a49e27151ea551 GIT binary patch literal 7516 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 b%d&YqkF<5FI+^TmNskzr9?aeEbooC4DenWm literal 0 HcmV?d00001 diff --git a/vignettes/intro.Rmd b/vignettes/intro.Rmd index e79b34a..eed6630 100644 --- a/vignettes/intro.Rmd +++ b/vignettes/intro.Rmd @@ -1,5 +1,5 @@ --- -title: "Introduction: serosurvey R package?" +title: "Introduction: serosurvey R package" output: rmarkdown::html_vignette vignette: > %\VignetteEncoding{UTF-8} @@ -27,11 +27,74 @@ options(tidyverse.quiet = TRUE) ## Introduction +Here we present three examples, definitions and related references: -```{r setup} +```{r example} library(serosurvey) ``` +```{r,echo=FALSE} +# additional +library(tidyverse) +library(srvyr) +library(survey) +library(tictoc) +library(furrr) +library(purrr) +# theme +theme_set(theme_bw()) +``` + +```{r,echo=FALSE} +data(api) + +datasurvey <- apiclus2 %>% + mutate(survey_all="survey_all") %>% + # create variables + mutate(outcome_one = awards, + outcome_two = cut(pct.resp,breaks = 2), + covariate_01 = stype, + covariate_02 = both) +``` + +```{r,echo=FALSE} +# tratamiento de stratos con un solo conglomerado +options(survey.lonely.psu = "certainty") + +# uu_clean_data %>% count(CONGLOMERADO,VIVIENDA) + +# diseño muestral de la encuesta --------------------------------- + +design <- datasurvey %>% + + filter(!is.na(outcome_one)) %>% #CRITICAL! ON OUTCOME + filter(!is.na(pw)) %>% #NO DEBEN DE HABER CONGLOMERADOS SIN WEIGHT + + as_survey_design( + id=c(dnum, snum), #~dnum+snum, # primary secondary sampling unit + # strata = strata, #clusters need to be nested in the strata + weights = pw # factores de expancion + ) +``` + +```{r,echo=FALSE} +# denominadores +covariate_set01 <- datasurvey %>% + select(covariate_01, + #sch.wide, + #comp.imp, + covariate_02) %>% + colnames() + +# numerators within outcome +covariate_set02 <- datasurvey %>% + select(#stype, + #sch.wide, + #comp.imp, + covariate_02) %>% + colnames() +``` + ### 1. `survey`: Estimate single prevalences - From a [`srvyr`](http://gdfe.co/srvyr/) __survey design object__, __`serosvy_proportion`__ estimates: @@ -42,6 +105,16 @@ library(serosurvey) + coefficient of variability (`cv`), + design effect (`deff`) +```{r} +serosvy_proportion(design = design, + denominator = covariate_01, + numerator = outcome_one) +``` + +```{r,eval=FALSE} +example("serosvy_proportion") +``` + ### 2. `survey`: Estimate multiple prevalences - In @@ -51,6 +124,56 @@ we provide a workflow to __estimate multiple prevalences__: + using different set of covariates and outcomes as numerators or denominators, + in one single pipe operation +```{r} +# crear matriz + # + # set 01 of denominator-numerator + # +expand_grid( + design=list(design), + denominator=c("covariate_01","covariate_02"), # covariates + numerator=c("outcome_one","outcome_two") # outcomes + ) %>% + # + # set 02 of denominator-numerator (e.g. within main outcome) + # + union_all( + expand_grid( + design=list(design), + denominator=c("outcome_one","outcome_two"), # outcomes + numerator=c("covariate_02") # covariates + ) + ) %>% + # + # create symbols (to be readed as arguments) + # + mutate( + denominator=map(denominator,dplyr::sym), + numerator=map(numerator,dplyr::sym) + ) %>% + # + # estimate prevalence + # + mutate(output=pmap(.l = select(.,design,denominator,numerator), + .f = serosvy_proportion)) %>% + # + # show the outcome + # + select(-design,-denominator,-numerator) %>% + unnest(cols = c(output)) %>% + print(n=Inf) +``` + +#### `learnr` tutorial + +- Learn to build this with in a tutorial in Spanish: + +```r +# install learner and run tutorial +if(!require("learnr")) install.packages("learnr") +learnr::run_tutorial(name = "taller",package = "serosurvey") +``` + ### 3. `serology`: Estimate prevalence Under misclassification @@ -72,6 +195,53 @@ in [Article tab](https://avallecam.github.io/serosurvey/articles/howto-reprex.ht #### __Known test performance - Bayesian method__ +```{r,eval=FALSE} +serosvy_known_sample_posterior( + #in population + positive_number_test = 321, + total_number_test = 321+1234, + # known performance + sensitivity = 0.93, + specificity = 0.975 +) +``` + +```{r,echo=FALSE} +tidy_result <- serosvy_known_sample_posterior( + #in population + positive_number_test = 321, + total_number_test = 321+1234, + # known performance + sensitivity = 0.93, + specificity = 0.975 +) + +tidy_result_out <- + tidy_result %>% + select(summary) %>% + unnest(cols = c(summary)) + +tidy_result %>% + select(posterior) %>% + unnest(cols = c(posterior)) %>% + ggplot(aes(x = r1)) + + geom_histogram(aes(y=..density..),binwidth = 0.0005) + + geom_density() + + geom_vline(aes(xintercept=tidy_result_out %>% + pull(numeric.mean)), + color="red",lwd=1) + + geom_vline(aes(xintercept=tidy_result_out %>% + pull(numeric.p05)), + color="red") + + geom_vline(aes(xintercept=tidy_result_out %>% + pull(numeric.p95)), + color="red") + + scale_x_continuous(breaks = scales::pretty_breaks()) +``` + +```{r,eval=FALSE} +example("serosvy_known_sample_posterior") +``` #### __Unknown test performance - Bayesian method__ @@ -81,6 +251,56 @@ certainty [@Kritsotakis2020; @Diggle2011; @Gelman2020] and lab validation data is available with a limited set of samples, tipically during a novel pathogen outbreak. +```{r,eval=FALSE,echo=FALSE} +# result_unk <- sample_posterior_r_mcmc_testun( +# samps = 10000, +# #in population +# pos = 692, #positive +# n = 3212, #total +# # in lab (local validation study) +# tp = 670,tn = 640,fp = 202,fn = 74) +``` + +```{r,eval=FALSE} +serosvy_unknown_sample_posterior_ii( + #in population + positive_number_test = 321, + total_number_test = 321+1234, + # in lab (local validation study) + true_positive = 670, + true_negative = 640, + false_positive = 202, + false_negative = 74) +``` + +```{r,echo=FALSE} +result_unk <- serosvy_unknown_sample_posterior_ii( + #in population + positive_number_test = 321, + total_number_test = 321+1234, + # in lab (local validation study) + true_positive = 670, + true_negative = 640, + false_positive = 202, + false_negative = 74) + +result_unk %>% + select(posterior) %>% + unnest(posterior) %>% + rownames_to_column() %>% + pivot_longer(cols = -rowname, + names_to = "estimates", + values_to = "values") %>% + ggplot(aes(x = values)) + + geom_histogram(aes(y=..density..),binwidth = 0.0005) + + geom_density() + + facet_grid(~estimates,scales = "free_x") +``` + +```{r,eval=FALSE} +example("serosvy_unknown_sample_posterior") +``` + ## Contributing Feel free to fill an issue or contribute with your functions or workflows in a pull request.