Skip to contents

{covidscreen} is an R package and Shiny app designed to help organizations evaluate their risk from COVID-19 and the potential benefits of regular asymptomatic testing.

Installation

You can install the development version of {covidscreen} from Github with:

if (!"remotes" %in% installed.packages()) install.packages("remotes")
remotes::install_github("jesse-smith/covidscreen")

If you are using R on Windows, you will need to first install Rtools here.

Example

library(covidscreen)
#> Registered S3 method overwritten by 'quantmod':
#>   method            from
#>   as.zoo.data.frame zoo

To run the Shiny app, you can use run_app() or visit an online version.

To access the underlying model in R, you can use cs_dist() with the desired parameters. Running with no inputs uses the defaults; the output is a data.table:

# Create some data using default parameters
data <- cs_dist()

# Show data
data
#>                p   vac   inf  symp  test detect
#>  1: 0.0035416667  TRUE  TRUE  TRUE  TRUE   TRUE
#>  2: 0.0006250000  TRUE  TRUE  TRUE  TRUE  FALSE
#>  3: 0.0000000000  TRUE  TRUE  TRUE FALSE   TRUE
#>  4: 0.0000000000  TRUE  TRUE  TRUE FALSE  FALSE
#>  5: 0.0000000000  TRUE  TRUE FALSE  TRUE   TRUE
#>  6: 0.0000000000  TRUE  TRUE FALSE  TRUE  FALSE
#>  7: 0.0000000000  TRUE  TRUE FALSE FALSE   TRUE
#>  8: 0.0125000000  TRUE  TRUE FALSE FALSE  FALSE
#>  9: 0.0000000000  TRUE FALSE  TRUE  TRUE   TRUE
#> 10: 0.0000000000  TRUE FALSE  TRUE  TRUE  FALSE
#> 11: 0.0000000000  TRUE FALSE  TRUE FALSE   TRUE
#> 12: 0.0000000000  TRUE FALSE  TRUE FALSE  FALSE
#> 13: 0.0000000000  TRUE FALSE FALSE  TRUE   TRUE
#> 14: 0.0000000000  TRUE FALSE FALSE  TRUE  FALSE
#> 15: 0.0000000000  TRUE FALSE FALSE FALSE   TRUE
#> 16: 0.4833333333  TRUE FALSE FALSE FALSE  FALSE
#> 17: 0.0070833333 FALSE  TRUE  TRUE  TRUE   TRUE
#> 18: 0.0012500000 FALSE  TRUE  TRUE  TRUE  FALSE
#> 19: 0.0000000000 FALSE  TRUE  TRUE FALSE   TRUE
#> 20: 0.0000000000 FALSE  TRUE  TRUE FALSE  FALSE
#> 21: 0.0030357143 FALSE  TRUE FALSE  TRUE   TRUE
#> 22: 0.0005357143 FALSE  TRUE FALSE  TRUE  FALSE
#> 23: 0.0000000000 FALSE  TRUE FALSE FALSE   TRUE
#> 24: 0.0214285714 FALSE  TRUE FALSE FALSE  FALSE
#> 25: 0.0000000000 FALSE FALSE  TRUE  TRUE   TRUE
#> 26: 0.0000000000 FALSE FALSE  TRUE  TRUE  FALSE
#> 27: 0.0000000000 FALSE FALSE  TRUE FALSE   TRUE
#> 28: 0.0000000000 FALSE FALSE  TRUE FALSE  FALSE
#> 29: 0.0000000000 FALSE FALSE FALSE  TRUE   TRUE
#> 30: 0.0666666667 FALSE FALSE FALSE  TRUE  FALSE
#> 31: 0.0000000000 FALSE FALSE FALSE FALSE   TRUE
#> 32: 0.4000000000 FALSE FALSE FALSE FALSE  FALSE
#>                p   vac   inf  symp  test detect

You can access the risk-based metrics used in the Shiny app using corresponding functions in the R package. Undetected cases are calculated using cs_undetected(), relative risk reduction is calculated using cs_rr(), and cost effectiveness per test is calculated using cs_cost_eff().

# Cost effectiveness
cs_undetected(data)
#> [1] 0.03633929

# Relative risk reduction
cs_rr(data)
#> [1] 0.07709751

# Cost effectiveness
cs_cost_eff(data)
#> [1] 0.1651079

Additionally, test performance metrics are included in the R package to facilitate analysis not performed in the Shiny app. These include:

  • cs_pos(): the proportion of positive tests (out of the organization)
  • cs_neg(): the proportion of negative tests (out of the organization)
  • cs_true_pos(): the proportion of true positive tests (out of org)
  • cs_true_neg(): the proportion of true negative tests (out of org)
  • cs_false_pos(): the proportion of false positive tests (out of org)
  • cs_false_neg(): the proportion of false negative tests (out of org)
  • cs_ppv(): the positive predictive value of a test
  • cs_npv(): the negative predictive value of a test
  • cs_fdr(): the false discovery rate of a test
  • cs_for(): the false omission rate of a test
  • cs_sens(): the sensitivity (true positive rate, recall) of a test
  • cs_spec(): the specificity (true negative rate) of a test
  • cs_fpr(): the false positive rate of a test
  • cs_fnr(): the false negative rate of a test
# Positive tests
cs_pos(data)
#> [1] 0.01366071

# Negative tests
cs_neg(data)
#> [1] 0.06907738

# True positives
cs_true_pos(data)
#> [1] 0.01366071

# True negatives
cs_true_neg(data)
#> [1] 0.06666667

# False positives
cs_false_pos(data)
#> [1] 0

# False negatives
cs_false_neg(data)
#> [1] 0.002410714

# Positive predictive value (precision)
cs_ppv(data)
#> [1] 1

# Negative predictive value
cs_npv(data)
#> [1] 0.9651012

# False discovery rate
cs_fdr(data)
#> [1] 0

# False omission rate
cs_for(data)
#> [1] 0.03489875

# True positive rate (sensitivity/recall)
cs_sens(data)
#> [1] 0.85

# True negative rate (specificity)
cs_spec(data)
#> [1] 1

# False positive rate
cs_fpr(data)
#> [1] 0

# False negative rate
cs_fnr(data)
#> [1] 0.15

Code of Conduct

Please note that the {covidscreen} project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.