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 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.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.