custom_likelihoods: Customise likelihood functions for outbreaker

View source: R/custom_likelihoods.R

custom_likelihoodsR Documentation

Customise likelihood functions for outbreaker


This function is used to specify customised likelihood functions for outbreaker. Custom functions are specified as a named list or series of comma-separated, named arguments, indicating which log-likelihood component they compute. Values currently available are:



## S3 method for class 'custom_likelihoods'
print(x, ...)



a named list of functions, each computing a log-likelihood component.


an outbreaker_config object as returned by create_config.


  • genetic: the genetic likelihood; by default, the function cpp_ll_genetic is used.

  • timing_sampling: the likelihood of sampling times; by default, the function cpp_ll_timing_sampling is used.

  • timing_infections: the likelihood of infection times; by default, the function cpp_ll_timing_infections is used.

  • reporting: the likelihood of the reporting process; by default, the function cpp_ll_reporting is used.

  • contact: the likelihood of the contact tracing data; by default, the function cpp_ll_contact is used.

All log-likelihood functions should have the following arguments, in this order:

  • data: a list of named items containing input data as returned by outbreaker_data

  • param: a list of parameters with the class create_param


A named list of list(function, arity) pairs with the class custom_likelihood, each function implementing a customised log-likelihood component of outbreaker. Functions which are not customised will result in a list(NULL, 0) component. Any function with arity 3 must have the third parameter default to NULL.

a list of named functions


Thibaut Jombart (

See Also

See customization vignette for detailed examples on how to customize likelihoods.


## specify a null model by disabling all likelihood components
f_null <- function(data, param) {

null_model <- custom_likelihoods(genetic = f_null,
                                timing_sampling = f_null,
                                timing_infections = f_null,
                                reporting = f_null,
                                contact = f_null)

null_config <- list(find_import = FALSE,
                    n_iter = 100,
                    sample_every = 1)

## load data
x <- fake_outbreak
data <- outbreaker_data(dates = x$sample, dna = x$dna, w_dens = x$w)

res_null <- outbreaker(data = data,
                       config = null_config,
                       likelihoods = null_model)

## visualise ancestries to see if all transmission trees have been explored
plot(res_null, type = "alpha")

outbreaker2 documentation built on May 23, 2022, 5:06 p.m.