knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.width=7, fig.height=5, fig.path="figs-overview/" )

This package contains two functions useful to compute the incubation period
distribution from outbreak data. The inputs needed for each patient are given as
a `data.frame`

or `linelist`

object and must contain:

- the date of onset of symptoms
- a list/vector of possible dates of exposure.

The function `empirical_incubation_dist()`

computes the discrete probability
distribution by giving equal weight to each patient. Thus, in the case of `N`

patients, the `n`

possible exposure dates of a given patient get the overall
weight `1/(n*N)`

. The function returns a data frame with column
`incubation_period`

containing the different incubation periods with a time step
of one day and their `relative_frequency`

.

The function `fit_gamma_incubation_dist()`

takes the same inputs, but directly
samples from the empirical distribution and fits a discrete gamma distribution
to it by the means of `fit_disc_gamma`

.

Load environment:

library(magrittr) library(epitrix) library(distcrete) library(ggplot2)

Make a linelist object containing toy data with several possible exposure dates for each case:

ll <- sim_linelist(15) x <- 0:15 y <- distcrete("gamma", 1, shape = 12, rate = 3, w = 0)$d(x) mkexposures <- function(i) { i - sample(x, size = sample.int(5, size = 1), replace = FALSE, prob = y) } exposures <- sapply(ll$date_of_onset, mkexposures) ll$dates_exposure <- exposures print(ll)

Empirical distribution:

incubation_period_dist <- empirical_incubation_dist(ll, date_of_onset, dates_exposure) print(incubation_period_dist) ggplot(incubation_period_dist, aes(incubation_period, relative_frequency)) + geom_col()

Fit discrete gamma:

fit <- fit_gamma_incubation_dist(ll, date_of_onset, dates_exposure) print(fit) x = c(0:10) y = fit$distribution$d(x) ggplot(data.frame(x = x, y = y), aes(x, y)) + geom_col(data = incubation_period_dist, aes(incubation_period, relative_frequency)) + geom_point(stat="identity", col = "red", size = 3) + geom_line(stat="identity", col = "red")

**Note** that if the possible exposure dates are consecutive for all patients then `empirical_incubation_dist()`

and `fit_gamma_incubation_dist()`

can take date ranges as inputs instead of lists of individual exposure dates (see help for details).

**Any scripts or data that you put into this service are public.**

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.