From 9349a1977092f976bdfc031bacc172e4dc535e12 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Thu, 21 Mar 2024 21:28:19 +0000 Subject: [PATCH] differences for PR #5 --- config.yaml | 80 - delays-functions.md | 907 +++++++ delays-reuse.md | 890 +++++++ ...-functions-rendered-unnamed-chunk-13-1.png | Bin 0 -> 5246 bytes ...-functions-rendered-unnamed-chunk-19-1.png | Bin 0 -> 55519 bytes ...-functions-rendered-unnamed-chunk-20-1.png | Bin 0 -> 51761 bytes ...-functions-rendered-unnamed-chunk-23-1.png | Bin 0 -> 51978 bytes ...ays-reuse-rendered-unnamed-chunk-14-1.png} | Bin md5sum.txt | 23 +- read-delays.md | 1675 ------------- reference.md | 8 +- renv.lock | 2124 ----------------- 12 files changed, 1813 insertions(+), 3894 deletions(-) delete mode 100644 config.yaml create mode 100644 delays-functions.md create mode 100644 delays-reuse.md create mode 100644 fig/delays-functions-rendered-unnamed-chunk-13-1.png create mode 100644 fig/delays-functions-rendered-unnamed-chunk-19-1.png create mode 100644 fig/delays-functions-rendered-unnamed-chunk-20-1.png create mode 100644 fig/delays-functions-rendered-unnamed-chunk-23-1.png rename fig/{read-delays-rendered-unnamed-chunk-20-1.png => delays-reuse-rendered-unnamed-chunk-14-1.png} (100%) delete mode 100644 read-delays.md delete mode 100644 renv.lock diff --git a/config.yaml b/config.yaml deleted file mode 100644 index b223410f..00000000 --- a/config.yaml +++ /dev/null @@ -1,80 +0,0 @@ -#------------------------------------------------------------ -# Values for this lesson. -#------------------------------------------------------------ - -# Which carpentry is this (swc, dc, lc, or cp)? -# swc: Software Carpentry -# dc: Data Carpentry -# lc: Library Carpentry -# cp: Carpentries (to use for instructor training for instance) -# incubator: The Carpentries Incubator -carpentry: 'incubator' - -# Overall title for pages. -title: 'Reading and cleaning data for outbreak analytics with R' - -# Date the lesson was created (YYYY-MM-DD, this is empty by default) -created: - -# Comma-separated list of keywords for the lesson -keywords: - -# Life cycle stage of the lesson -# possible values: pre-alpha, alpha, beta, stable -life_cycle: 'pre-alpha' - -# License of the lesson materials (recommended CC-BY 4.0) -license: 'CC-BY 4.0' - -# Link to the source repository for this lesson -source: 'https://github.com/epiverse-trace/tutorials-early' - -# Default branch of your lesson -branch: 'main' - -# Who to contact if there are any issues -contact: 'andree.valle-campos@lshtm.ac.uk' - -# Navigation ------------------------------------------------ -# -# Use the following menu items to specify the order of -# individual pages in each dropdown section. Leave blank to -# include all pages in the folder. -# -# Example ------------- -# -# episodes: -# - introduction.md -# - first-steps.md -# -# learners: -# - setup.md -# -# instructors: -# - instructor-notes.md -# -# profiles: -# - one-learner.md -# - another-learner.md - -# Order of episodes in your lesson -episodes: -- read-delays.Rmd - -# Information for Learners -learners: - -# Information for Instructors -instructors: - -# Learner Profiles -profiles: - -# Customisation --------------------------------------------- -# -# This space below is where custom yaml items (e.g. pinning -# sandpaper and varnish versions) should live - - -varnish: epiverse-trace/varnish@epiversetheme -sandpaper: epiverse-trace/sandpaper@patch-renv-github-bug diff --git a/delays-functions.md b/delays-functions.md new file mode 100644 index 00000000..0d379632 --- /dev/null +++ b/delays-functions.md @@ -0,0 +1,907 @@ +--- +title: 'Input delay data' +teaching: 10 +exercises: 2 +editor_options: + chunk_output_type: inline +--- + +:::::::::::::::::::::::::::::::::::::: questions + +- How to reuse delays stored in the `{epiparameter}` library with my existing analysis pipeline? + +:::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::: objectives + +- Use distribution functions to continuous and discrete distributions stored as `` objects. +- Convert a continuous to a discrete distribution with `{epiparameter}`. +- Connect `{epiparameter}` outputs with `{EpiNow2}` inputs. + +:::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::: prereq + +## Prerequisites + +- Complete tutorial [Quantifying transmission](https://epiverse-trace.github.io/tutorials-middle/quantify-transmissibility.html) + +This episode requires you to be familiar with: + +**Data science** : Basic programming with R. + +**Statistics** : Probability distributions. + +**Epidemic theory** : Epidemiological parameters, time periods, Effective reproductive number. + +::::::::::::::::::::::::::::::::: + +## Introduction + + + +`{epiparameter}` help us to *choose* one specific set of epidemiological parameters from the literature, instead of copy/pasting them *by hand*: + + +```r +covid_serialint <- + epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial", + author = "Nishiura", + single_epidist = TRUE + ) +``` + +```{.output} +Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +covid_serialint +``` + +```{.output} +Disease: COVID-19 +Pathogen: SARS-CoV-2 +Epi Distribution: serial interval +Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +. +Distribution: lnorm +Parameters: + meanlog: 1.386 + sdlog: 0.568 +``` + +Now, we have an epidemiological parameter we can reuse! We can replace the two out of three **summary statistics** into `EpiNow2::dist_spec()` + +```r +generation_time <- dist_spec( + mean = covid_serialint$summary_stats$mean, + sd = covid_serialint$summary_stats$sd, + max = 20, + distribution = "gamma" +) +``` + +In this episode, we will use the **distribution functions** that `{epiparameter}` provides to get a `max` value for this and any other package downstream in the pipeline! + +Let's load the `{epiparameter}` and `{EpiNow2}` package. For `{EpiNow2}`, we'll set 4 cores to be used in parallel computations. We'll use the pipe `%>%`, some `{dplyr}` verbs and `{ggplot2}`, so let's also call to the `{tidyverse}` package: + + +```r +library(epiparameter) +library(EpiNow2) +library(tidyverse) + +withr::local_options(list(mc.cores = 4)) +``` + +## Distribution functions + +In R, all the statistical distributions have functions to access the following: + +- `density()`: Probability **Density** function (PDF), +- `cdf()`: Cumulative Distribution function (**CDF**), +- `quantile()`: **Quantile** function, and +- `generate()`: **Random** values from the given distribution. + +:::::::::::: spoiler + +### Functions for the Normal distribution + +If you need it, read in detail about the [R probability functions for the normal distribution](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc), each of its definitions and identify in which part of a distribution they are located! + +![The four probability functions for the normal distribution ([Jack Weiss, 2012](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc))](fig/fig5a-normaldistribution.png) + +:::::::::::::::::::: + +If you look at `?stats::Distributions`, each type of distribution has a unique set of functions. However, `{epiparameter}` gives you the same four functions to access each of the values above for any `` object you want! + + +```r +# plot this to have a visual reference +plot(covid_serialint, day_range = 0:20) +``` + + +```r +# the density value at quantile value of 10 (days) +density(covid_serialint, at = 10) +``` + +```{.output} +[1] 0.01911607 +``` + +```r +# the cumulative probability at quantile value of 10 (days) +cdf(covid_serialint, q = 10) +``` + +```{.output} +[1] 0.9466605 +``` + +```r +# the quantile value (day) at a cumulative probability of 60% +quantile(covid_serialint, p = 0.6) +``` + +```{.output} +[1] 4.618906 +``` + +```r +# generate 10 random values (days) given +# the distribution family and its parameters +generate(covid_serialint, times = 10) +``` + +```{.output} + [1] 3.085162 4.188513 3.287248 3.386386 4.527121 2.232372 1.697718 1.161376 + [9] 2.285763 5.376300 +``` + +::::::::: instructor + +Access to the reference documentation (Help files) for these functions is accessible with the three double-colon notation: `epiparameter:::` + +- `?epiparameter:::density.epidist()` +- `?epiparameter:::cdf.epidist()` +- `?epiparameter:::quantile.epidist()` +- `?epiparameter:::generate.epidist()` + +:::::::::::::::::: + +::::::::::::::::::::::::::::::::: challenge + +### Window for contact tracing and the Serial interval + +The **serial interval** is important in the optimisation of contact tracing since it provides a time window for the containment of a disease spread ([Fine, 2003](https://academic.oup.com/aje/article/158/11/1039/162725)). Depending on the serial interval, we can evaluate the need to expand the number of days pre-onset to consider in the contact tracing to include more backwards contacts ([Davis et al., 2020](https://assets.publishing.service.gov.uk/media/61e9ab3f8fa8f50597fb3078/S0523_Oxford_-_Backwards_contact_tracing.pdf)). + +With the COVID-19 serial interval (`covid_serialint`) calculate: + +- How much more of the backward cases could be captured if the contact tracing method considered contacts up to 6 days pre-onset compared to 2 days pre-onset? + +::::::::::::::::: hint + +In Figure 5 from the [R probability functions for the normal distribution](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc), the shadowed section represents a cumulative probability of `0.997` for the quantile value at `x = 2`. + +:::::::::::::::::::::: + +::::::::::::::::: solution + + +```r +plot(covid_serialint) +``` + + +```r +cdf(covid_serialint, q = 2) +``` + +```{.output} +[1] 0.1111729 +``` + +```r +cdf(covid_serialint, q = 6) +``` + +```{.output} +[1] 0.7623645 +``` + +Given the COVID-19 serial interval: + +- A contact tracing method considering contacts up to 2 days pre-onset will capture around 11.1% of backward cases. + +- If this period is extended to 6 days pre-onset, this could include 76.2% of backward contacts. + +:::::::::::::::::::::::::: + +::::::::::::::::: solution + +### What if + +If we exchange the question between days and cumulative probability to: + +- When considering secondary cases, how many days following the symptom onset of primary cases can we expect 55% of symptom onset to occur? + + +```r +quantile(covid_serialint, p = 0.55) +``` + +An interpretation could be: + +- The 55% percent of the symptom onset of secondary cases will happen after 4.2 days after the symptom onset of primary cases. + +:::::::::::::::::::::::::: + + +::::::::::::::::::::::::::::::::::::::::::: + + +## Discretise a continuous distribution + +We are getting closer to the end! `EpiNow2::dist_spec()` still needs a maximum value (`max`). + +One way to do this is to get the quantile value for the distribution's 99.9th percentile or `0.999` cumulative probability. For this, we need access to the set of distribution functions for our `` object. + +We can use the set of distribution functions for a _continuous_ distribution (as above). However, these values will be _continuous_ numbers. We can **discretise** the continuous distribution stored in our `` object to get discrete values from a continuous distribution. + +When we `epiparameter::discretise()` the continuous distribution we get a **discrete**(-ized) distribution: + + +```r +covid_serialint_discrete <- + epiparameter::discretise(covid_serialint) + +covid_serialint_discrete +``` + +```{.output} +Disease: COVID-19 +Pathogen: SARS-CoV-2 +Epi Distribution: serial interval +Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +. +Distribution: discrete lnorm +Parameters: + meanlog: 1.386 + sdlog: 0.568 +``` + +We identify this change in the `Distribution:` output line of the `` object. Take a double check to this line: + +``` +Distribution: discrete lnorm +``` + +While for a **continuous** distribution, we plot the *Probability Density Function (PDF)*, for a **discrete** distribution, we plot the *Probability Mass Function (PMF)*: + + +```r +# continuous +plot(covid_serialint) + +# discrete +plot(covid_serialint_discrete) +``` + +To finally get a `max` value, let's access the quantile value of the 99.9th percentile or `0.999` probability of the distribution with the `prob_dist$q` notation, similarly to how we access the `summary_stats` values. + + +```r +covid_serialint_discrete_max <- + quantile(covid_serialint_discrete, p = 0.999) +``` + +::::::::::::::::::::::::::::::::: challenge + +### Length of quarantine and Incubation period + +The **incubation period** distribution is a useful delay to assess the length of active monitoring or quarantine ([Lauer et al., 2020](https://www.acpjournals.org/doi/10.7326/M20-0504)). Similarly, delays from symptom onset to recovery (or death) will determine the required duration of health care and case isolation ([Cori et al., 2017](https://royalsocietypublishing.org/doi/10.1098/rstb.2016.0371)). + +Calculate: + +- Within what exact time frame do 99% of individuals exhibiting COVID-19 symptoms exhibit them after infection? + +::::::::::::::::: hint + +What delay distribution measures the time between infection and the onset of symptoms? + +The probability functions for `` **discrete** distributions are the same that we used for the *continuous* ones! + + +```r +# plot to have a visual reference +plot(covid_serialint_discrete, day_range = 0:20) + +# density value at quantile value 10 (day) +density(covid_serialint_discrete, at = 10) + +# cumulative probability at quantile value 10 (day) +cdf(covid_serialint_discrete, q = 10) + +# In what quantile value (days) do we have the 60% cumulative probability? +quantile(covid_serialint_discrete, p = 0.6) + +# generate random values +generate(covid_serialint_discrete, times = 10) +``` + +:::::::::::::::::::::: + +::::::::::::::::: solution + + +```r +covid_incubation <- + epiparameter::epidist_db( + disease = "covid", + epi_dist = "incubation", + single_epidist = TRUE + ) +``` + +```{.output} +Using McAloon C, Collins Á, Hunt K, Barber A, Byrne A, Butler F, Casey M, +Griffin J, Lane E, McEvoy D, Wall P, Green M, O'Grady L, More S (2020). +"Incubation period of COVID-19: a rapid systematic review and +meta-analysis of observational research." _BMJ Open_. +doi:10.1136/bmjopen-2020-039652 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +covid_incubation_discrete <- epiparameter::discretise(covid_incubation) + +quantile(covid_incubation_discrete, p = 0.99) +``` + +```{.output} +[1] 16 +``` + +99% of those who develop COVID-19 symptoms will do so within 16 days of infection. + +Now, _Is this result expected in epidemiological terms?_ + +:::::::::::::::::::::::::: + +::::::::::::::::: solution + +### How to create a distribution plot? + +From a maximum value with `quantile()`, we can create a sequence of quantile values as a numeric vector and calculate `density()` values for each: + + +```r +# create a discrete distribution visualisation +# from a maximum value from the distribution +quantile(covid_serialint_discrete, p = 0.999) %>% + # generate quantile values + # as a sequence for each natural number + seq(1L, to = ., by = 1L) %>% + # coerce numeric vector to data frame + as_tibble_col(column_name = "quantile_values") %>% + mutate( + # calculate density values + # for each quantile in the density function + density_values = + density( + x = covid_serialint_discrete, + at = quantile_values + ) + ) %>% + # create plot + ggplot( + aes( + x = quantile_values, + y = density_values + ) + ) + + geom_col() +``` + + + +**Remember:** In infections with pre-symptomatic transmission, serial intervals can have negative values ([Nishiura et al., 2020](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext)). When we use the _serial interval_ to approximate the _generation time_ we need to make this distribution with positive values only! + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::: callout + +### Log normal distributions + +If you need the log normal **distribution parameters** instead of the summary statistics, we can use `epiparameter::get_parameters()`: + + +```r +covid_serialint_parameters <- + epiparameter::get_parameters(covid_serialint) + +covid_serialint_parameters +``` + +```{.output} + meanlog sdlog +1.3862617 0.5679803 +``` + +This gets a vector of class `` ready to use as input for any other package! + +**BONUS TIP:** If we write the `[]` next to the last object create like in `covid_serialint_parameters[]`, within `[]` we can use the +Tab key +to use the [code completion feature](https://support.posit.co/hc/en-us/articles/205273297-Code-Completion-in-the-RStudio-IDE) and have a quick access to `covid_serialint_parameters["meanlog"]` and `covid_serialint_parameters["sdlog"]`. We invite you to try this out in code chunks and the R console! + +:::::::::::::::::::::::::::::: + +## Plug-in `{epiparameter}` to `{EpiNow2}` + +Now we can plug everything into the `EpiNow2::dist_spec()` function! + +- the **summary statistics** `mean` and `sd` of the distribution, +- a maximum value `max`, +- the `distribution` name. + + +```r +serial_interval_covid <- + dist_spec( + mean = covid_serialint_parameters["meanlog"], + sd = covid_serialint_parameters["sdlog"], + max = covid_serialint_discrete_max, + distribution = "lognormal" + ) + +serial_interval_covid +``` + +```{.output} + + Fixed distribution with PMF [0.0073 0.1 0.2 0.19 0.15 0.11 0.075 0.051 0.035 0.023 0.016 0.011 0.0076 0.0053 0.0037 0.0027 0.0019 0.0014 0.001 0.00074 0.00055 0.00041 0.00031] +``` + +:::::::::: callout + +### Warning + +Using the serial interval instead of the generation time is an alternative that can propagate bias in your estimates, even more so in diseases with reported pre-symptomatic transmission. ([Chung Lau et al., 2021](https://academic.oup.com/jid/article/224/10/1664/6356465)) + +:::::::::::::::::: + +Let's replace the `generation_time` input we used for `EpiNow2::epinow()`. + + +```r +epinow_estimates <- epinow( + # cases + reported_cases = example_confirmed[1:60], + # delays + generation_time = generation_time_opts(serial_interval_covid) +) + +base::plot(epinow_estimates) +``` + +::::::::::::::::::::::::::::::::: challenge + +### Ebola's effective reproduction number + +Download and read the [Ebola dataset](data/ebola_cases.csv): + +- Reuse one epidemiological parameter to estimate the effective reproduction number for the Ebola dataset. +- Why did you choose that parameter? + +::::::::::::::::: hint + +To calculate the $R_t$, we need: + +- data set with confirmed cases per day and +- one key delay distribution + +Key functions we applied in this episode are: + +- `epidist_db()` +- `list_distributions()` +- `discretise()` +- probability functions for continuous and discrete distributions + +:::::::::::::::::::::: + +::::::::::::::::: solution + + + + +```r +# read data +# e.g.: if path to file is data/raw-data/ebola_cases.csv then: +ebola_confirmed <- + read_csv(here::here("data", "raw-data", "ebola_cases.csv")) + +# list distributions +epidist_db(disease = "ebola") %>% + list_distributions() +``` + + +```r +# subset one distribution +ebola_serial <- epidist_db( + disease = "ebola", + epi_dist = "serial", + single_epidist = TRUE +) + +# adapt epiparameter to epinow2 +ebola_serial_discrete <- discretise(ebola_serial) + +ebola_serial_discrete_max <- quantile(ebola_serial_discrete, p = 0.999) + +serial_interval_ebola <- + dist_spec( + mean = ebola_serial$summary_stats$mean, + sd = ebola_serial$summary_stats$sd, + max = ebola_serial_discrete_max, + distribution = "gamma" # don't forget! it's a must! + ) + +# run epinow +epinow_estimates <- epinow( + # cases + reported_cases = ebola_confirmed, + # delays + generation_time = generation_time_opts(serial_interval_ebola) +) +``` + +```{.output} +WARN [2024-03-21 21:21:32] epinow: There were 1 divergent transitions after warmup. See +https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup +to find out why this is a problem and how to eliminate them. - +WARN [2024-03-21 21:21:32] epinow: Examine the pairs() plot to diagnose sampling problems + - +``` + +```r +plot(epinow_estimates) +``` + + + +`{EpiNow2}` can also include the uncertainty around each summary statistic. We invite you to read this discussion on: [How to adapt `{epiparameter}` uncertainty entries to `{EpiNow2}`](https://github.com/epiverse-trace/epiparameter/discussions/218)? + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + +## Adjusting for reporting delays + +Estimating $R_t$ requires data on the daily number of new infections. Due to lags in the development of detectable viral loads, symptom onset, seeking care, and reporting, these numbers are not readily available. All observations reflect transmission events from some time in the past. In other words, if $d$ is the delay from infection to observation, then observations at time $t$ inform $R_{t−d}$, not $R_t$. [(Gostic et al., 2020)](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409#sec007) + +![Timeline for chain of disease reporting, the Netherlands. Lab, laboratory; PHA, public health authority. From [Marinović et al., 2015](https://wwwnc.cdc.gov/eid/article/21/2/13-0504_article)](fig/disease-reporting.jpg) + +The **delay distribution** could be inferred jointly with the underlying times of infection or estimated as the sum of the **[incubation period](../learners/reference.md#incubation)** distribution and the distribution of delays from symptom onset to observation from line list data **([reporting delay](../learners/reference.md#reportingdelay))**. + +For `{EpiNow2}`, we can specify these two complementary delay distributions in the `delays` argument. + +![$R_{t}$ is a measure of transmission at time $t$. Observations after time $t$ must be adjusted. ICU, intensive care unit. From [Gostic et al., 2020](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409#sec007)](fig/rt-adjusting-delays.png) + +::::::::::::::::::::::::::::::::: challenge + +### Reuse an Incubation period for COVID-19 + +Use `{epiparameter}` to: + +- Find an incubation period for COVID-19. +- Add our last `epinow()` code chunk using the `delays` argument and the `delay_opts()` helper function. + +::::::::::::::::: hint + +The `delays` argument and the `delay_opts()` helper function are analogous to the `generation_time` argument and the `generation_time_opts()` helper function. + +```r +epinow_estimates <- epinow( + # cases + reported_cases = example_confirmed[1:60], + # delays + generation_time = generation_time_opts(covid_serial_interval), + delays = delay_opts(covid_incubation_time) +) +``` + +:::::::::::::::::::::: + +::::::::::::::::: solution + + +```r +# get covid serial interval +covid_serialint <- + epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial", + author = "Nishiura", + single_epidist = TRUE + ) +``` + +```{.output} +Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +# adapt epidist to epinow2 +covid_serialint_discrete_max <- + covid_serialint %>% + discretise() %>% + quantile(p = 0.999) + +covid_serialint_parameters <- + epiparameter::get_parameters(covid_serialint) + +covid_serial_interval <- + dist_spec( + mean = covid_serialint_parameters["meanlog"], + sd = covid_serialint_parameters["sdlog"], + max = covid_serialint_discrete_max, + distribution = "lognormal" + ) + +# get covid incubation period +covid_incubation <- epiparameter::epidist_db( + disease = "covid", + epi_dist = "incubation", + author = "Natalie", + single_epidist = TRUE +) +``` + +```{.output} +Using Linton N, Kobayashi T, Yang Y, Hayashi K, Akhmetzhanov A, Jung S, Yuan +B, Kinoshita R, Nishiura H (2020). "Incubation Period and Other +Epidemiological Characteristics of 2019 Novel Coronavirus Infections +with Right Truncation: A Statistical Analysis of Publicly Available +Case Data." _Journal of Clinical Medicine_. doi:10.3390/jcm9020538 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +# adapt epiparameter to epinow2 +covid_incubation_discrete_max <- + covid_incubation %>% + discretise() %>% + quantile(p = 0.999) + +covid_incubation_parameters <- + epiparameter::get_parameters(covid_incubation) + +covid_incubation_time <- + dist_spec( + mean = covid_incubation_parameters["meanlog"], + sd = covid_incubation_parameters["sdlog"], + max = covid_incubation_discrete_max, + distribution = "lognormal" # do not forget this! + ) + +# run epinow +epinow_estimates <- epinow( + # cases + reported_cases = example_confirmed[1:60], + # delays + generation_time = generation_time_opts(covid_serial_interval), + delays = delay_opts(covid_incubation_time) +) +``` + +```{.output} +Logging threshold set at INFO for the EpiNow2 logger +``` + +```{.output} +Writing EpiNow2 logs to the console and: /tmp/RtmpURZKqU/regional-epinow/2020-04-21.log +``` + +```{.output} +Logging threshold set at INFO for the EpiNow2.epinow logger +``` + +```{.output} +Writing EpiNow2.epinow logs to the console and: /tmp/RtmpURZKqU/epinow/2020-04-21.log +``` + +```r +base::plot(epinow_estimates) +``` + + + +:::::::::::::::::::::::::: + +:::::::::::::: solution + +### How much has it changed? + +After adding the incubation period, discuss: + +- Does the retrospective trend of forecast change? +- Has the uncertainty changed? +- How would you explain or interpret any of these changes? + +:::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + + +::::::::::::::::::::::::::::::::: challenge + +### Ebola's effective reproduction number was adjusted by reporting delays + +Using the same [Ebola dataset](data/ebola_cases.csv): + +- Reuse one additional epidemiological parameter for the `delays` argument in `EpiNow2::epinow()`. +- Estimate the effective reproduction number using `EpiNow2::epinow()`. +- Why did you choose that parameter? + +::::::::::::::::: hint + +We can use two complementary delay distributions to estimate the $R_t$ at time $t$. + +- generation time. +- incubation period and reporting delays. + +:::::::::::::::::::::: + +::::::::::::::::: solution + + + + +```r +# read data +# e.g.: if path to file is data/raw-data/ebola_cases.csv then: +ebola_confirmed <- + read_csv(here::here("data", "raw-data", "ebola_cases.csv")) + +# list distributions +epidist_db(disease = "ebola") %>% + list_distributions() +``` + + +```r +# subset one distribution for the generation time +ebola_serial <- epidist_db( + disease = "ebola", + epi_dist = "serial", + single_epidist = TRUE +) + +# adapt epiparameter to epinow2 +ebola_serial_discrete <- discretise(ebola_serial) + +serial_interval_ebola <- + dist_spec( + mean = ebola_serial$summary_stats$mean, + sd = ebola_serial$summary_stats$sd, + max = quantile(ebola_serial_discrete, p = 0.999), + distribution = "gamma" + ) + +# subset one distribution for delay of the incubation period +ebola_incubation <- epidist_db( + disease = "ebola", + epi_dist = "incubation", + single_epidist = TRUE +) + +# adapt epiparameter to epinow2 +ebola_incubation_discrete <- discretise(ebola_incubation) + +incubation_period_ebola <- + dist_spec( + mean = ebola_incubation$summary_stats$mean, + sd = ebola_incubation$summary_stats$sd, + max = quantile(ebola_serial_discrete, p = 0.999), + distribution = "gamma" + ) + +# run epinow +epinow_estimates <- epinow( + # cases + reported_cases = ebola_confirmed, + # delays + generation_time = generation_time_opts(serial_interval_ebola), + delays = delay_opts(incubation_period_ebola) +) +``` + +```{.output} +WARN [2024-03-21 21:27:31] epinow: There were 8 divergent transitions after warmup. See +https://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup +to find out why this is a problem and how to eliminate them. - +WARN [2024-03-21 21:27:31] epinow: Examine the pairs() plot to diagnose sampling problems + - +``` + +```r +plot(epinow_estimates) +``` + + + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + +## Next steps + +::::::::::::::::: testimonial + +### How to get distribution parameters from statistical distributions? + +How to get the mean and standard deviation from a generation time with *only* distribution parameters but no summary statistics like `mean` or `sd` for `EpiNow2::dist_spec()`? + +Look at the `{epiparameter}` vignette on [parameter extraction and conversion](https://epiverse-trace.github.io/epiparameter/articles/extract_convert.html)! + +::::::::::::::::::::::::::::: + +::::::::::::::::: testimonial + +### How to estimate delay distributions for Disease X? + +Refer to this excellent tutorial on estimating the serial interval and incubation period of Disease X accounting for *censoring* using Bayesian inference with packages like `{rstan}` and `{coarseDataTools}`. + +- Tutorial in English: +- Tutorial en Español: + +**Then,** after you get your estimated values, you can manually create your own` ` class objects with `epiparameter::epidist()`! Take a look at its [reference guide on "Create an `` object"](https://epiverse-trace.github.io/epiparameter/reference/epidist.html#ref-examples)! + +::::::::::::::::::::::::::::: + + + +::::::::::::::::::::::::::::::::::::: keypoints + +- Use distribution functions with `` objects to get summary statistics and informative parameters for public health interventions like the Window for contact tracing and Length of quarantine. +- Use `discretise()` to convert continuous to discrete delay distributions. +- Use `{epiparameter}` to get reporting delays required in transmissibility estimates. + +:::::::::::::::::::::::::::::::::::::::::::::::: + diff --git a/delays-reuse.md b/delays-reuse.md new file mode 100644 index 00000000..5c0be04b --- /dev/null +++ b/delays-reuse.md @@ -0,0 +1,890 @@ +--- +title: 'Reuse delay data' +teaching: 10 +exercises: 2 +editor_options: + chunk_output_type: inline +--- + +:::::::::::::::::::::::::::::::::::::: questions + +- How to get easy access to delay distributions from a literature search database? + +:::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::: objectives + +- Get delays from a literature search database with `{epiparameter}`. +- Get distribution parameters and summary statistics of delay distributions. + +:::::::::::::::::::::::::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::: prereq + +## Prerequisites + +This episode requires you to be familiar with: + +**Data science** : Basic programming with R. + +**Epidemic theory** : Epidemiological parameters, time periods. + +::::::::::::::::::::::::::::::::: + +## Introduction + +The [natural history](../learners/reference.md#naturalhistory) of an infectious disease shows that its development has a regularity from stage to stage. The time periods from an infectious disease inform about the timing of transmission and interventions. + +![Definition of key time periods. From [Xiang et al, 2021](https://www.sciencedirect.com/science/article/pii/S2468042721000038)](fig/time-periods.jpg) + + +::::::::::::::::: callout + +### Definitions + +Look at the [glossary](../learners/reference.md) for the definitions of all the time periods of the figure above! + +::::::::::::::::::::::::: + +However, early in an epidemic, modelling efforts can be delayed by the lack of a centralised resource that summarises input parameters for the disease of interest ([Nash et al., 2023](https://mrc-ide.github.io/epireview/)). Projects like `{epiparameter}` and `{epireview}` are building online catalogues following literature synthesis protocols that can help parametrise models by easily accessing a comprenhensive library of previously estimated epidemiological parameters from past outbreaks. + + + +To exemplify how to use `{epiparameter}` in your analysis pipeline, our goal in this episode will be to *choose* one specific set of epidemiological parameters from the literature, instead of copy/pasting them *by hand*, to plug them in to an `{EpiNow2}` analysis workflow. + + + +Let's start loading the `{epiparameter}` package. We'll use the pipe `%>%` to connect some of their functions, so let's also call to the `{magrittr}` package: + + +```r +library(epiparameter) +library(magrittr) +``` + +## The problem + +In `{EpiNow2}` we can specify a [generation time](../learners/reference.md#generationtime) as a probability `distribution` adding its `mean`, standard deviation (`sd`), and maximum value (`max`). To specify a `generation_time` that follows a _Gamma_ distribution with mean $\mu = 4$, standard deviation $\sigma = 2$, and a maximum value of 20, we write: + +```r +generation_time <- dist_spec( + mean = 4, + sd = 2, + max = 20, + distribution = "gamma" +) +``` + +Usually, we would *copy/paste* the **summary statistics** we found in a paper. Or, try to get them from the **distribution parameters** reported. One source of issue is that the report of different statistical distributions is not consistent across the literature. `{epiparameter}`’s objective is to provide information for a collection of distributions for a range of infectious diseases that is as accurate, unbiased and as comprehensive as possible. + + + +Today, we'll *choose* the summary statistics from the library of epidemiological parameters provided by `{epiparameter}`. + + + + + +::::::::::::::::: callout + +### From time periods to probability distributions. + +When we calculate the *serial interval*, we see that not all case pairs have the same time length. We will observe this variability for any case pair and individual time period, including the [incubation period](../learners/reference.md#incubation) and [infectious period](../learners/reference.md#infectiousness). + +![Serial intervals of possible case pairs in (a) COVID-19 and (b) MERS-CoV. Pairs represent a presumed infector and their presumed infectee plotted by date of symptom onset ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#fig6)).](fig/serial-interval-pairs.jpg) + +To summarise these data from individual and pair time periods, we can find the **statistical distributions** that best fit the data ([McFarland et al., 2023](https://www.eurosurveillance.org/content/10.2807/1560-7917.ES.2023.28.27.2200806)). + + + +![Fitted serial interval distribution for (a) COVID-19 and (b) MERS-CoV based on reported transmission pairs in Saudi Arabia. We fitted three commonly used distributions, Lognormal, Gamma, and Weibull distributions, respectively ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#fig5)).](fig/seria-interval-fitted-distributions.jpg) + +Statistical distributions are summarised in terms of their **summary statistics** like the *location* (mean and percentiles) and *spread* (variance or standard deviation) of the distribution, or with their **distribution parameters** that inform about the *form* (shape and rate/scale) of the distribution. These estimated values can be reported with their **uncertainty** (95% confidence intervals). + +| Gamma | mean | shape | rate/scale | +|:--------------|:--------------|:--------------|:--------------| +| MERS-CoV | 14.13(13.9–14.7) | 6.31(4.88–8.52) | 0.43(0.33–0.60) | +| COVID-19 | 5.1(5.0–5.5) | 2.77(2.09–3.88) | 0.53(0.38–0.76) | + +| Weibull | mean | shape | rate/scale | +|:--------------|:--------------|:--------------|:--------------| +| MERS-CoV | 14.2(13.3–15.2) | 3.07(2.64–3.63) | 16.1(15.0–17.1) | +| COVID-19 | 5.2(4.6–5.9) | 1.74(1.46–2.11) | 5.83(5.08–6.67) | + +| Log normal | mean | mean-log | sd-log | +|:--------------|:--------------|:--------------|:--------------| +| MERS-CoV | 14.08(13.1–15.2) | 2.58(2.50–2.68) | 0.44(0.39–0.5) | +| COVID-19 | 5.2(4.2–6.5) | 1.45(1.31–1.61) | 0.63(0.54–0.74) | + +Table: Serial interval estimates using Gamma, Weibull, and Log normal distributions. 95% confidence intervals for the shape and scale (logmean and sd for Log normal) parameters are shown in brackets ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#tbl3)). + +::::::::::::::::::::::::: + +## Find a Generation time + +The generation time, jointly with the $R$, can inform about the speed of spread and its feasibility of control. Given a $R>1$, with a shorter generation time, cases can appear more quickly. + +![Video from the MRC Centre for Global Infectious Disease Analysis, Ep 76. Science In Context - Epi Parameter Review Group with Dr Anne Cori (27-07-2023) at ](fig/reproduction-generation-time.png) + +In calculating the effective reproduction number ($R_{t}$), the *generation time* distribution is often approximated by the [serial interval](../learners/reference.md#serialinterval) distribution. +This frequent approximation is because it is easier to observe and measure the onset of symptoms than the onset of infectiousness. + +![A schematic of the relationship of different time periods of transmission between an infector and an infectee in a transmission pair. Exposure window is defined as the time interval having viral exposure, and transmission window is defined as the time interval for onward transmission with respect to the infection time ([Chung Lau et al., 2021](https://academic.oup.com/jid/article/224/10/1664/6356465)).](fig/serial-interval-observed.jpeg) + +However, using the *serial interval* as an approximation of the *generation time* is primarily valid for diseases in which infectiousness starts after symptom onset ([Chung Lau et al., 2021](https://academic.oup.com/jid/article/224/10/1664/6356465)). In cases where infectiousness starts before symptom onset, the serial intervals can have negative values, which is the case of a pre-symptomatic transmission ([Nishiura et al., 2020](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext#gr2)). + +Additionally, even if the *generation time* and *serial interval* have the same mean, their variance usually differs, propagating bias to the $R_{t}$ estimation. $R_{t}$ estimates are sensitive not only to the mean generation time but also to the variance and form of the generation interval distribution [(Gostic et al., 2020)](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409). + +::::::::::::::::::::::::::::::::: challenge + +### Serial interval + +Assume that COVID-19 and SARS have similar reproduction number values and that the serial interval approximates the generation time. + +Given the Serial interval of both infections in the figure below: + +- Which one would be harder to control? +- Why do you conclude that? + +![Serial interval of novel coronavirus (COVID-19) infections overlaid with a published distribution of SARS. ([Nishiura et al., 2020](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext))](fig/serial-interval-covid-sars.jpg) + +::::::::::::::::: hint + +The peak of each curve can inform you about the location of the mean of each distribution. The larger the mean, the larger the serial interval. + +:::::::::::::::::::::: + +::::::::::::::::: solution + +Which one would be harder to control? + +- COVID-19 + +Why do you conclude that? + +- COVID-19 has the lowest mean serial interval. The approximate mean value for the serial interval of COVID-19 is around four days, and SARS is about seven days. Thus, COVID-19 will likely have newer generations in less time than SARS, assuming similar reproduction numbers. + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + +:::::::::::::::::::::: instructor + +The objective of the assessment above is to assess the interpretation of a larger or shorter generation time. + +:::::::::::::::::::::: + +## Extract epidemiological parameters + +First, let's assume that the data set `example_confirmed` has COVID-19 observed cases. So, we need to find a reported generation time for COVID-19 or any other useful parameter for this aim. + +Let's start by looking at how many parameters we have in the epidemiological distributions database in `{epiparameter}` (`epidist_db`) for the `disease` named `covid`-19: + + +```r +epiparameter::epidist_db( + disease = "covid" +) +``` + +```{.output} +Returning 27 results that match the criteria (22 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} +List of objects + Number of entries in library: 27 + Number of studies in library: 10 + Number of diseases: 1 + Number of delay distributions: 27 + Number of offspring distributions: 0 +``` + +From the `{epiparameter}` package, we can use the `epidist_db()` function to ask for any `disease` and also for a specific epidemiological distribution (`epi_dist`). + +Let's ask now how many parameters we have in the epidemiological distributions database (`epidist_db`) with the generation time using the string `generation`: + + +```r +epiparameter::epidist_db( + epi_dist = "generation" +) +``` + +```{.output} +Returning 1 results that match the criteria (1 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} +Disease: Influenza +Pathogen: Influenza-A-H1N1 +Epi Distribution: generation time +Study: Lessler J, Reich N, Cummings D, New York City Department of Health and +Mental Hygiene Swine Influenza Investigation Team (2009). "Outbreak of +2009 Pandemic Influenza A (H1N1) at a New York City School." _The New +England Journal of Medicine_. doi:10.1056/NEJMoa0906089 +. +Distribution: weibull +Parameters: + shape: 2.360 + scale: 3.180 +``` + +Currently, in the library of epidemiological parameters, we have one `generation` time entry for Influenza. Considering the abovementioned considerations, we can look at the `serial` intervals for `COVID`-19. Run this locally! + + +```r +epiparameter::epidist_db( + disease = "COVID", + epi_dist = "serial" +) +``` + +With this query combination, we get more than one delay distribution. This output is an `` class object. + +::::::::::::::::: callout + +### CASE-INSENSITIVE + +`epidist_db` is [case-insensitive](https://dillionmegida.com/p/case-sensitivity-vs-case-insensitivity/#case-insensitivity). This means that you can use strings with letters in upper or lower case indistinctly. + +::::::::::::::::::::::::: + +To summarise an `` object and get the column names from the underlying parameter database, we can add the `epiparameter::list_distributions()` function to the previous code using the pipe `%>%`: + + +```r +epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial" +) %>% + epiparameter::list_distributions() +``` + +```{.output} +Returning 4 results that match the criteria (3 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} + disease epi_distribution prob_distribution author year +1 COVID-19 serial interval Muluneh .... 2021 +2 COVID-19 serial interval lnorm Hiroshi .... 2020 +3 COVID-19 serial interval weibull Hiroshi .... 2020 +4 COVID-19 serial interval norm Lin Yang.... 2020 +``` + +In the `epiparameter::list_distributions()` output, we can also find different types of probability distributions (e.g., Log-normal, Weibull, Normal). + +`{epiparameter}` uses the `base` R naming convention for distributions. This is why **Lognormal** is called `lnorm`. + +::::::::::::::::: spoiler + +### Why do we have a entry? + +Entries with a missing value (``) in the `prob_distribution` column are *non-parameterised* entries. They have summary statistics but no probability distribution. Compare these two outputs: + + +```r +# get an object +distribution <- + epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial" + ) + +distribution %>% + # pluck the first entry in the object class + pluck(1) %>% + # check if object have distribution parameters + is_parameterised() + +# check if the second object +# have distribution parameters +distribution %>% + pluck(2) %>% + is_parameterised() +``` + +### Parameterised entries have an Inference method + +As detailed in `?is_parameterised`, a parameterised distribution is the entry that has a probability distribution associated with it provided by an `inference_method` as shown in `metadata`: + + +```r +distribution[[1]]$metadata$inference_method +distribution[[2]]$metadata$inference_method +distribution[[4]]$metadata$inference_method +``` + +::::::::::::::::::::::::: + + +::::::::::::::::::::::::::::::::: challenge + +### Ebola's incubation periods + +Take 5 minutes to explore the `{epiparameter}` library. + +First, search for Ebola disease delay distributions. Find: + +- How many delay distributions are for the Ebola disease? + +- How many types of delay distributions are for the incubation period of Ebola? + +::::::::::::::::: hint + +`epidist_db()` and `list_distributions()` give us different and complementary summary outputs. + +The `epidist_db()` function alone counts for us the number of entries like: + +- studies, and +- delay distributions. + +On the other hand, the `{epiparameter}` combo of `epidist_db()` plus `list_distributions()` lists all the entries in a data frame with columns like: + +- the type of the probability distribution per delay, and +- author and year of the study. + +:::::::::::::::::::::: + +::::::::::::::::: solution + + +```r +# we expect 16 delays distributions for ebola +epiparameter::epidist_db( + disease = "ebola" +) +``` + +```{.output} +Returning 17 results that match the criteria (17 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} +List of objects + Number of entries in library: 17 + Number of studies in library: 4 + Number of diseases: 1 + Number of delay distributions: 16 + Number of offspring distributions: 1 +``` + +Now, from the output of `epiparameter::epidist_db()`, What is an [offspring distribution](../learners/reference.md#offspringdist)? + + +```r +# we expect 2 different types of delay distributions +# for ebola incubation period +epiparameter::epidist_db( + disease = "ebola", + epi_dist = "incubation" +) %>% + list_distributions() +``` + +```{.output} +Returning 5 results that match the criteria (5 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} + disease epi_distribution prob_distribution author year +1 Ebola Virus Disease incubation period lnorm Martin E.... 2011 +2 Ebola Virus Disease incubation period gamma WHO Ebol.... 2015 +3 Ebola Virus Disease incubation period gamma WHO Ebol.... 2015 +4 Ebola Virus Disease incubation period gamma WHO Ebol.... 2015 +5 Ebola Virus Disease incubation period gamma WHO Ebol.... 2015 +``` + +We find two types of probability distributions for this query: _lognormal_ and _gamma_. + +Now, search for delay distributions of your disease of interest! Ask: + +- Do you recognise the papers? + +- Should it consider any other paper? + +How does `{epiparameter}` do the collection and review of peer-reviewed literature? We invite you to read the vignette on ["Data Collation and Synthesis Protocol"](https://epiverse-trace.github.io/epiparameter/articles/data_protocol.html)! + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + + +## Select a single distribution + +The `epiparameter::epidist_db()` function works as a filtering or subset function. Let's use the `author` argument to filter `Hiroshi Nishiura` parameters: + + +```r +epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial", + author = "Hiroshi" +) %>% + epiparameter::list_distributions() +``` + +```{.output} +Returning 2 results that match the criteria (2 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```{.output} + disease epi_distribution prob_distribution author year +1 COVID-19 serial interval lnorm Hiroshi .... 2020 +2 COVID-19 serial interval weibull Hiroshi .... 2020 +``` + +We still get more than one epidemiological parameter. We can set the `single_epidist` argument to `TRUE` to only one: + + +```r +epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial", + author = "Hiroshi", + single_epidist = TRUE +) +``` + +```{.output} +Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```{.output} +Disease: COVID-19 +Pathogen: SARS-CoV-2 +Epi Distribution: serial interval +Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +. +Distribution: lnorm +Parameters: + meanlog: 1.386 + sdlog: 0.568 +``` + +::::::::::::::::: callout + +### How does `single_epidist` works? + +Looking at the help documentation for `?epiparameter::epidist_db()`: + +- If multiple entries match the arguments supplied and `single_epidist = TRUE`, then the parameterised +`` with the *largest sample size* will be returned. +- If multiple entries are equal after this sorting, the *first entry* will be returned. + +What is a *parametrised* ``? Look at `?is_parameterised`. + +::::::::::::::::::::::::: + +Now, we have an epidemiological parameter we can reuse! We can replace the **summary statistics** numbers we plug into `EpiNow2::dist_spec()`. + +Let's assign this `` class object to the `covid_serialint` object. + + +```r +covid_serialint <- + epiparameter::epidist_db( + disease = "covid", + epi_dist = "serial", + author = "Nishiura", + single_epidist = TRUE + ) +``` + +```{.output} +Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +covid_serialint +``` + +```{.output} +Disease: COVID-19 +Pathogen: SARS-CoV-2 +Epi Distribution: serial interval +Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel +coronavirus (COVID-19) infections." _International Journal of +Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 +. +Distribution: lnorm +Parameters: + meanlog: 1.386 + sdlog: 0.568 +``` + + + +You can use `plot()` to `` objects to visualise: + +- the *Probability Density Function (PDF)* and +- the *Cumulative Distribution Function (CDF)*. + + +```r +# plot object +plot(covid_serialint) +``` + + + +With the `day_range` argument, you can change the length or number of days in the `x` axis. Explore what this looks like: + + +```r +# plot object +plot(covid_serialint, day_range = 0:20) +``` + +::::::::::::::::: discussion + +### The distribution Zoo + +Explore this shinyapp called **The Distribution Zoo**! + +Follow these steps to reproduce the form of the COVID serial interval distribution from `{epiparameter}` (`covid_serialint` object): + +1. Access to shiny app website, +2. Go to the left panel, +3. Keep the *Category of distribution*: `Continuous Univariate`, +4. Select a new *Type of distribution*: `Log-Normal`, +5. Move the **sliders**, i.e. the graphical control element that allows you to adjust a value by moving a handle along a horizontal track or bar to the `covid_serialint` parameters. + +Replicate these with the `distribution` object and all its list elements: `[[2]]`, `[[3]]`, and `[[4]]`. Explore how the shape of a distribution changes when its parameters change. + +Share about: + +- What other features of the website do you find helpful? + +::::::::::::::::::::::::: + +::::::::::::::::::::::::: instructor + +In the context of user interfaces and graphical user interfaces (GUIs), like the [Distribution Zoo](https://ben18785.shinyapps.io/distribution-zoo/) shiny app, a **slider** is a graphical control element that allows users to adjust a value by moving a handle along a track or bar. Conceptually, it provides a way to select a numeric value within a specified range by visually sliding or dragging a pointer (the handle) along a continuous axis. + +::::::::::::::::::::::::: + + +## Extract the summary statistics + +We can get the `mean` and standard deviation (`sd`) from this `` diving into the `summary_stats` object: + + +```r +# get the mean +covid_serialint$summary_stats$mean +``` + +```{.output} +[1] 4.7 +``` + +:::::::::::::::::::::::::::::: challenge + +### Ebola's serial interval + +Take 1 minute to: + +Get access to the Ebola serial interval with the highest sample size. + +Answer: + +- What is the `sd` of the epidemiological distribution? + +- What is the `sample_size` used in that study? + +::::::::: hint + +Use the `$` operator plus the tab or keyboard button to explore them as an expandable list: + +```r +covid_serialint$ +``` + +Use the `str()` to display the structure of the `` R object. + +:::::::::::::::::: + +:::::::::: solution + + +```r +# ebola serial interval +ebola_serial <- + epiparameter::epidist_db( + disease = "ebola", + epi_dist = "serial", + single_epidist = TRUE + ) +``` + +```{.output} +Using WHO Ebola Response Team, Agua-Agum J, Ariyarajah A, Aylward B, Blake I, +Brennan R, Cori A, Donnelly C, Dorigatti I, Dye C, Eckmanns T, Ferguson +N, Formenty P, Fraser C, Garcia E, Garske T, Hinsley W, Holmes D, +Hugonnet S, Iyengar S, Jombart T, Krishnan R, Meijers S, Mills H, +Mohamed Y, Nedjati-Gilani G, Newton E, Nouvellet P, Pelletier L, +Perkins D, Riley S, Sagrado M, Schnitzler J, Schumacher D, Shah A, Van +Kerkhove M, Varsaneux O, Kannangarage N (2015). "West African Ebola +Epidemic after One Year — Slowing but Not Yet under Control." _The New +England Journal of Medicine_. doi:10.1056/NEJMc1414992 +.. +To retrieve the short citation use the 'get_citation' function +``` + +```r +ebola_serial +``` + +```{.output} +Disease: Ebola Virus Disease +Pathogen: Ebola Virus +Epi Distribution: serial interval +Study: WHO Ebola Response Team, Agua-Agum J, Ariyarajah A, Aylward B, Blake I, +Brennan R, Cori A, Donnelly C, Dorigatti I, Dye C, Eckmanns T, Ferguson +N, Formenty P, Fraser C, Garcia E, Garske T, Hinsley W, Holmes D, +Hugonnet S, Iyengar S, Jombart T, Krishnan R, Meijers S, Mills H, +Mohamed Y, Nedjati-Gilani G, Newton E, Nouvellet P, Pelletier L, +Perkins D, Riley S, Sagrado M, Schnitzler J, Schumacher D, Shah A, Van +Kerkhove M, Varsaneux O, Kannangarage N (2015). "West African Ebola +Epidemic after One Year — Slowing but Not Yet under Control." _The New +England Journal of Medicine_. doi:10.1056/NEJMc1414992 +. +Distribution: gamma +Parameters: + shape: 2.188 + scale: 6.490 +``` + + +```r +# get the sd +ebola_serial$summary_stats$sd +``` + +```{.output} +[1] 9.6 +``` + +```r +# get the sample_size +ebola_serial$metadata$sample_size +``` + +```{.output} +[1] 305 +``` + +Try to visualise this distribution using `plot()`. + +Also, explore all the other nested elements within the `` object. + +Share about: + +- What elements do you find useful for your analysis? +- What other elements would you like to see in this object? How? + +:::::::::::::::::::: + +:::::::::::::::::::::::::::::::: + +:::::::::::::::::::::::::::::: instructor + +An interesting element is the `method_assess` nested entry, which refers to the methods used by the study authors to assess for bias while estimating the serial interval distribution. + + +```r +covid_serialint$method_assess +``` + +```{.output} +$censored +[1] TRUE + +$right_truncated +[1] TRUE + +$phase_bias_adjusted +[1] FALSE +``` + +We will explore these concepts following episodes! + +:::::::::::::::::::::::::::::: + + +::::::::::::::::::::::::::::::::: challenge + +### Ebola's severity parameter + +A severity parameter like the duration of hospitalisation could add to the information needed about the bed capacity in response to an outbreak ([Cori et al., 2017](https://royalsocietypublishing.org/doi/10.1098/rstb.2016.0371)). + + + +For Ebola: + +- What is the reported *point estimate* of the mean duration of health care and case isolation? + +::::::::::::::::: hint + +An informative delay should measure the time from symptom onset to recovery or death. + +Find a way to access the whole `{epiparameter}` database and find how that delay may be stored. + +:::::::::::::::::::::: + +::::::::::::::::: solution + + +```r +# one way to get the list of all the available parameters +epidist_db(disease = "all") %>% + list_distributions() %>% + as_tibble() %>% + distinct(epi_distribution) +``` + +```{.error} +Error in distinct(., epi_distribution): could not find function "distinct" +``` + +```r +ebola_severity <- epidist_db( + disease = "ebola", + epi_dist = "onset to discharge" +) +``` + +```{.output} +Returning 1 results that match the criteria (1 are parameterised). +Use subset to filter by entry variables or single_epidist to return a single entry. +To retrieve the short citation for each use the 'get_citation' function +``` + +```r +# point estimate +ebola_severity$summary_stats$mean +``` + +```{.output} +[1] 15.1 +``` + +Check that for some `{epiparameter}` entries you will also have the *uncertainty* around the *point estimate* of each summary statistic: + + +```r +# 95% confidence intervals +ebola_severity$summary_stats$mean_ci +``` + +```{.output} +[1] 95 +``` + +```r +# limits of the confidence intervals +ebola_severity$summary_stats$mean_ci_limits +``` + +```{.output} +[1] 14.6 15.6 +``` + +:::::::::::::::::::::::::: + +::::::::::::::::::::::::::::::::::::::::::: + +Notice that with these pieces of information we can replace two out of three inputs of the `EpiNow2::dist_spec()` function: + +```r +generation_time <- dist_spec( + mean = covid_serialint$summary_stats$mean, + sd = covid_serialint$summary_stats$sd, + max = 20, + distribution = "gamma" +) +``` + +In the next episode we'll access to the `max` by using **distribution functions**! + + + +::::::::::::::::::::::::::::::::::::: keypoints + +- Use `{epiparameter}` to access the literature catalogue of epidemiological delay distributions. +- Use `epidist_db()` to select single delay distributions. +- Use `list_distributions()` for an overview of multiple delay distributions. +- Reuse known estimates for unknown disease in the early stage of an outbreak when no contact tracing data is available. + +:::::::::::::::::::::::::::::::::::::::::::::::: + diff --git a/fig/delays-functions-rendered-unnamed-chunk-13-1.png b/fig/delays-functions-rendered-unnamed-chunk-13-1.png new file mode 100644 index 0000000000000000000000000000000000000000..308a2b944ee2b5dbdf752173cfa2e0f5fb52d017 GIT binary patch literal 5246 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 U)Piy&3xO{=DP_qL2_wJ%2mKyHcK`qY literal 0 HcmV?d00001 diff --git a/fig/delays-functions-rendered-unnamed-chunk-20-1.png b/fig/delays-functions-rendered-unnamed-chunk-20-1.png new file mode 100644 index 0000000000000000000000000000000000000000..50d3b85d0b3c0d4989b82dee96b0ed0c600ea651 GIT binary patch literal 51761 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 g)c-HO?Yp?Fl6xRUrE6IYWBQ2vLlx;FDI>rC1 - -To exemplify how to use `{epiparameter}` in your analysis pipeline, our goal in this episode will be to replace the `generation_time` input that we can use for `EpiNow2::epinow()`. - -```r -epinow_estimates <- epinow( - # cases - reported_cases = example_confirmed[1:60], - # delays - generation_time = generation_time_opts(generation_time), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) -``` - -To do this replacement, instead of plug-in numeric values to `EpiNow2::dist_spec()` to manually specify the delay distribution parameters, we are going to collect them from the library of epidemiological parameters provided by `{epiparameter}`: - -```r -generation_time <- dist_spec( - mean = 3.6, - sd = 3.1, - max = 20, - distribution = "lognormal" -) -``` - -Let's explore how we can access this and other time delays using `{epiparameter}`. We'll use the pipe `%>%` to connect some of their functions, so let's also call to the `{tidyverse}` package: - - -```r -library(epiparameter) -library(EpiNow2) -library(tidyverse) -``` - -## Find a Generation time - -The generation time, jointly with the $R$, can inform about the speed of spread and its feasibility of control. Given a $R>1$, with a shorter generation time, cases can appear more quickly. - -![Video from the MRC Centre for Global Infectious Disease Analysis, Ep 76. Science In Context - Epi Parameter Review Group with Dr Anne Cori (27-07-2023) at ](fig/reproduction-generation-time.png) - -In calculating the effective reproduction number ($R_{t}$), the *generation time* distribution is often approximated by the [serial interval](../learners/reference.md#serialinterval) distribution. -This frequent approximation is because it is easier to observe and measure the onset of symptoms than the onset of infectiousness. - -![A schematic of the relationship of different time periods of transmission between an infector and an infectee in a transmission pair. Exposure window is defined as the time interval having viral exposure, and transmission window is defined as the time interval for onward transmission with respect to the infection time ([Chung Lau et al. 2021](https://academic.oup.com/jid/article/224/10/1664/6356465)).](fig/serial-interval-observed.jpeg) - -However, using the *serial interval* as an approximation of the *generation time* is primarily valid for diseases in which infectiousness starts after symptom onset ([Chung Lau et al. 2021](https://academic.oup.com/jid/article/224/10/1664/6356465)). In cases where infectiousness starts before symptom onset, the serial intervals can have negative values, which is the case of a pre-symptomatic transmission ([Nishiura et al. (2020)](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext#gr2)). - -Additionally, even if the *generation time* and *serial interval* have the same mean, their variance usually differs, propagating bias to the $R_{t}$ estimation. $R_{t}$ estimates are sensitive not only to the mean generation time but also to the variance and form of the generation interval distribution [(Gostic et al., 2020)](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409). - -::::::::::::::::: callout - -### From time periods to probability distributions. - -When we calculate the *serial interval*, we see that not all case pairs have the same time length. We will observe this variability for any case pair and individual time period, including the [incubation period](../learners/reference.md#incubation) and [infectious period](../learners/reference.md#infectiousness). - -![Serial intervals of possible case pairs in (a) COVID-19 and (b) MERS-CoV. Pairs represent a presumed infector and their presumed infectee plotted by date of symptom onset ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#fig6)).](fig/serial-interval-pairs.jpg) - -To summarize these data from individual and pair time periods, we can find the **statistical distributions** that best fit the data ([McFarland et al., 2023](https://www.eurosurveillance.org/content/10.2807/1560-7917.ES.2023.28.27.2200806)). - - - -![Fitted serial interval distribution for (a) COVID-19 and (b) MERS-CoV based on reported transmission pairs in Saudi Arabia. We fitted three commonly used distributions, Lognormal, Gamma, and Weibull distributions, respectively ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#fig5)).](fig/seria-interval-fitted-distributions.jpg) - -Statistical distributions are summarized in terms of their **summary statistics** like the *location* (mean and percentiles) and *spread* (variance or standard deviation) of the distribution, or with their **distribution parameters** that inform about the *form* (shape and rate/scale) of the distribution. These estimated values can be reported with their **uncertainty** (95% confidence intervals). - -| Gamma | mean | shape | rate/scale | -|:--------------|:--------------|:--------------|:--------------| -| MERS-CoV | 14.13(13.9–14.7) | 6.31(4.88–8.52) | 0.43(0.33–0.60) | -| COVID-19 | 5.1(5.0–5.5) | 2.77(2.09–3.88) | 0.53(0.38–0.76) | - -| Weibull | mean | shape | rate/scale | -|:--------------|:--------------|:--------------|:--------------| -| MERS-CoV | 14.2(13.3–15.2) | 3.07(2.64–3.63) | 16.1(15.0–17.1) | -| COVID-19 | 5.2(4.6–5.9) | 1.74(1.46–2.11) | 5.83(5.08–6.67) | - -| Log normal | mean | mean-log | sd-log | -|:--------------|:--------------|:--------------|:--------------| -| MERS-CoV | 14.08(13.1–15.2) | 2.58(2.50–2.68) | 0.44(0.39–0.5) | -| COVID-19 | 5.2(4.2–6.5) | 1.45(1.31–1.61) | 0.63(0.54–0.74) | - -Table: Serial interval estimates using Gamma, Weibull, and Log normal distributions. 95% confidence intervals for the shape and scale (logmean and sd for Log normal) parameters are shown in brackets ([Althobaity et al., 2022](https://www.sciencedirect.com/science/article/pii/S2468042722000537#tbl3)). - -::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::: challenge - -### Serial interval - -Assume that COVID-19 and SARS have similar reproduction number values and that the serial interval approximates the generation time. - -Given the Serial interval of both infections in the figure below: - -- Which one would be harder to control? -- Why do you conclude that? - -![Serial interval of novel coronavirus (COVID-19) infections overlaid with a published distribution of SARS. ([Nishiura et al, 2020](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext))](fig/serial-interval-covid-sars.jpg) - -::::::::::::::::: hint - -The peak of each curve can inform you about the location of the mean of each distribution. The larger the mean, the larger the serial interval. - -:::::::::::::::::::::: - -::::::::::::::::: solution - -Which one would be harder to control? - -- COVID-19 - -Why do you conclude that? - -- COVID-19 has the lowest mean serial interval. The approximate mean value for the serial interval of COVID-19 is around four days, and SARS is about seven days. Thus, COVID-19 will likely have newer generations in less time than SARS, assuming similar reproduction numbers. - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - -:::::::::::::::::::::: instructor - -The objective of the assessment above is to assess the interpretation of a larger or shorter generation time. - -:::::::::::::::::::::: - -## Extract epidemiological parameters - -First, let's assume that the data set `example_confirmed` has COVID-19 observed cases. So, we need to find a reported generation time for COVID-19 or any other useful parameter for this aim. - -Let's start by looking at how many parameters we have in the epidemiological distributions database (`epidist_db`) for the `disease` named `covid`-19: - - -```r -epiparameter::epidist_db( - disease = "covid" -) -``` - -```{.output} -Returning 27 results that match the criteria (22 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```{.output} -List of objects - Number of entries in library: 27 - Number of studies in library: 10 - Number of diseases: 1 - Number of delay distributions: 27 - Number of offspring distributions: 0 -``` - -From the `{epiparameter}` package, we can use the `epidist_db()` function to ask for any `disease` and also for a specific epidemiological distribution (`epi_dist`). - -Let's ask now how many parameters we have in the epidemiological distributions database (`epidist_db`) with the generation time using the string `generation`: - - -```r -epiparameter::epidist_db( - epi_dist = "generation" -) -``` - -```{.output} -Returning 1 results that match the criteria (1 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```{.output} -Disease: Influenza -Pathogen: Influenza-A-H1N1 -Epi Distribution: generation time -Study: Lessler J, Reich N, Cummings D, New York City Department of Health and -Mental Hygiene Swine Influenza Investigation Team (2009). "Outbreak of -2009 Pandemic Influenza A (H1N1) at a New York City School." _The New -England Journal of Medicine_. doi:10.1056/NEJMoa0906089 -. -Distribution: weibull -Parameters: - shape: 2.360 - scale: 3.180 -``` - -Currently, in the library of epidemiological parameters, we have one `generation` time entry for Influenza. Considering the abovementioned considerations, we can look at the `serial` intervals for `COVID`-19. - - -```r -epiparameter::epidist_db( - disease = "COVID", - epi_dist = "serial" -) -``` - -```{.output} -Returning 4 results that match the criteria (3 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```{.output} -[[1]] -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Alene M, Yismaw L, Assemie M, Ketema D, Gietaneh W, Birhan T (2021). -"Serial interval and incubation period of COVID-19: a systematic review -and meta-analysis." _BMC Infectious Diseases_. -doi:10.1186/s12879-021-05950-x -. -Parameters: - -[[2]] -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -. -Distribution: lnorm -Parameters: - meanlog: 1.386 - sdlog: 0.568 - -[[3]] -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -. -Distribution: weibull -Parameters: - shape: 2.203 - scale: 5.420 - -[[4]] -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Yang L, Dai J, Zhao J, Wang Y, Deng P, Wang J (2020). "Estimation of -incubation period and serial interval of COVID-19: analysis of 178 -cases and 131 transmission chains in Hubei province, China." -_Epidemiology and Infection_. doi:10.1017/S0950268820001338 -. -Distribution: norm -Parameters: - mean: 4.600 - sd: 4.400 - -attr(,"class") -[1] "multi_epidist" -``` - -::::::::::::::::: callout - -### CASE-INSENSITIVE - -`epidist_db` is [case-insensitive](https://dillionmegida.com/p/case-sensitivity-vs-case-insensitivity/#case-insensitivity). This means that you can use strings with letters in upper or lower case indistinctly. - -::::::::::::::::::::::::: - -We get more than one epidemiological delay. To summarize this view and get the column names from the underlying parameter dataset, we can add the `epiparameter::list_distributions()` function to the previous code using the pipe `%>%`: - - -```r -epiparameter::epidist_db( - disease = "covid", - epi_dist = "serial" -) %>% - epiparameter::list_distributions() -``` - -```{.output} -Returning 4 results that match the criteria (3 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```{.output} - disease epi_distribution prob_distribution author year -1 COVID-19 serial interval Muluneh .... 2021 -2 COVID-19 serial interval lnorm Hiroshi .... 2020 -3 COVID-19 serial interval weibull Hiroshi .... 2020 -4 COVID-19 serial interval norm Lin Yang.... 2020 -``` - -::::::::::::::::::::::::::::::::: challenge - -### Ebola's incubation periods - -Take 5 minutes: - -- How many delay distributions are for the Ebola disease? - -- How many delay distributions are for the incubation period of Ebola? - -- Explore the library and find the disease with the delay distribution of your interest! Do you recognize the paper? - -::::::::::::::::: hint - -The `{epiparameter}` combo of `epidist_db()` plus `list_distributions()` list all the entries by: - -- disease, -- epidemiological distribution, -- the type of the probability distribution, -- author of the study, and -- year of study. - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -# 16 delays distributions -epiparameter::epidist_db( - disease = "ebola" -) - -# 5 delay distributions are for the incubation period -epiparameter::epidist_db( - disease = "ebola", - epi_dist = "incubation" -) -``` - -Now, from the output of `epiparameter::epidist_db()`, What is an [offspring distribution](../learners/reference.md#offspringdist)? - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - -## Select a single distribution - -The `epiparameter::epidist_db()` function works as a filtering or subset function. Let's use the `author` argument to filter `Hiroshi Nishiura` parameters: - - -```r -epiparameter::epidist_db( - disease = "covid", - epi_dist = "serial", - author = "Hiroshi" -) %>% - epiparameter::list_distributions() -``` - -```{.output} -Returning 2 results that match the criteria (2 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```{.output} - disease epi_distribution prob_distribution author year -1 COVID-19 serial interval lnorm Hiroshi .... 2020 -2 COVID-19 serial interval weibull Hiroshi .... 2020 -``` - -We still get more than one epidemiological parameter. We can set the `single_epidist` argument to `TRUE` to only one: - - -```r -epiparameter::epidist_db( - disease = "covid", - epi_dist = "serial", - author = "Hiroshi", - single_epidist = TRUE -) -``` - -```{.output} -Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -.. -To retrieve the short citation use the 'get_citation' function -``` - -```{.output} -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -. -Distribution: lnorm -Parameters: - meanlog: 1.386 - sdlog: 0.568 -``` - -::::::::::::::::: callout - -### How does `single_epidist` works? - -Looking at the help documentation for `?epiparameter::epidist_db()`: - -- If multiple entries match the arguments supplied and `single_epidist = TRUE`, -- Then, the parameterised `⁠`⁠ with the largest sample size will be returned. -- If multiple entries are equal after this sorting, the first entry will be returned. - -What does a parametrised `` is? Look at `?is_parameterised`. - -::::::::::::::::::::::::: - -Now, we have an epidemiological parameter we can reuse! We can replace the numbers we plug into `EpiNow2::dist_spec()`. - -Let's assign this `` class object to the `covid_serialint` object. - - -```r -covid_serialint <- - epiparameter::epidist_db( - disease = "covid", - epi_dist = "serial", - author = "Nishiura", - single_epidist = TRUE - ) -``` - -```{.output} -Using Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -.. -To retrieve the short citation use the 'get_citation' function -``` - -```r -covid_serialint -``` - -```{.output} -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -. -Distribution: lnorm -Parameters: - meanlog: 1.386 - sdlog: 0.568 -``` - -::::::::::::::::::::::::::::::::: challenge - -### Ebola's incubation period - -Take 2 minutes: - -- What type of distribution has the incubation period of Ebola with the highest sample size? -- How would you access to the sample size of the other studies in the `` class object? - -::::::::::::::::: hint - -The `{epiparameter}` combo of `epidist_db()` plus `list_distributions()` list all the entries by: - -- disease, -- epidemiological distribution, -- the type of the probability distribution, -- author of the study, and -- year of study. - -This is a `` class object: - - -```r -epiparameter::epidist_db( - disease = "ebola", - epi_dist = "incubation" -) -``` - - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -# the distribution with the highest sample size has a gamma distribution -epiparameter::epidist_db( - disease = "ebola", - epi_dist = "incubation", - single_epidist = TRUE -) -``` - -To access the `sample_size`, review an [issue reported in the GitHub repository](https://github.com/epiverse-trace/epiparameter/issues/227) of the `{epiparameter}` package. - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - -## Extract the summary statistics - -We can get the `mean` and standard deviation (`sd`) from this `` diving into the `summary_stats` object: - - -```r -# get the mean -covid_serialint$summary_stats$mean -``` - -```{.output} -[1] 4.7 -``` - -:::::::::::::::::::::::::::::: challenge - -### How to get the `sd` and other nested elements? - -Take 1 minute to: - -1. Get the `sd` of the epidemiological distribution. - -2. Find the `sample_size` used in the study. - -3. Explore all the other nested elements within the `` object. - -Share about: - -- What elements do you find useful for your analysis? -- What other elements would you like to see in this object? How? - -::::::::: hint - -Use the `$` operator plus the tab keyboard button to explore them as an expandable list: - -```r -covid_serialint$ -``` - -Use the `str()` to display the structure of the `` R object. - -:::::::::::::::::: - -:::::::::: solution - - -```r -# get the sd -covid_serialint$summary_stats$sd - -# get the sample_size -covid_serialint$metadata$sample_size -``` - -:::::::::::::::::::: - -:::::::::::::::::::::::::::::::: - -:::::::::::::::::::: intructor - -An interesting element is the `method_assess` nested entry, which refers to the methods used by the study authors to assess for bias while estimating the serial interval distribution. - - -```r -covid_serialint$method_assess -``` - -```{.output} -$censored -[1] TRUE - -$right_truncated -[1] TRUE - -$phase_bias_adjusted -[1] FALSE -``` - -We will explore these concepts at the end! - -:::::::::::::::::::::::::::::: - - -::::::::::::::::::::::::::::::::: challenge - -### Ebola's severity parameter - -A severity parameter like the duration of hospitalization could add to the information needed about the bed capacity in response to an outbreak ([Cori et al., 2017](https://royalsocietypublishing.org/doi/10.1098/rstb.2016.0371)). - -For Ebola: - -- what is a reported point estimate and uncertainty of the mean duration of health-care and case isolation? - -::::::::::::::::: hint - -An informative delay measures the time from symptom onset to recovery or death. - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -# one way to get the list of all the available parameters -epidist_db(disease = "all") %>% - list_distributions() %>% - as_tibble() %>% - distinct(epi_distribution) - -ebola_severity <- epidist_db( - disease = "ebola", - epi_dist = "onset to discharge" -) - -# point estimate -ebola_severity$summary_stats$mean -# 95% confidence intervals -ebola_severity$summary_stats$mean_ci -# limits of the confidence intervals -ebola_severity$summary_stats$mean_ci_limits -``` - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - -## Continuous distributions - -The following output has four entries with different content in the **probability distribution** (`prob_distribution`) column: - - -```r -distribution <- - epiparameter::epidist_db( - disease = "covid", - epi_dist = "serial" - ) -``` - -```{.output} -Returning 4 results that match the criteria (3 are parameterised). -Use subset to filter by entry variables or single_epidist to return a single entry. -To retrieve the short citation for each use the 'get_citation' function -``` - -```r -distribution %>% - list_distributions() -``` - -```{.output} - disease epi_distribution prob_distribution author year -1 COVID-19 serial interval Muluneh .... 2021 -2 COVID-19 serial interval lnorm Hiroshi .... 2020 -3 COVID-19 serial interval weibull Hiroshi .... 2020 -4 COVID-19 serial interval norm Lin Yang.... 2020 -``` - -Entries with a missing value (``) in the `prob_distribution` column are *non-parameterised* entries. They have summary statistics but no probability distribution. Compare these two outputs: - - -```r -distribution[[1]]$summary_stats -distribution[[1]]$prob_dist -``` - -::::::::::::::::: spoiler - -### Parameterised entries have an Inference method - -As detailed in `?is_parameterised`, a parameterised distribution is the entry that has a probability distribution associated with it provided by an `inference_method` as shown in `metadata`: - - -```r -distribution[[1]]$metadata$inference_method -distribution[[2]]$metadata$inference_method -distribution[[4]]$metadata$inference_method -``` - -::::::::::::::::::::::::: - -In the `epiparameter::list_distributions()` output, we can also find different types of probability distributions (e.g., Log-normal, Weibull, Normal). - - -```r -distribution %>% - list_distributions() -``` - -```{.output} - disease epi_distribution prob_distribution author year -1 COVID-19 serial interval Muluneh .... 2021 -2 COVID-19 serial interval lnorm Hiroshi .... 2020 -3 COVID-19 serial interval weibull Hiroshi .... 2020 -4 COVID-19 serial interval norm Lin Yang.... 2020 -``` - -In `{epiparameter}`, you will mostly find **continuous** distributions like these. You can visualize any of them with the `plot()` function and access to: - -- the *Probability Density Function (PDF)* and -- the *Cumulative Distribution Function (CDF)*. - - -```r -plot(distribution[[2]]) -``` - - - -With the `day_range` argument, you can change the length or number of days in the `x` axis. Explore what it look like: - - -```r -plot(distribution[[2]], day_range = 0:20) -``` - -::::::::::::::::: discussion - -### The distribution Zoo - -Explore this shinyapp called **The Distribution Zoo**! - -Follow these steps to reproduce the form of the `covid_serialint` distribution: - -1. Access to shinyapp website, -2. Go to the left panel, -3. Keep the *Category of distribution*: `Continuous Univariate`, -4. Select a new *Type of distribution*: `Log-Normal`, -5. Move the **sliders**, i.e. the graphical control element that allows you to adjust a value by moving a handle along a horizontal track or bar to the `covid_serialint` parameters. - -Replicate these with the `distribution` object and all its list elements: `2`, `3`, and `4`. Explore how the shape of a distribution changes when its parameters change. - -Share about: - -- What other features of the website do you find helpful? - -::::::::::::::::::::::::: - - - -## Distribution functions - -In R, all the statistical distributions have functions to access the: - -- Probability **Density** function (PDF), -- Cumulative Distribution function (**CDF**), -- **Quantile** function, and -- **Random** values from the given distribution. - -:::::::::::: spoiler - -### Functions for the Normal distribution - -If you need it, read in detail about the [R probability functions for the normal distribution](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc), each of its definitions and identify in which part of a distribution they are located! - -![The four probability functions for the normal distribution ([Jack Weiss, 2012](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc))](fig/fig5a-normaldistribution.png) - -:::::::::::::::::::: - -If you look at `?stats::Distributions`, each type of distribution has a unique set of functions. However, `{epiparameter}` gives you the same four functions to access each of the values above for any `` object you want! - - -```r -# plot this to have a visual reference -plot(covid_serialint, day_range = 0:20) -``` - - -```r -# the density value at quantile value of 10 (days) -density(covid_serialint, at = 10) -``` - -```{.output} -[1] 0.01911607 -``` - -```r -# the cumulative probability at quantile value of 10 (days) -cdf(covid_serialint, q = 10) -``` - -```{.output} -[1] 0.9466605 -``` - -```r -# the quantile value (day) at a cumulative probability of 60% -quantile(covid_serialint, p = 0.6) -``` - -```{.output} -[1] 4.618906 -``` - -```r -# generate 10 random values (days) given -# the distribution family and its parameters -generate(covid_serialint, times = 10) -``` - -```{.output} - [1] 8.646182 2.483415 4.474756 6.625099 4.690828 1.373530 3.582276 2.815552 - [9] 6.957933 2.291583 -``` - -::::::::: instructor - -Access to the reference documentation (Help files) for these functions is accessible with the three double-colon notation: `epiparameter:::` - -- `?epiparameter:::density.epidist()` -- `?epiparameter:::cdf.epidist()` -- `?epiparameter:::quantile.epidist()` -- `?epiparameter:::generate.epidist()` - -:::::::::::::::::: - -::::::::::::::::::::::::::::::::: challenge - -### Window for contact tracing and the Serial interval - -The **serial interval** is important in the optimization of contact tracing since it provides a time window for the containment of a disease spread ([Fine, 2003](https://academic.oup.com/aje/article/158/11/1039/162725)). Depending on the serial interval, we can evaluate the need to expand the number of days pre-onset to consider in the contact tracing to include more backwards contacts ([Davis et al., 2020](https://assets.publishing.service.gov.uk/media/61e9ab3f8fa8f50597fb3078/S0523_Oxford_-_Backwards_contact_tracing.pdf)). - -With the COVID-19 serial interval (`covid_serialint`) calculate: - -- How much more of the backward cases could be captured if the contact tracing method considered contacts up to 6 days pre-onset compared to 2 days pre-onset? - -::::::::::::::::: hint - -In Figure 5 from the [R probability functions for the normal distribution](https://sakai.unc.edu/access/content/group/3d1eb92e-7848-4f55-90c3-7c72a54e7e43/public/docs/lectures/lecture13.htm#probfunc), the shadowed section represents a cumulative probability of `0.997` for the quantile value at `x = 2`. - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -plot(covid_serialint) -``` - - -```r -cdf(covid_serialint, q = 2) -cdf(covid_serialint, q = 6) -``` - -Given the COVID-19 serial interval: - -- A contact tracing method considering contacts up to 2 days pre-onset will capture around 11.1% of backward cases. - -- If this period is extended to 6 days pre-onset, this could include 76.2% of backward contacts. - -:::::::::::::::::::::::::: - -::::::::::::::::: solution - -### What if - -If we exchange the question between days and cumulative probability to: - -- When considering secondary cases, how many days following the symptom onset of primary cases can we expect 55% of symptom onset to occur? - - -```r -quantile(covid_serialint, p = 0.55) -``` - -An interpretation could be: - -- The 55% percent of the symptom onset of secondary cases will happen after 4.2 days after the symptom onset of primary cases. - -:::::::::::::::::::::::::: - - -::::::::::::::::::::::::::::::::::::::::::: - - -## Discretize a continuous distribution - -We are getting closer to the end! `EpiNow2::dist_spec()` still needs a maximum value (`max`). - -One way to do this is to get the quantile value for the distribution's 99.9th percentile or `0.999` cumulative probability. For this, we need access to the set of distribution functions for our `` object. - -We can use the set of distribution functions for a _continuous_ distribution (as above). However, these values will be _continuous_ numbers. We can **discretize** the continuous distribution stored in our `` object to get discrete values from a continuous distribution. - -When we `epiparameter::discretise()` the continuous distribution we get a **discrete**(-ized) distribution: - - -```r -covid_serialint_discrete <- - epiparameter::discretise(covid_serialint) - -covid_serialint_discrete -``` - -```{.output} -Disease: COVID-19 -Pathogen: SARS-CoV-2 -Epi Distribution: serial interval -Study: Nishiura H, Linton N, Akhmetzhanov A (2020). "Serial interval of novel -coronavirus (COVID-19) infections." _International Journal of -Infectious Diseases_. doi:10.1016/j.ijid.2020.02.060 -. -Distribution: discrete lnorm -Parameters: - meanlog: 1.386 - sdlog: 0.568 -``` - -We identify this change in the `Distribution:` output line of the `` object. Take a double check to this line: - -``` -Distribution: discrete lnorm -``` - -While for a **continuous** distribution, we plot the *Probability Density Function (PDF)*, for a **discrete** distribution, we plot the *Probability Mass Function (PMF)*: - - -```r -# continuous -plot(covid_serialint) - -# discrete -plot(covid_serialint_discrete) -``` - -To finally get a `max` value, let's access the quantile value of the 99.9th percentile or `0.999` probability of the distribution with the `prob_dist$q` notation, similarly to how we access the `summary_stats` values. - - -```r -covid_serialint_discrete_max <- - covid_serialint_discrete$prob_dist$q(p = 0.999) -``` - -::::::::::::::::::::::::::::::::: challenge - -### Lenght of quarantine and Incubation period - -The **incubation period** distribution is a useful delay to assess the length of active monitoring or quarantine ([Lauer et al., 2020](https://www.acpjournals.org/doi/10.7326/M20-0504)). Similarly, delays from symptom onset to recovery (or death) will determine the required duration of health-care and case isolation ([Cori et al., 2017](https://royalsocietypublishing.org/doi/10.1098/rstb.2016.0371)). - -Calculate: - -- Within what exact time frame do 99% of individuals who develop COVID-19 symptoms exhibit them after infection? - -::::::::::::::::: hint - -What delay distribution measures the time between infection and the onset of symptoms? - -The probability function for `` **discrete** distributions differ from the *continuous* ones! - - -```r -# plot to have a visual reference -plot(covid_serialint_discrete, day_range = 0:20) - -# density value at quantile value 10 (day) -covid_serialint_discrete$prob_dist$d(10) - -# cumulative probability at quantile value 10 (day) -covid_serialint_discrete$prob_dist$cdf(10) - -# In what quantile value (days) do we have the 60% cumulative probability? -covid_serialint_discrete$prob_dist$q(0.6) - -# generate random values -covid_serialint_discrete$prob_dist$r(10) -``` - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -covid_incubation <- - epiparameter::epidist_db( - disease = "covid", - epi_dist = "incubation", - single_epidist = TRUE - ) - -covid_incubation_discrete <- epiparameter::discretise(covid_incubation) - -covid_incubation_discrete$prob_dist$q(0.99) -``` - -99% of those who develop COVID-19 symptoms will do so within 16 days of infection. - -Now, _Is this result expected in epidemiological terms?_ - -:::::::::::::::::::::::::: - -::::::::::::::::: solution - -### how to create a distribution plot? - -From a maximum value with `$prob_dist$q()`, we can create a sequence of quantile values as a numeric vector and map density values for each: - - -```r -# create a discrete distribution visualization -# from a maximum value from the distribution -covid_serialint_discrete$prob_dist$q(0.999) %>% - # generate quantile values - # as a sequence for each natural number - seq(1L, to = ., by = 1L) %>% - # coerce numeric vector to data frame - as_tibble_col(column_name = "quantile_values") %>% - mutate( - # map density values - # for each quantile in the density function - density_values = - covid_serialint_discrete$prob_dist$d(quantile_values) - ) %>% - # create plot - ggplot( - aes( - x = quantile_values, - y = density_values - ) - ) + - geom_col() -``` - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - -## Plug-in `{epiparameter}` to `{EpiNow2}` - -Now we can plug everything into the `EpiNow2::dist_spec()` function! - - -```r -serial_interval_covid <- - dist_spec( - mean = covid_serialint$summary_stats$mean, - sd = covid_serialint$summary_stats$sd, - max = covid_serialint_discrete_max, - distribution = "lognormal" - ) - -serial_interval_covid -``` - -```{.output} - - Fixed distribution with PMF [0.18 0.11 0.08 0.066 0.057 0.05 0.045 0.041 0.037 0.034 0.032 0.03 0.028 0.027 0.025 0.024 0.023 0.022 0.021 0.02 0.019 0.019 0.018] -``` - -:::::::::: callout - -### Warning - -Using the serial interval instead of the generation time is an alternative that can propagate bias in your estimates, even more so in diseases with reported pre-symptomatic transmission. - -:::::::::::::::::: - -Let's replace the `generation_time` input we used for `EpiNow2::epinow()`. - - -```r -epinow_estimates <- epinow( - # cases - reported_cases = example_confirmed[1:60], - # delays - generation_time = generation_time_opts(serial_interval_covid), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) - -base::plot(epinow_estimates) -``` - -::::::::::::::::::::::::::::::::: challenge - -### Ebola's effective reproduction number - -Download and read the [Ebola dataset](data/ebola_cases.csv): - -- Reuse one epidemiological parameter to estimate the effective reproduction number for the Ebola dataset. -- Why did you choose that parameter? - -::::::::::::::::: hint - -To calculate the $R_t$, we need: - -- data set with confirmed cases per day and -- one key delay distribution - -Key functions we applied in this episode are: - -- `epidist_db()` -- `list_distributions()` -- `discretise()` -- probability functions for continuous and discrete distributions - -:::::::::::::::::::::: - -::::::::::::::::: solution - - - - -```r -# read data -# e.g.: if path to file is data/raw-data/ebola_cases.csv then: -ebola_confirmed <- - read_csv(here::here("data", "raw-data", "ebola_cases.csv")) - -# list distributions -epidist_db(disease = "ebola") %>% - list_distributions() - -# subset one distribution -ebola_serial <- epidist_db( - disease = "ebola", - epi_dist = "serial", - single_epidist = TRUE -) - -ebola_serial_discrete <- discretise(ebola_serial) - -serial_interval_ebola <- - dist_spec( - mean = ebola_serial$summary_stats$mean, - sd = ebola_serial$summary_stats$sd, - max = ebola_serial_discrete$prob_dist$q(p = 0.999), - distribution = "gamma" - ) - -# name of the type of distribution -# only for the discretised distribution -ebola_serial_discrete$prob_dist$name - -epinow_estimates <- epinow( - # cases - reported_cases = ebola_confirmed, - # delays - generation_time = generation_time_opts(serial_interval_ebola), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) - -plot(epinow_estimates) -``` - -:::::::::::::::::::::::::: - - -::::::::::::::::::::::::::::::::::::::::::: - -## Adjusting for reporting delays - -Estimating $R_t$ requires data on the daily number of new infections. Due to lags in the development of detectable viral loads, symptom onset, seeking care, and reporting, these numbers are not readily available. All observations reflect transmission events from some time in the past. In other words, if $d$ is the delay from infection to observation, then observations at time $t$ inform $R_{t−d}$, not $R_t$. [(Gostic et al., 2020)](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409#sec007) - -![Timeline for chain of disease reporting, the Netherlands. Lab, laboratory; PHA, public health authority. From [Marinović et al., 2015](https://wwwnc.cdc.gov/eid/article/21/2/13-0504_article)](fig/disease-reporting.jpg) - -The **delay distribution** could be inferred jointly with the underlying times of infection or estimated as the sum of the **[incubation period](../learners/reference.md#incubation)** distribution and the distribution of delays from symptom onset to observation from line list data **([reporting delay](../learners/reference.md#reportingdelay))**. - -For `{EpiNow2}`, we can specify these two complementary delay distributions in the `delays` argument. - -![Rt is a measure of transmission at time t. Observations after time t must be adjusted. ICU, intensive care unit. From [Gostic et al., 2020](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409#sec007)](fig/rt-adjusting-delays.png) - -::::::::::::::::::::::::::::::::: challenge - -### Reuse an Incubation period for COVID-19 - -Use `{epiparameter}` to: - -- Find an incubation period for COVID-19. -- Add our last `epinow()` code chunk using the `delays` argument and the `delay_opts()` helper function. - -::::::::::::::::: hint - -The `delays` argument and the `delay_opts()` helper function are analogous to the `generation_time` argument and the `generation_time_opts()` helper function. - -```r -epinow_estimates <- epinow( - # cases - reported_cases = example_confirmed[1:60], - # delays - generation_time = generation_time_opts(serial_interval_covid), - delays = delay_opts(incubation_time_covid), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) -``` - -:::::::::::::::::::::: - -::::::::::::::::: solution - - -```r -covid_incubation <- epiparameter::epidist_db( - disease = "covid", - epi_dist = "incubation", - author = "Natalie", - single_epidist = TRUE -) - -covid_incubation - -covid_incubation_discrete <- epiparameter::discretise(covid_incubation) - -incubation_time_covid <- dist_spec( - mean = covid_incubation$summary_stats$mean, - sd = covid_incubation$summary_stats$sd, - max = covid_incubation_discrete$prob_dist$q(p = 0.999), - distribution = "lognormal" -) - -epinow_estimates <- epinow( - # cases - reported_cases = example_confirmed[1:60], - # delays - generation_time = generation_time_opts(serial_interval_covid), - delays = delay_opts(incubation_time_covid), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) - -base::plot(epinow_estimates) -``` - -:::::::::::::::::::::::::: - -:::::::::::::: solution - -### How much has it changed? - -After adding the incubation period, discuss: - -- Does the retrospective trend of forecast change? -- Has the uncertainty changed? -- How would you explain or interpret any of these changes? - -:::::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - -::::::::::::::::::::::::::::::::: challenge - -### Ebola's effective reproduction number was adjusted by reporting delays - -Using the same [Ebola dataset](data/ebola_cases.csv): - -- Reuse one additional epidemiological parameter for the `delays` argument in `EpiNow2::epinow()`. -- Estimate the effective reproduction number using `EpiNow2::epinow()`. -- Why did you choose that parameter? - -::::::::::::::::: hint - -We can use two complementary delay distributions to estimate the $R_t$ at time $t$. - -:::::::::::::::::::::: - -::::::::::::::::: solution - - - - -```r -# read data -# e.g.: if path to file is data/raw-data/ebola_cases.csv then: -ebola_confirmed <- - read_csv(here::here("data", "raw-data", "ebola_cases.csv")) - -# list distributions -epidist_db(disease = "ebola") %>% - list_distributions() - -# subset one distribution for the generation time -ebola_serial <- epidist_db( - disease = "ebola", - epi_dist = "serial", - single_epidist = TRUE -) - -ebola_serial_discrete <- discretise(ebola_serial) - -serial_interval_ebola <- - dist_spec( - mean = ebola_serial$summary_stats$mean, - sd = ebola_serial$summary_stats$sd, - max = ebola_serial_discrete$prob_dist$q(p = 0.999), - distribution = "gamma" - ) - -# subset one distribution for delay of the incubation period -ebola_incubation <- epidist_db( - disease = "ebola", - epi_dist = "incubation", - single_epidist = TRUE -) - -ebola_incubation_discrete <- discretise(ebola_incubation) - -incubation_period_ebola <- - dist_spec( - mean = ebola_incubation$summary_stats$mean, - sd = ebola_incubation$summary_stats$sd, - max = ebola_incubation_discrete$prob_dist$q(p = 0.999), - distribution = "gamma" - ) - -epinow_estimates <- epinow( - # cases - reported_cases = ebola_confirmed, - # delays - generation_time = generation_time_opts(serial_interval_ebola), - delays = delay_opts(incubation_period_ebola), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) - -plot(epinow_estimates) -``` - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - -::::::::::::::::::::::::::::::::: challenge - -### Extract parameters - -Use the `influenza_england_1978_school` from the `{outbreaks}` package to calculate the effective reproduction number. - -::::::::::::::::: hint - -How to get the mean and standard deviation from a generation time with median and quantiles as summary statistics? - -- Look at how to extract parameters from `{epiparameter}` vignette on [parameter extraction and conversion](https://epiverse-trace.github.io/epiparameter/articles/extract_convert.html) - -:::::::::::::::::::::: - -::::::::::::::::: solution - - - - -```r -# What parameters are available for Influenza? -epidist_db(disease = "influenza") %>% - list_distributions() %>% - as_tibble() %>% - count(epi_distribution) - -influenza_generation <- - epidist_db( - disease = "influenza", - epi_dist = "generation" - ) - -influenza_generation_discrete <- - discretise(influenza_generation) - -# problem -# the summary statistics do not have mean and sd -influenza_generation$summary_stats -influenza_generation$summary_stats$median -influenza_generation$summary_stats$quantiles - -# solution -# extract parameters from percentiles -influenza_extracted <- extract_param( - type = "percentiles", - values = c(influenza_generation$summary_stats$quantiles[1], - influenza_generation$summary_stats$quantiles[2]), - distribution = "lnorm", - percentiles = c(0.05, 0.95) -) - -influenza_extracted - -generation_time_influenza <- - dist_spec( - mean = influenza_extracted[1], - sd = influenza_extracted[2], - max = influenza_generation_discrete$prob_dist$q(p = 0.999), - distribution = "lognormal" - ) - -influenza_cleaned <- - outbreaks::influenza_england_1978_school %>% - select(date, confirm = in_bed) - -epinow_estimates <- epinow( - # cases - reported_cases = influenza_cleaned, - # delays - generation_time = generation_time_opts(generation_time_influenza), - # computation - stan = stan_opts( - cores = 4, samples = 1000, chains = 3, - control = list(adapt_delta = 0.99) - ) -) - -plot(epinow_estimates) -``` - - - - - - - - - - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - -## When to reuse? When to estimate? - -In the early stage of an outbreak, we can rely on reusing parameters for known pathogens to unknown ones, like for the [Disease X](https://en.wikipedia.org/wiki/Disease_X), a pathogen currently unknown to cause human disease and potentially cause a serious international epidemic ([WHO, 2018](https://www.who.int/activities/prioritizing-diseases-for-research-and-development-in-emergency-contexts)). - -But when data from **lines list paired with contact tracing** is available, we can estimate the key delay distributions that best fit our data. These will help us to inform, compare and update any previous estimate about questions like: - -- How long should contacts be followed? -- What is the required duration of contact tracing? -- How long should cases be isolated to reduce transmission? - -However, the methods to accurately estimate delays like the generation interval from contact tracing data involve adjusting for biases like **[censoring](../learners/reference.md#censoring)**, **[right truncation](../learners/reference.md#truncation)** and **[epidemic phase bias](../learners/reference.md#phasebias)**. [(Gostic et al., 2020)](https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1008409) - -We can identify what entries in the `{epiparameter}` library assessed for these biases in their methodology with the `method_assess` nested entry: - - -```r -covid_serialint$method_assess -``` - -```{.output} -$censored -[1] TRUE - -$right_truncated -[1] TRUE - -$phase_bias_adjusted -[1] FALSE -``` - -::::::::::::::::: testimonial - -### How to estimate delay distributions for Disease X? - -Refer to this excellent tutorial on estimating the serial interval and incubation period of Disease X accounting for *censoring* using Bayesian inference with packages like `{rstan}` and `{coarseDataTools}`. - -- Tutorial in English: -- Tutorial en Español: - -::::::::::::::::::::::::::::: - -:::::::::::::::::::::::::: spoiler - -### How to assess for pre-symptomatic infection? - -The lengths of the Serial interval and Incubation period determine the type of disease transmission. - -![The relationship between the incubation period and serial interval. From [Nishiura 2020](https://www.ijidonline.com/article/S1201-9712(20)30119-3/fulltext)](fig/incubation-period-serial-interval.jpg) - -Estimating the proportion of pre-symptomatic infections, or the extent to which infectiousness precedes symptom onset will determine the effectiveness of contact tracing and the feasibility of controlling an outbreak ([Fraser et al., 2004](https://www.pnas.org/doi/full/10.1073/pnas.0307506101) and [Hellewell et al., 2020](https://www.thelancet.com/article/S2214-109X(20)30074-7/fulltext)). - - - -![Parameter estimates. Plausible ranges for the key parameters R0 and θ (read the main text for sources) for four viral infections of public concern are shown as shaded regions. The size of the shaded area reflects the uncertainties in the parameter estimates. [Fraser et al., 2004](https://www.pnas.org/doi/10.1073/pnas.0307506101)](fig/reproduction-number-pre-symptomatic.png) - -Meta-analysis on the proportion of pre-symptomatic and asymptomatic transmission in SARS-CoV-2 found limitations of the evidence given high heterogeneity and high risk of selection and information bias between studies ([Buitrago-Garcia et al., 2022](https://journals.plos.org/plosmedicine/article/figure?id=10.1371/journal.pmed.1003987.g003)). This is a call to action to improve the Outbreak Analytic pipelines to use and reuse in the early phase of an outbreak. - -::::::::::::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::: challenge - -### What type of transmission? - -Compare the serial interval and incubation period of Influenza and MERS: - -- What type of transmission has Influenza? -- What type of transmission has MERS? -- Do these results correlate with the available evidence? - -::::::::::::::::: hint - -For types of transmission, we refer to infections with symptomatic or pre-symptomatic transmission. - -Key functions: - -- `epidist_db()` -- `epidist$summary_stats$` - -:::::::::::::::::::::: - -::::::::::::::::: solution - -In this solution we use `purrr::pluck()` to extract elements within the `summary_stats` object which is of class `list`. - - -```r -# pre-symptomatic transmission -epidist_db( - disease = "influenza", - epi_dist = "incubation", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") - -epidist_db( - disease = "influenza", - epi_dist = "serial", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") - -# symptomatic transmission -epidist_db( - disease = "mers", - epi_dist = "incubation", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("median") - -epidist_db( - disease = "mers", - epi_dist = "serial", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") -``` - - -```r -# pre-symptomatic transmission -epidist_db( - disease = "covid", - epi_dist = "incubation", - author = "Stephen", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") - -epidist_db( - disease = "covid", - epi_dist = "serial", - author = "Nishiura", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") - -# symptomatic transmission -epidist_db( - disease = "ebola", - epi_dist = "incubation", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") - -epidist_db( - disease = "ebola", - epi_dist = "serial", - single_epidist = TRUE -) %>% - pluck("summary_stats") %>% - pluck("mean") -``` - -:::::::::::::::::::::::::: - -::::::::::::::::::::::::::::::::::::::::::: - - - - -::::::::::::::::::::::::::::::::::::: keypoints - -- Use `{epiparameter}` to access the systematic review catalogue of epidemiological delay distributions. -- Use `epidist_db()` to select single delay distributions. -- Use `list_distributions()` for an overview of multiple delay distributions. -- Use `discretise()` to convert continuous to discrete delay distributions. -- Use `{epiparameter}` probability functions for any delay distributions. - -:::::::::::::::::::::::::::::::::::::::::::::::: - diff --git a/reference.md b/reference.md index a82bc12c..fbf73d9a 100644 --- a/reference.md +++ b/reference.md @@ -89,16 +89,16 @@ This can be different to the [incubation period](#incubation) as shown in Figure ## N + +[Natural history of disease]{#naturalhistory} +: Refers to the development of disease from beginning to end without any treatment or intervention. In fact, given the harmfulness of an epidemic, treatment or intervention measures are inevitable. Therefore, it is difficult for the natural history of a disease to be unaffected by the various coupling factors. ([Xiang et al, 2021](https://www.sciencedirect.com/science/article/pii/S2468042721000038)) + [Non-pharmaceutical interventions]{#NPIs} : Non-pharmaceutical interventions (NPIs) are measures put in place to reduce transmission that do not include the administration of drugs or vaccinations. [More information on NPIs](https://www.gov.uk/government/publications/technical-report-on-the-covid-19-pandemic-in-the-uk/chapter-8-non-pharmaceutical-interventions). ## O [Ordinary differential equations]{#ordinary} : Ordinary differential equations (ODEs) can be used to represent the rate of change of one variable (e.g. number of infected individuals) with respect to another (e.g. time). Check out this introduction to [ODEs](https://mathinsight.org/ordinary_differential_equation_introduction). ODEs are widely used in infectious disease modelling to model the flow of individuals between different disease states. -[Natural history of disease]{#naturalhistory} -: Refers to the development of disease from beginning to end without any treatment or intervention. In fact, given the harmfulness of an epidemic, treatment or intervention measures are inevitable. Therefore, it is difficult for the natural history of a disease to be unaffected by the various coupling factors. ([Xiang et al, 2021](https://www.sciencedirect.com/science/article/pii/S2468042721000038)) - -## O [Offspring distribution]{#offspringdist} : Distribution of the number of secondary cases caused by a particular infected individual. ([Lloyd-Smith et al., 2005](https://www.nature.com/articles/nature04153), [Endo et al., 2020](https://wellcomeopenresearch.org/articles/5-67/v3)) diff --git a/renv.lock b/renv.lock deleted file mode 100644 index c927fe0d..00000000 --- a/renv.lock +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "R": { - "Version": "4.3.3", - "Repositories": [ - { - "Name": "carpentries", - "URL": "https://carpentries.r-universe.dev" - }, - { - "Name": "carpentries_archive", - "URL": "https://carpentries.github.io/drat" - }, - { - "Name": "CRAN", - "URL": "https://cran.rstudio.com" - }, - { - "Name": "RSPM", - "URL": "https://packagemanager.posit.co/cran/latest" - } - ] - }, - "Packages": { - "BH": { - "Package": "BH", - "Version": "1.84.0-0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a8235afbcd6316e6e91433ea47661013" - }, - "DBI": { - "Package": "DBI", - "Version": "1.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "9b4993e98e0e19da84c168460c032fef" - }, - "EpiNow2": { - "Package": "EpiNow2", - "Version": "1.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "BH", - "R", - "R.utils", - "Rcpp", - "RcppEigen", - "RcppParallel", - "StanHeaders", - "data.table", - "futile.logger", - "future", - "future.apply", - "ggplot2", - "lifecycle", - "lubridate", - "methods", - "patchwork", - "progressr", - "purrr", - "rlang", - "rstan", - "rstantools", - "runner", - "scales", - "stats", - "truncnorm", - "utils" - ], - "Hash": "e40c0a2ebd62f69b953b65e9678b2ffe" - }, - "MASS": { - "Package": "MASS", - "Version": "7.3-60.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats", - "utils" - ], - "Hash": "b765b28387acc8ec9e9c1530713cb19c" - }, - "Matrix": { - "Package": "Matrix", - "Version": "1.6-5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "lattice", - "methods", - "stats", - "utils" - ], - "Hash": "8c7115cd3a0e048bda2a7cd110549f7a" - }, - "QuickJSR": { - "Package": "QuickJSR", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "Rcpp", - "jsonlite" - ], - "Hash": "765d4f4bcec02ed0663d4de3db23f6e5" - }, - "R.methodsS3": { - "Package": "R.methodsS3", - "Version": "1.8.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "278c286fd6e9e75d0c2e8f731ea445c8" - }, - "R.oo": { - "Package": "R.oo", - "Version": "1.26.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R.methodsS3", - "methods", - "utils" - ], - "Hash": "4fed809e53ddb5407b3da3d0f572e591" - }, - "R.utils": { - "Package": "R.utils", - "Version": "2.12.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R.methodsS3", - "R.oo", - "methods", - "tools", - "utils" - ], - "Hash": "3dc2829b790254bfba21e60965787651" - }, - "R6": { - "Package": "R6", - "Version": "2.5.1", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R" - ], - "Hash": "470851b6d5d0ac559e9d01bb352b4021" - }, - "RColorBrewer": { - "Package": "RColorBrewer", - "Version": "1.1-3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "45f0398006e83a5b10b72a90663d8d8c" - }, - "Rcpp": { - "Package": "Rcpp", - "Version": "1.0.12", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "utils" - ], - "Hash": "5ea2700d21e038ace58269ecdbeb9ec0" - }, - "RcppEigen": { - "Package": "RcppEigen", - "Version": "0.3.3.9.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "stats", - "utils" - ], - "Hash": "acb0a5bf38490f26ab8661b467f4f53a" - }, - "RcppParallel": { - "Package": "RcppParallel", - "Version": "5.1.7", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R" - ], - "Hash": "a45594a00f5dbb073d5ec9f48592a08a" - }, - "StanHeaders": { - "Package": "StanHeaders", - "Version": "2.32.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "RcppEigen", - "RcppParallel" - ], - "Hash": "b8d6850ef3e330bc108e712679e79443" - }, - "askpass": { - "Package": "askpass", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "sys" - ], - "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" - }, - "backports": { - "Package": "backports", - "Version": "1.4.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c39fbec8a30d23e721980b8afb31984c" - }, - "base64enc": { - "Package": "base64enc", - "Version": "0.1-3", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R" - ], - "Hash": "543776ae6848fde2f48ff3816d0628bc" - }, - "bit": { - "Package": "bit", - "Version": "4.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "d242abec29412ce988848d0294b208fd" - }, - "bit64": { - "Package": "bit64", - "Version": "4.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bit", - "methods", - "stats", - "utils" - ], - "Hash": "9fe98599ca456d6552421db0d6772d8f" - }, - "blob": { - "Package": "blob", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods", - "rlang", - "vctrs" - ], - "Hash": "40415719b5a479b87949f3aa0aee737c" - }, - "broom": { - "Package": "broom", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "backports", - "dplyr", - "ellipsis", - "generics", - "glue", - "lifecycle", - "purrr", - "rlang", - "stringr", - "tibble", - "tidyr" - ], - "Hash": "fd25391c3c4f6ecf0fa95f1e6d15378c" - }, - "bslib": { - "Package": "bslib", - "Version": "0.6.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "base64enc", - "cachem", - "grDevices", - "htmltools", - "jquerylib", - "jsonlite", - "lifecycle", - "memoise", - "mime", - "rlang", - "sass" - ], - "Hash": "c0d8599494bc7fb408cd206bbdd9cab0" - }, - "cachem": { - "Package": "cachem", - "Version": "1.0.8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "fastmap", - "rlang" - ], - "Hash": "c35768291560ce302c0a6589f92e837d" - }, - "callr": { - "Package": "callr", - "Version": "3.7.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "processx", - "utils" - ], - "Hash": "9b2191ede20fa29828139b9900922e51" - }, - "cellranger": { - "Package": "cellranger", - "Version": "1.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "rematch", - "tibble" - ], - "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" - }, - "checkmate": { - "Package": "checkmate", - "Version": "2.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "backports", - "utils" - ], - "Hash": "c01cab1cb0f9125211a6fc99d540e315" - }, - "cli": { - "Package": "cli", - "Version": "3.6.2", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "utils" - ], - "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52" - }, - "clipr": { - "Package": "clipr", - "Version": "0.8.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "3f038e5ac7f41d4ac41ce658c85e3042" - }, - "codetools": { - "Package": "codetools", - "Version": "0.2-19", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c089a619a7fae175d149d89164f8c7d8" - }, - "colorspace": { - "Package": "colorspace", - "Version": "2.1-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "methods", - "stats" - ], - "Hash": "f20c47fd52fae58b4e377c37bb8c335b" - }, - "conflicted": { - "Package": "conflicted", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "memoise", - "rlang" - ], - "Hash": "bb097fccb22d156624fd07cd2894ddb6" - }, - "countrycode": { - "Package": "countrycode", - "Version": "1.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "bbc5ab5258e5ddf38f2cd2c5a7afa860" - }, - "cpp11": { - "Package": "cpp11", - "Version": "0.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "5a295d7d963cc5035284dcdbaf334f4e" - }, - "crayon": { - "Package": "crayon", - "Version": "1.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "methods", - "utils" - ], - "Hash": "e8a1e41acf02548751f45c718d55aa6a" - }, - "curl": { - "Package": "curl", - "Version": "5.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "ce88d13c0b10fe88a37d9c59dba2d7f9" - }, - "data.table": { - "Package": "data.table", - "Version": "1.15.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "cfbbb4aed6e78cd45f17123a9ec9981a" - }, - "dbplyr": { - "Package": "dbplyr", - "Version": "2.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "DBI", - "R", - "R6", - "blob", - "cli", - "dplyr", - "glue", - "lifecycle", - "magrittr", - "methods", - "pillar", - "purrr", - "rlang", - "tibble", - "tidyr", - "tidyselect", - "utils", - "vctrs", - "withr" - ], - "Hash": "59351f28a81f0742720b85363c4fdd61" - }, - "desc": { - "Package": "desc", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "utils" - ], - "Hash": "99b79fcbd6c4d1ce087f5c5c758b384f" - }, - "digest": { - "Package": "digest", - "Version": "0.6.34", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "7ede2ee9ea8d3edbf1ca84c1e333ad1a" - }, - "distcrete": { - "Package": "distcrete", - "Version": "1.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "5ad4e98af2a8e4c63b9b394ec05c91e1" - }, - "distributional": { - "Package": "distributional", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "digest", - "farver", - "generics", - "ggplot2", - "lifecycle", - "numDeriv", - "rlang", - "scales", - "stats", - "utils", - "vctrs" - ], - "Hash": "0a94c3c917918a1c90f4609171ff41b6" - }, - "dotCall64": { - "Package": "dotCall64", - "Version": "1.1-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "80f374ef8500fcdc5d84a0345b837227" - }, - "dplyr": { - "Package": "dplyr", - "Version": "1.1.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "generics", - "glue", - "lifecycle", - "magrittr", - "methods", - "pillar", - "rlang", - "tibble", - "tidyselect", - "utils", - "vctrs" - ], - "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" - }, - "dtplyr": { - "Package": "dtplyr", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "data.table", - "dplyr", - "glue", - "lifecycle", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ], - "Hash": "54ed3ea01b11e81a86544faaecfef8e2" - }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "rlang" - ], - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" - }, - "epiparameter": { - "Package": "epiparameter", - "Version": "0.0.0.9000", - "Source": "GitHub", - "RemoteType": "github", - "RemoteUsername": "epiverse-trace", - "RemoteRepo": "epiparameter", - "RemoteRef": "HEAD", - "RemoteSha": "7c5a0fb9c732fbfe45177ef055f66e75063e460a", - "RemoteHost": "api.github.com", - "Requirements": [ - "R", - "checkmate", - "distcrete", - "distributional", - "stats", - "utils" - ], - "Hash": "024a8c8a100fcd73dcf92522d7ef2e35" - }, - "evaluate": { - "Package": "evaluate", - "Version": "0.23", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "daf4a1246be12c1fa8c7705a0935c1a0" - }, - "fansi": { - "Package": "fansi", - "Version": "1.0.6", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "grDevices", - "utils" - ], - "Hash": "962174cf2aeb5b9eea581522286a911f" - }, - "farver": { - "Package": "farver", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "8106d78941f34855c440ddb946b8f7a5" - }, - "fastmap": { - "Package": "fastmap", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "f7736a18de97dea803bde0a2daaafb27" - }, - "fields": { - "Package": "fields", - "Version": "15.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "maps", - "methods", - "spam", - "viridisLite" - ], - "Hash": "66fa5a16464666772f4929f8f5b2fc71" - }, - "fontawesome": { - "Package": "fontawesome", - "Version": "0.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "htmltools", - "rlang" - ], - "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" - }, - "forcats": { - "Package": "forcats", - "Version": "1.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "magrittr", - "rlang", - "tibble" - ], - "Hash": "1a0a9a3d5083d0d573c4214576f1e690" - }, - "formatR": { - "Package": "formatR", - "Version": "1.14", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "63cb26d12517c7863f5abb006c5e0f25" - }, - "fs": { - "Package": "fs", - "Version": "1.6.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "47b5f30c720c23999b913a1a635cf0bb" - }, - "futile.logger": { - "Package": "futile.logger", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "futile.options", - "lambda.r", - "utils" - ], - "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e" - }, - "futile.options": { - "Package": "futile.options", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b" - }, - "future": { - "Package": "future", - "Version": "1.33.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "digest", - "globals", - "listenv", - "parallel", - "parallelly", - "utils" - ], - "Hash": "e57e292737f7a4efa9d8a91c5908222c" - }, - "future.apply": { - "Package": "future.apply", - "Version": "1.11.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "future", - "globals", - "parallel", - "utils" - ], - "Hash": "455e00c16ec193c8edcf1b2b522b3288" - }, - "gargle": { - "Package": "gargle", - "Version": "1.5.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "fs", - "glue", - "httr", - "jsonlite", - "lifecycle", - "openssl", - "rappdirs", - "rlang", - "stats", - "utils", - "withr" - ], - "Hash": "fc0b272e5847c58cd5da9b20eedbd026" - }, - "generics": { - "Package": "generics", - "Version": "0.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "15e9634c0fcd294799e9b2e929ed1b86" - }, - "ggplot2": { - "Package": "ggplot2", - "Version": "3.4.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "MASS", - "R", - "cli", - "glue", - "grDevices", - "grid", - "gtable", - "isoband", - "lifecycle", - "mgcv", - "rlang", - "scales", - "stats", - "tibble", - "vctrs", - "withr" - ], - "Hash": "313d31eff2274ecf4c1d3581db7241f9" - }, - "globals": { - "Package": "globals", - "Version": "0.16.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "codetools" - ], - "Hash": "baa9585ab4ce47a9f4618e671778cc6f" - }, - "glue": { - "Package": "glue", - "Version": "1.7.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "methods" - ], - "Hash": "e0b3a53876554bd45879e596cdb10a52" - }, - "googledrive": { - "Package": "googledrive", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "gargle", - "glue", - "httr", - "jsonlite", - "lifecycle", - "magrittr", - "pillar", - "purrr", - "rlang", - "tibble", - "utils", - "uuid", - "vctrs", - "withr" - ], - "Hash": "e99641edef03e2a5e87f0a0b1fcc97f4" - }, - "googlesheets4": { - "Package": "googlesheets4", - "Version": "1.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cellranger", - "cli", - "curl", - "gargle", - "glue", - "googledrive", - "httr", - "ids", - "lifecycle", - "magrittr", - "methods", - "purrr", - "rematch2", - "rlang", - "tibble", - "utils", - "vctrs", - "withr" - ], - "Hash": "d6db1667059d027da730decdc214b959" - }, - "gridExtra": { - "Package": "gridExtra", - "Version": "2.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grDevices", - "graphics", - "grid", - "gtable", - "utils" - ], - "Hash": "7d7f283939f563670a697165b2cf5560" - }, - "gtable": { - "Package": "gtable", - "Version": "0.3.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "grid", - "lifecycle", - "rlang" - ], - "Hash": "b29cf3031f49b04ab9c852c912547eef" - }, - "haven": { - "Package": "haven", - "Version": "2.5.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "cpp11", - "forcats", - "hms", - "lifecycle", - "methods", - "readr", - "rlang", - "tibble", - "tidyselect", - "vctrs" - ], - "Hash": "9171f898db9d9c4c1b2c745adc2c1ef1" - }, - "highr": { - "Package": "highr", - "Version": "0.10", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "xfun" - ], - "Hash": "06230136b2d2b9ba5805e1963fa6e890" - }, - "hms": { - "Package": "hms", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "lifecycle", - "methods", - "pkgconfig", - "rlang", - "vctrs" - ], - "Hash": "b59377caa7ed00fa41808342002138f9" - }, - "htmltools": { - "Package": "htmltools", - "Version": "0.5.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "base64enc", - "digest", - "ellipsis", - "fastmap", - "grDevices", - "rlang", - "utils" - ], - "Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f" - }, - "httr": { - "Package": "httr", - "Version": "1.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "curl", - "jsonlite", - "mime", - "openssl" - ], - "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" - }, - "ids": { - "Package": "ids", - "Version": "1.0.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "openssl", - "uuid" - ], - "Hash": "99df65cfef20e525ed38c3d2577f7190" - }, - "inline": { - "Package": "inline", - "Version": "0.3.19", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "methods" - ], - "Hash": "1deaf1de3eac7e1d3377954b3a283652" - }, - "isoband": { - "Package": "isoband", - "Version": "0.2.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "grid", - "utils" - ], - "Hash": "0080607b4a1a7b28979aecef976d8bc2" - }, - "jquerylib": { - "Package": "jquerylib", - "Version": "0.1.4", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "htmltools" - ], - "Hash": "5aab57a3bd297eee1c1d862735972182" - }, - "jsonlite": { - "Package": "jsonlite", - "Version": "1.8.8", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "methods" - ], - "Hash": "e1b9c55281c5adc4dd113652d9e26768" - }, - "knitr": { - "Package": "knitr", - "Version": "1.45", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "evaluate", - "highr", - "methods", - "tools", - "xfun", - "yaml" - ], - "Hash": "1ec462871063897135c1bcbe0fc8f07d" - }, - "labeling": { - "Package": "labeling", - "Version": "0.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "graphics", - "stats" - ], - "Hash": "b64ec208ac5bc1852b285f665d6368b3" - }, - "lambda.r": { - "Package": "lambda.r", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "formatR" - ], - "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad" - }, - "lattice": { - "Package": "lattice", - "Version": "0.22-5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics", - "grid", - "stats", - "utils" - ], - "Hash": "7c5e89f04e72d6611c77451f6331a091" - }, - "lifecycle": { - "Package": "lifecycle", - "Version": "1.0.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "rlang" - ], - "Hash": "b8552d117e1b808b09a832f589b79035" - }, - "listenv": { - "Package": "listenv", - "Version": "0.9.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "e2fca3e12e4db979dccc6e519b10a7ee" - }, - "loo": { - "Package": "loo", - "Version": "2.6.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "checkmate", - "matrixStats", - "parallel", - "stats" - ], - "Hash": "e5c8f41731502a0e98f353da23f7ca30" - }, - "lubridate": { - "Package": "lubridate", - "Version": "1.9.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "generics", - "methods", - "timechange" - ], - "Hash": "680ad542fbcf801442c83a6ac5a2126c" - }, - "magrittr": { - "Package": "magrittr", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R" - ], - "Hash": "7ce2733a9826b3aeb1775d56fd305472" - }, - "maps": { - "Package": "maps", - "Version": "3.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "graphics", - "utils" - ], - "Hash": "5f7886e53a3b39d4a110c7bd7fce9164" - }, - "matrixStats": { - "Package": "matrixStats", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "33a3ca9e732b57244d14f5d732ffc9eb" - }, - "memoise": { - "Package": "memoise", - "Version": "2.0.1", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "cachem", - "rlang" - ], - "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" - }, - "mgcv": { - "Package": "mgcv", - "Version": "1.9-1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Matrix", - "R", - "graphics", - "methods", - "nlme", - "splines", - "stats", - "utils" - ], - "Hash": "110ee9d83b496279960e162ac97764ce" - }, - "mime": { - "Package": "mime", - "Version": "0.12", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "tools" - ], - "Hash": "18e9c28c1d3ca1560ce30658b22ce104" - }, - "modelr": { - "Package": "modelr", - "Version": "0.1.11", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "broom", - "magrittr", - "purrr", - "rlang", - "tibble", - "tidyr", - "tidyselect", - "vctrs" - ], - "Hash": "4f50122dc256b1b6996a4703fecea821" - }, - "munsell": { - "Package": "munsell", - "Version": "0.5.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "colorspace", - "methods" - ], - "Hash": "6dfe8bf774944bd5595785e3229d8771" - }, - "nlme": { - "Package": "nlme", - "Version": "3.1-164", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "graphics", - "lattice", - "stats", - "utils" - ], - "Hash": "a623a2239e642806158bc4dc3f51565d" - }, - "numDeriv": { - "Package": "numDeriv", - "Version": "2016.8-1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "df58958f293b166e4ab885ebcad90e02" - }, - "oai": { - "Package": "oai", - "Version": "0.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "httr", - "plyr", - "stringr", - "tibble", - "xml2" - ], - "Hash": "2decae573db4fc6a7798721eb5326c10" - }, - "openssl": { - "Package": "openssl", - "Version": "2.1.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "askpass" - ], - "Hash": "2a0dc8c6adfb6f032e4d4af82d258ab5" - }, - "parallelly": { - "Package": "parallelly", - "Version": "1.36.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "parallel", - "tools", - "utils" - ], - "Hash": "bca377e1c87ec89ebed77bba00635b2e" - }, - "patchwork": { - "Package": "patchwork", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cli", - "ggplot2", - "grDevices", - "graphics", - "grid", - "gtable", - "rlang", - "stats", - "utils" - ], - "Hash": "9c8ab14c00ac07e9e04d1664c0b74486" - }, - "pillar": { - "Package": "pillar", - "Version": "1.9.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "cli", - "fansi", - "glue", - "lifecycle", - "rlang", - "utf8", - "utils", - "vctrs" - ], - "Hash": "15da5a8412f317beeee6175fbc76f4bb" - }, - "pkgbuild": { - "Package": "pkgbuild", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "callr", - "cli", - "desc", - "processx" - ], - "Hash": "c0143443203205e6a2760ce553dafc24" - }, - "pkgconfig": { - "Package": "pkgconfig", - "Version": "2.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "utils" - ], - "Hash": "01f28d4278f15c76cddbea05899c5d6f" - }, - "plyr": { - "Package": "plyr", - "Version": "1.8.9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp" - ], - "Hash": "6b8177fd19982f0020743fadbfdbd933" - }, - "prettyunits": { - "Package": "prettyunits", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "6b01fc98b1e86c4f705ce9dcfd2f57c7" - }, - "processx": { - "Package": "processx", - "Version": "3.8.3", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "R6", - "ps", - "utils" - ], - "Hash": "82d48b1aec56084d9438dbf98087a7e9" - }, - "progress": { - "Package": "progress", - "Version": "1.2.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "crayon", - "hms", - "prettyunits" - ], - "Hash": "f4625e061cb2865f111b47ff163a5ca6" - }, - "progressr": { - "Package": "progressr", - "Version": "0.14.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "digest", - "utils" - ], - "Hash": "ac50c4ffa8f6a46580dd4d7813add3c4" - }, - "ps": { - "Package": "ps", - "Version": "1.7.6", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "dd2b9319ee0656c8acf45c7f40c59de7" - }, - "purrr": { - "Package": "purrr", - "Version": "1.0.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "lifecycle", - "magrittr", - "rlang", - "vctrs" - ], - "Hash": "1cba04a4e9414bdefc9dcaa99649a8dc" - }, - "ragg": { - "Package": "ragg", - "Version": "1.2.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "systemfonts", - "textshaping" - ], - "Hash": "90a1b8b7e518d7f90480d56453b4d062" - }, - "rappdirs": { - "Package": "rappdirs", - "Version": "0.3.3", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R" - ], - "Hash": "5e3c5dc0b071b21fa128676560dbe94d" - }, - "readr": { - "Package": "readr", - "Version": "2.1.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "cli", - "clipr", - "cpp11", - "crayon", - "hms", - "lifecycle", - "methods", - "rlang", - "tibble", - "tzdb", - "utils", - "vroom" - ], - "Hash": "9de96463d2117f6ac49980577939dfb3" - }, - "readxl": { - "Package": "readxl", - "Version": "1.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cellranger", - "cpp11", - "progress", - "tibble", - "utils" - ], - "Hash": "8cf9c239b96df1bbb133b74aef77ad0a" - }, - "rematch": { - "Package": "rematch", - "Version": "2.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "cbff1b666c6fa6d21202f07e2318d4f1" - }, - "rematch2": { - "Package": "rematch2", - "Version": "2.1.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "tibble" - ], - "Hash": "76c9e04c712a05848ae7a23d2f170a40" - }, - "reprex": { - "Package": "reprex", - "Version": "2.1.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "callr", - "cli", - "clipr", - "fs", - "glue", - "knitr", - "lifecycle", - "rlang", - "rmarkdown", - "rstudioapi", - "utils", - "withr" - ], - "Hash": "1425f91b4d5d9a8f25352c44a3d914ed" - }, - "rlang": { - "Package": "rlang", - "Version": "1.1.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "utils" - ], - "Hash": "42548638fae05fd9a9b5f3f437fbbbe2" - }, - "rmarkdown": { - "Package": "rmarkdown", - "Version": "2.25", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bslib", - "evaluate", - "fontawesome", - "htmltools", - "jquerylib", - "jsonlite", - "knitr", - "methods", - "stringr", - "tinytex", - "tools", - "utils", - "xfun", - "yaml" - ], - "Hash": "d65e35823c817f09f4de424fcdfa812a" - }, - "rstan": { - "Package": "rstan", - "Version": "2.32.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "BH", - "QuickJSR", - "R", - "Rcpp", - "RcppEigen", - "RcppParallel", - "StanHeaders", - "ggplot2", - "gridExtra", - "inline", - "loo", - "methods", - "pkgbuild", - "stats4" - ], - "Hash": "378a10b6373822761ec78021c105b059" - }, - "rstantools": { - "Package": "rstantools", - "Version": "2.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "Rcpp", - "RcppParallel", - "desc", - "stats", - "utils" - ], - "Hash": "23813e635fcd210c33e154aa46d0a21a" - }, - "rstudioapi": { - "Package": "rstudioapi", - "Version": "0.15.0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "5564500e25cffad9e22244ced1379887" - }, - "runner": { - "Package": "runner", - "Version": "0.4.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "methods", - "parallel" - ], - "Hash": "468ad9a689459cd083a686232eb3ea31" - }, - "rvest": { - "Package": "rvest", - "Version": "1.0.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "httr", - "lifecycle", - "magrittr", - "rlang", - "selectr", - "tibble", - "withr", - "xml2" - ], - "Hash": "a4a5ac819a467808c60e36e92ddf195e" - }, - "sass": { - "Package": "sass", - "Version": "0.4.8", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "fs", - "htmltools", - "rappdirs", - "rlang" - ], - "Hash": "168f9353c76d4c4b0a0bbf72e2c2d035" - }, - "scales": { - "Package": "scales", - "Version": "1.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "RColorBrewer", - "cli", - "farver", - "glue", - "labeling", - "lifecycle", - "munsell", - "rlang", - "viridisLite" - ], - "Hash": "c19df082ba346b0ffa6f833e92de34d1" - }, - "selectr": { - "Package": "selectr", - "Version": "0.4-2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "methods", - "stringr" - ], - "Hash": "3838071b66e0c566d55cc26bd6e27bf4" - }, - "socialmixr": { - "Package": "socialmixr", - "Version": "0.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "countrycode", - "curl", - "data.table", - "fields", - "grDevices", - "httr", - "jsonlite", - "lubridate", - "oai", - "wpp2017", - "xml2" - ], - "Hash": "216ff8ff8fd4793dc7e80d69fa955671" - }, - "spam": { - "Package": "spam", - "Version": "2.10-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "Rcpp", - "dotCall64", - "grid", - "methods" - ], - "Hash": "ffe1f9e95a4375530747b268f82b5086" - }, - "stringi": { - "Package": "stringi", - "Version": "1.8.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "stats", - "tools", - "utils" - ], - "Hash": "058aebddea264f4c99401515182e656a" - }, - "stringr": { - "Package": "stringr", - "Version": "1.5.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "magrittr", - "rlang", - "stringi", - "vctrs" - ], - "Hash": "960e2ae9e09656611e0b8214ad543207" - }, - "sys": { - "Package": "sys", - "Version": "3.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3a1be13d68d47a8cd0bfd74739ca1555" - }, - "systemfonts": { - "Package": "systemfonts", - "Version": "1.0.5", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "15b594369e70b975ba9f064295983499" - }, - "textshaping": { - "Package": "textshaping", - "Version": "0.3.7", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "cpp11", - "systemfonts" - ], - "Hash": "997aac9ad649e0ef3b97f96cddd5622b" - }, - "tibble": { - "Package": "tibble", - "Version": "3.2.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "fansi", - "lifecycle", - "magrittr", - "methods", - "pillar", - "pkgconfig", - "rlang", - "utils", - "vctrs" - ], - "Hash": "a84e2cc86d07289b3b6f5069df7a004c" - }, - "tidyr": { - "Package": "tidyr", - "Version": "1.3.1", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "cpp11", - "dplyr", - "glue", - "lifecycle", - "magrittr", - "purrr", - "rlang", - "stringr", - "tibble", - "tidyselect", - "utils", - "vctrs" - ], - "Hash": "915fb7ce036c22a6a33b5a8adb712eb1" - }, - "tidyselect": { - "Package": "tidyselect", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "rlang", - "vctrs", - "withr" - ], - "Hash": "79540e5fcd9e0435af547d885f184fd5" - }, - "tidyverse": { - "Package": "tidyverse", - "Version": "2.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "broom", - "cli", - "conflicted", - "dbplyr", - "dplyr", - "dtplyr", - "forcats", - "ggplot2", - "googledrive", - "googlesheets4", - "haven", - "hms", - "httr", - "jsonlite", - "lubridate", - "magrittr", - "modelr", - "pillar", - "purrr", - "ragg", - "readr", - "readxl", - "reprex", - "rlang", - "rstudioapi", - "rvest", - "stringr", - "tibble", - "tidyr", - "xml2" - ], - "Hash": "c328568cd14ea89a83bd4ca7f54ae07e" - }, - "timechange": { - "Package": "timechange", - "Version": "0.3.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "c5f3c201b931cd6474d17d8700ccb1c8" - }, - "tinytex": { - "Package": "tinytex", - "Version": "0.49", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "xfun" - ], - "Hash": "5ac22900ae0f386e54f1c307eca7d843" - }, - "truncnorm": { - "Package": "truncnorm", - "Version": "1.0-9", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "ef5b32c5194351ff409dfb37ca9468f1" - }, - "tzdb": { - "Package": "tzdb", - "Version": "0.4.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cpp11" - ], - "Hash": "f561504ec2897f4d46f0c7657e488ae1" - }, - "utf8": { - "Package": "utf8", - "Version": "1.2.4", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "62b65c52671e6665f803ff02954446e9" - }, - "uuid": { - "Package": "uuid", - "Version": "1.2-0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "303c19bfd970bece872f93a824e323d9" - }, - "vctrs": { - "Package": "vctrs", - "Version": "0.6.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "cli", - "glue", - "lifecycle", - "rlang" - ], - "Hash": "c03fa420630029418f7e6da3667aac4a" - }, - "viridisLite": { - "Package": "viridisLite", - "Version": "0.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R" - ], - "Hash": "c826c7c4241b6fc89ff55aaea3fa7491" - }, - "vroom": { - "Package": "vroom", - "Version": "1.6.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "bit64", - "cli", - "cpp11", - "crayon", - "glue", - "hms", - "lifecycle", - "methods", - "progress", - "rlang", - "stats", - "tibble", - "tidyselect", - "tzdb", - "vctrs", - "withr" - ], - "Hash": "390f9315bc0025be03012054103d227c" - }, - "withr": { - "Package": "withr", - "Version": "3.0.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "grDevices", - "graphics" - ], - "Hash": "d31b6c62c10dcf11ec530ca6b0dd5d35" - }, - "wpp2017": { - "Package": "wpp2017", - "Version": "1.2-3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "data.table" - ], - "Hash": "ee42417b66554b8fb1ab000b6a7a6588" - }, - "xfun": { - "Package": "xfun", - "Version": "0.41", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "stats", - "tools" - ], - "Hash": "460a5e0fe46a80ef87424ad216028014" - }, - "xml2": { - "Package": "xml2", - "Version": "1.3.6", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "R", - "cli", - "methods", - "rlang" - ], - "Hash": "1d0336142f4cd25d8d23cd3ba7a8fb61" - }, - "yaml": { - "Package": "yaml", - "Version": "2.3.8", - "Source": "Repository", - "Repository": "RSPM", - "Hash": "29240487a071f535f5e5d5a323b7afbd" - } - } -}