library(epigrowthfit)
options(warn = 2L, error = if (interactive()) recover)
latent <- c(0.026, 0.104, 0.182, 0.246, 0.318, 0.104,
0.013, 0.004, 0.003)
m <- length(latent)
infectious <- c(0.138, 0.462, 0.256, 0.078, 0.041, 0.007,
0.004, 0.004, 0.006, 0.004)
n <- length(infectious)
## dgi #################################################################
dgi1 <- function(x) dgi(x = x, latent = latent, infectious = infectious)
stopifnot(exprs = {
## Supported on interval [1, m + n)
identical(dgi1(c(1 - 1e-06, m + n)), c(0, 0))
## Constant on intervals [i, i+1)
identical(dgi1(seq_len(m + n - 1L)),
dgi1(seq_len(m + n - 1L) + runif(m + n - 1L, 0, 1)))
## Integrates to 1
all.equal(sum(dgi1(seq_len(m + n - 1L))), 1)
})
## rgi #################################################################
set.seed(411422L)
x <- rgi(1e+06L, latent = latent, infectious = infectious)
x.bin <- .bincode(x, breaks = seq_len(m + n), right = FALSE)
stopifnot(!anyNA(x.bin))
freqs <- tabulate(x.bin, m + n - 1L) / length(x.bin)
probs <- dgi(seq_len(m + n - 1L), latent = latent, infectious = infectious)
stopifnot(all.equal(freqs, probs, tolerance = 1e-02))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.