log_likelihood {serocalculator}R Documentation

Calculate log-likelihood

Description

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,
  antigen_isos,
  curve_params,
  noise_params,
  verbose = FALSE,
  ...
)

Arguments

lambda

numeric() incidence parameter, in events per person-year

pop_data

a data.frame() with cross-sectional serology data per antibody and age, and additional columns

antigen_isos

Character vector listing one or more antigen isotypes. Values must match pop_data.

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: a character() vector indicating antigen-isotype combinations

  • iter: an integer() vector indicating MCMC sampling iterations

  • y0: baseline antibody level at t=0 (y(t=0))

  • y1: antibody peak level (ELISA units)

  • t1: duration of infection

  • alpha: antibody decay rate (1/days for the current longitudinal parameter sets)

  • r: shape factor of antibody decay

noise_params

a data.frame() (or tibble::tibble()) containing the following variables, specifying noise parameters for each antigen isotype:

  • antigen_iso: antigen isotype whose noise parameters are being specified on each row

  • nu: biological noise

  • eps: measurement noise

  • y.low: lower limit of detection for the current antigen isotype

  • y.high: upper limit of detection for the current antigen isotype

verbose

logical: if TRUE, print verbose log information to console

...

additional arguments passed to other functions (not currently used).

Value

the log-likelihood of the data with the current parameter values

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() %>%
clean_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()


[Package serocalculator version 1.0.3 Index]