Calculates the log-likelihood of a set of cross-sectional antibody response
data, for a given incidence rate (lambda
) value.
Usage
log_likelihood(
lambda,
pop_data,
curve_params,
noise_params,
antigen_isos = get_biomarker_levels(pop_data),
verbose = FALSE,
...
)
Arguments
- lambda
a numeric vector of incidence parameters, in events per person-year
- pop_data
a
data.frame()
with cross-sectional serology data by antibody and age, and additional columns- curve_params
a
data.frame()
containing MCMC samples of parameters from the Bayesian posterior distribution of a longitudinal decay curve model. The parameter columns must be named:antigen_iso
: acharacter()
vector indicating antigen-isotype combinationsiter
: aninteger()
vector indicating MCMC sampling iterationsy0
: baseline antibody level at $t=0$ ($y(t=0)$)y1
: antibody peak level (ELISA units)t1
: duration of infectionalpha
: antibody decay rate (1/days for the current longitudinal parameter sets)r
: shape factor of antibody decay
- noise_params
a
data.frame()
(ortibble::tibble()
) containing the following variables, specifying noise parameters for each antigen isotype:antigen_iso
: antigen isotype whose noise parameters are being specified on each rownu
: biological noiseeps
: measurement noisey.low
: lower limit of detection for the current antigen isotypey.high
: upper limit of detection for the current antigen isotype
- antigen_isos
Character vector listing one or more antigen isotypes. Values must match
pop_data
.- verbose
logical: if TRUE, print verbose log information to console
- ...
additional arguments passed to other functions (not currently used).
Examples
library(dplyr)
library(tibble)
# load in longitudinal parameters
dmcmc <- load_curve_params("https://osf.io/download/rtw5k")
xs_data <- "https://osf.io/download//n6cp3/" %>%
load_pop_data()
# Load noise params
cond <- tibble(
antigen_iso = c("HlyE_IgG", "HlyE_IgA"),
nu = c(0.5, 0.5), # Biologic noise (nu)
eps = c(0, 0), # M noise (eps)
y.low = c(1, 1), # low cutoff (llod)
y.high = c(5e6, 5e6)
) # high cutoff (y.high)
# Calculate log-likelihood
ll_AG <- log_likelihood(
pop_data = xs_data,
curve_params = dmcmc,
noise_params = cond,
antigen_isos = c("HlyE_IgG", "HlyE_IgA"),
lambda = 0.1
) %>% print()
#> [1] -9268.824