Title: | Bayesian Inference from Count Data using Discrete Uniform Priors |
---|---|
Description: | We consider a set of sample counts obtained by sampling arbitrary fractions of a finite volume containing an homogeneously dispersed population of identical objects. This package implements a Bayesian derivation of the posterior probability distribution of the population size using a binomial likelihood and non-conjugate, discrete uniform priors under sampling with or without replacement. This can be used for a variety of statistical problems involving absolute quantification under uncertainty. See Comoglio et al. (2013) <doi:10.1371/journal.pone.0074388>. |
Authors: | Federico Comoglio [aut, cre], Maurizio Rinaldi [aut] |
Maintainer: | Federico Comoglio <[email protected]> |
License: | GPL-2 |
Version: | 1.2.1 |
Built: | 2024-11-17 03:39:24 UTC |
Source: | https://github.com/federicocomoglio/dupir |
This package allows to infer population sizes using a binomial likelihood and least informative discrete uniform priors.
Federico Comoglio [email protected]
Maurizio Rinaldi
Comoglio F, Fracchia L, Rinaldi M (2013) Bayesian Inference from Count Data Using Discrete Uniform Priors. PLoS ONE 8(10): e74388
Compute ECDF (empirical cumulative distribution function)
compute_ecdf(posterior)
compute_ecdf(posterior)
posterior |
numeric vector of posterior probabilities over the prior support |
numeric vector with empirical cumulative distribution function
(cumulative sum of posterior
)
Compute normalization constant
compute_normalization_constant(counts, n_start, n_end, f_product)
compute_normalization_constant(counts, n_start, n_end, f_product)
counts |
integer vector of counts |
n_start |
start of prior support range |
n_end |
end of prior support range |
f_product |
product of (1- |
normalization constant to compute posterior density
Counts
Compute the posterior probability distribution of the population size using a discrete uniform prior and a binomial likelihood ("dup" algorithm, Comoglio et al.). An approximation using a Gamma prior and a Poisson likelihood is used when applicable ("gamma" algorithm) method (see Clough et al. for details)
compute_posterior( object, n_start, n_end, replacement = FALSE, b = 1e-10, alg = "dup" )
compute_posterior( object, n_start, n_end, replacement = FALSE, b = 1e-10, alg = "dup" )
object |
object of class |
n_start |
start of prior support range |
n_end |
end of prior support range |
replacement |
was sampling performed with replacement? Default to FALSE |
b |
prior rate parameter of the gamma distribution used to compute the posterior with Clough. Default to 1e-10 |
alg |
algorithm to be used to compute posterior. One of ... . Default to "dup" |
an object of class Counts
Federico Comoglio
Comoglio F, Fracchia L and Rinaldi M (2013) Bayesian inference from count data using discrete uniform priors. PLoS ONE 8(10): e74388
Clough HE et al. (2005) Quantifying Uncertainty Associated with Microbial Count Data: A Bayesian Approach. Biometrics 61: 610-616
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) # custom prior support ("dup" algorithm) posterior <- compute_posterior(counts, n_start = 0, n_end = 1e3) # gamma prior ("gamma" algorithm) posterior <- compute_posterior(counts, alg = "gamma") # sampling with replacement posterior <- compute_posterior(counts, replacement = TRUE)
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) # custom prior support ("dup" algorithm) posterior <- compute_posterior(counts, n_start = 0, n_end = 1e3) # gamma prior ("gamma" algorithm) posterior <- compute_posterior(counts, alg = "gamma") # sampling with replacement posterior <- compute_posterior(counts, replacement = TRUE)
Compute posterior probability with replacement
compute_posterior_with_replacement(n, counts, f_product, denominator)
compute_posterior_with_replacement(n, counts, f_product, denominator)
n |
integer for which to compute the posterior |
counts |
integer vector of counts |
f_product |
product of (1- |
denominator |
normalization constant returned by |
posterior probability of n
compute_normalization_constant
Compute sum of terms (function F, Comoglio et al.)
compute_sum(counts, n, f_product)
compute_sum(counts, n, f_product)
counts |
integer vector of counts |
n |
number of objects |
f_product |
product of (1- |
sum of terms in function F
Compute single term (function F, Comoglio et al.)
compute_term(counts, n, f_product, t)
compute_term(counts, n, f_product, t)
counts |
integer vector of counts |
n |
number of objects |
f_product |
product of (1- |
t |
index vector |
single term of function F
An S4 class to store measurements (count data, sampling fractions), prior support and posterior parameters
## S4 method for signature 'Counts' get_counts(object) ## S4 method for signature 'Counts' get_fractions(object) ## S4 replacement method for signature 'Counts' set_counts(object) <- value ## S4 replacement method for signature 'Counts' set_fractions(object) <- value ## S4 method for signature 'Counts' compute_posterior( object, n_start, n_end, replacement = FALSE, b = 1e-10, alg = "dup" ) ## S4 method for signature 'Counts' get_posterior_param(object, low = 0.025, up = 0.975, ...) ## S4 method for signature 'Counts' plot_posterior(object, low = 0.025, up = 0.975, xlab, step, ...)
## S4 method for signature 'Counts' get_counts(object) ## S4 method for signature 'Counts' get_fractions(object) ## S4 replacement method for signature 'Counts' set_counts(object) <- value ## S4 replacement method for signature 'Counts' set_fractions(object) <- value ## S4 method for signature 'Counts' compute_posterior( object, n_start, n_end, replacement = FALSE, b = 1e-10, alg = "dup" ) ## S4 method for signature 'Counts' get_posterior_param(object, low = 0.025, up = 0.975, ...) ## S4 method for signature 'Counts' plot_posterior(object, low = 0.025, up = 0.975, xlab, step, ...)
object |
object of class |
value |
numeric vector of sampling fractions |
n_start |
start of prior support range |
n_end |
end of prior support range |
replacement |
was sampling performed with replacement? Default to FALSE |
b |
prior rate parameter of the gamma distribution used to compute the posterior with Clough. Default to 1e-10 |
alg |
algorithm to be used to compute posterior. One of ... . Default to "dup" |
low |
1 - right tail posterior probability |
up |
left tail posterior probability |
... |
additional parameters to be passed to curve |
xlab |
x-axis label. Default to 'n' (no label) |
step |
integer defining the increment for x-axis labels (distance between two consecutive tick marks) |
counts vector from a Counts
object
fractions vector from a Counts
object
an object of class Counts
an object of class Counts
an object of class Counts
an object of class Counts
no return value, called for side effects
get_counts(Counts)
: Returns counts from a Counts
object
get_fractions(Counts)
: Returns fractions from a Counts
object
set_counts(Counts) <- value
: Replaces counts of a Counts
object with the provided values
set_fractions(Counts) <- value
: Replaces fractions of a Counts
object with the provided values
compute_posterior(Counts)
: Compute the posterior probability distribution of the population size
get_posterior_param(Counts)
: Extract statistical parameters (e.g. credible intervals)
from a posterior probability distribution
plot_posterior(Counts)
: Plot posterior probability distribution and posterior parameters
counts
integer vector of counts (required)
fractions
numeric vector of sampling fractions (required)
n_start
start of prior support range. If omitted and total counts
greater than zero,
computed as 0.5 * mle
, where mle
is the maximum likelihood estimate of the population size
n_end
end of prior support range. If omitted and total counts
greater than zero,
computed as 2 * mle
, where mle
is the maximum likelihood estimate of the population size
f_product
product of (1-fractions
)
mle
maximum likelihood estimate of the population size (ratio between total counts and total sampling fraction)
norm_constant
normalization constant
posterior
numeric vector of posterior probabilities over the prior support
map_p
maximum of posterior
probability
map_index
index of prior support corresponding to the maximum a posteriori
map
maximum a posteriori of population size
q_low
lower bound of the credible interval
q_low_p
probability of the lower bound of the credible interval
q_low_index
index of the prior support corresponding to q_low
q_low_cum_p
cumulative posterior probability from n_start
to q_low
(left tail)
q_up
upper bound of the credible interval
q_up_p
probability of the upper bound of the credible interval
q_up_index
index of the prior support corresponding to q_high
q_up_cum_p
cumulative posterior probability from q_high
to n_end
(right tail)
gamma
logical, TRUE if posterior computed using a Gamma approximation
The posterior
slot contains either the PMF or a logical value used to
compute posterior parameters with a Gamma approximation (see reference for details)
Lower and upper bounds of the credibile interval are computed at a default confidence level of 95
For more details on the normalization constant, see Corollary 1 in reference
Federico Comoglio
Comoglio F, Fracchia L and Rinaldi M (2013) Bayesian inference from count data using discrete uniform priors. PLoS ONE 8(10): e74388
compute_posterior, get_posterior_param
# constructor: # create an object of class 'Counts' new_counts(counts = c(30, 35), fractions = c(0.075, 0.1)) # same, using new new("Counts", counts = c(30, 35), fractions = c(0.075, 0.1))
# constructor: # create an object of class 'Counts' new_counts(counts = c(30, 35), fractions = c(0.075, 0.1)) # same, using new new("Counts", counts = c(30, 35), fractions = c(0.075, 0.1))
Compute posterior probability using a Gamma-Poisson model (Clough et al.)
gamma_poisson_clough(object, n_start, n_end, a = 1, b = 1e-10)
gamma_poisson_clough(object, n_start, n_end, a = 1, b = 1e-10)
object |
object of class |
n_start |
start of prior support range |
n_end |
end of prior support range |
a |
prior shape parameter of the gamma distribution used to compute the posterior with Clough. Default to 1 |
b |
prior rate parameter of the gamma distribution used to compute the posterior with Clough. Default to 1e-10 |
vector of posterior probabilities
if support range spans more than 100k values, the posterior is not computed
counts
slot for an object of class Counts
Get counts
slot for an object of class Counts
get_counts(object)
get_counts(object)
object |
object of class |
counts vector from a Counts
object
fractions
slot for an object of class Counts
Get fractions
slot for an object of class Counts
get_fractions(object)
get_fractions(object)
object |
object of class |
fractions vector from a Counts
object
Counts
This function computes posterior parameters and credible intervals at the given confidence level (default to 95%).
get_posterior_param(object, low = 0.025, up = 0.975, ...)
get_posterior_param(object, low = 0.025, up = 0.975, ...)
object |
object of class |
low |
1 - right tail posterior probability |
up |
left tail posterior probability |
... |
additional parameters to be passed to plot_posterior |
an object of class Counts
Federico Comoglio
Comoglio F, Fracchia L and Rinaldi M (2013) Bayesian inference from count data using discrete uniform priors. PLoS ONE 8(10): e74388
Clough HE et al. (2005) Quantifying Uncertainty Associated with Microbial Count Data: A Bayesian Approach. Biometrics 61: 610-616
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) get_posterior_param(posterior)
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) get_posterior_param(posterior)
Counts
classInitialize Counts
class
## S4 method for signature 'Counts' initialize(.Object, counts, fractions)
## S4 method for signature 'Counts' initialize(.Object, counts, fractions)
.Object |
an object of class "Counts" |
counts |
integer vector of counts |
fractions |
numeric vector of sampling fractions |
Counts
classConstructor for Counts
class
new_counts(counts, fractions)
new_counts(counts, fractions)
counts |
integer vector of counts |
fractions |
numeric vector of sampling fractions |
An object of the Counts
class
Counts
Plot posterior probability distribution and display posterior parameters
for an object of class Counts
plot_posterior(object, low = 0.025, up = 0.975, xlab, step, ...)
plot_posterior(object, low = 0.025, up = 0.975, xlab, step, ...)
object |
object of class |
low |
1 - right tail posterior probability |
up |
left tail posterior probability |
xlab |
x-axis label. Default to 'n' (no label) |
step |
integer defining the increment for x-axis labels (distance between two consecutive tick marks) |
... |
additional parameters to be passed to curve |
no return value, called for side effects
Federico Comoglio
Comoglio F, Fracchia L and Rinaldi M (2013) Bayesian inference from count data using discrete uniform priors. PLoS ONE 8(10): e74388
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) # plot posterior plot_posterior(posterior, type = 'l', lwd = 3, col = 'blue3')
counts <- new_counts(counts = c(20,30), fractions = c(0.075, 0.10)) # default parameters ("dup" algorithm, sampling without replacement, default prior support) posterior <- compute_posterior(counts) # plot posterior plot_posterior(posterior, type = 'l', lwd = 3, col = 'blue3')
Counts
classPlot method for Counts
class
## S4 method for signature 'Counts' plot(x, y, ...)
## S4 method for signature 'Counts' plot(x, y, ...)
x |
object of class |
y |
none |
... |
additional parameters to be passed to plot_posterior |
no return value, called for side effects
counts
slot for an object of class Counts
Set counts
slot for an object of class Counts
set_counts(object) <- value
set_counts(object) <- value
object |
object of class |
value |
numeric vector of counts |
an object of class Counts
fractions
slot for an object of class Counts
Set fractions
slot for an object of class Counts
set_fractions(object) <- value
set_fractions(object) <- value
object |
object of class |
value |
numeric vector of sampling fractions |
an object of class Counts
Counts
classPrint method for Counts
class
## S4 method for signature 'Counts' show(object)
## S4 method for signature 'Counts' show(object)
object |
object of class |
no return value, called for side effects
Counts
classSummary method for Counts
class
## S4 method for signature 'Counts' summary(object, ...)
## S4 method for signature 'Counts' summary(object, ...)
object |
object of class |
... |
additional parameters affecting the summary produced |
no return value, called for side effects