| truePrev {prevalence} | R Documentation |
Estimate true prevalence from individuals samples
Description
Bayesian estimation of true prevalence from apparent prevalence obtained by testing individual samples.
Usage
truePrev(x, n, SE = 1, SP = 1, prior = c(1, 1),
nchains = 2, burnin = 10000, update = 10000,
verbose = FALSE)
Arguments
x |
The apparent number of positive samples |
n |
The sample size |
SE, SP |
The prior distribution for sensitivity (SE) and specificity SP); see 'Details' below for specification of these distributions |
prior |
The parameters of the prior Beta distribution for true
prevalence; defaults to |
nchains |
The number of chains used in the estimation process;
|
burnin |
The number of discarded model iterations; defaults to 10,000 |
update |
The number of withheld model iterations; defaults to 10,000 |
verbose |
Logical flag, indicating if JAGS process output should be
printed to the R console; defaults to |
Details
truePrev calls on JAGS/rjags to
estimate the true prevalence from the apparent prevalence in a Bayesian
framework. The default model, in BUGS language, is given below. To see the
actual fitted model, see the model slot of the
prev-object.
model {
x ~ dbin(AP, n)
AP <- SE * TP + (1 - SP) * (1 - TP)
# SE ~ user-defined (see below)
# SP ~ user-defined (see below)
TP ~ dbeta(prior[1], prior[2])
}
The test sensitivity (SE) and specificity (SP) can be
specified, independently, as one of "fixed", "uniform",
"beta", "pert", or "beta-expert", with "fixed"
as the default.
Distribution parameters can be specified in a named list()
as follows:
Fixed:
list(dist = "fixed", par)Uniform:
list(dist = "uniform", min, max)Beta:
list(dist = "beta", alpha, beta)Beta-PERT:
list(dist = "pert", method, a, m, b, k)
'method'must be"classic"or"vose";
'a'denotes the pessimistic (minimum) estimate,'m'the most likely estimate, and'b'the optimistic (maximum) estimate;
'k'denotes the scale parameter.
SeebetaPERTfor more information on Beta-PERT parametrization.Beta-Expert:
list(dist = "beta-expert", mode, mean, lower, upper, p)
'mode'denotes the most likely estimate,'mean'the mean estimate;
'lower'denotes the lower bound,'upper'the upper bound;
'p'denotes the confidence level of the expert.
Onlymodeormeanshould be specified;loweranduppercan be specified together or alone.
SeebetaExpertfor more information on Beta-Expert parametrization.
For Uniform, Beta and Beta-PERT distributions, BUGS-style short-hand notation is also allowed:
Uniform:
~dunif(min, max)Beta:
~dbeta(alpha, beta)Beta-PERT:
~dpert(min, mode, max)
Value
An object of class prev.
Note
Markov chain Monte Carlo sampling in truePrev is performed by
JAGS (Just Another Gibbs Sampler) through the
rjags package. JAGS can be downloaded from
https://mcmc-jags.sourceforge.io/.
Author(s)
Brecht Devleesschauwer <brechtdv@gmail.com>
References
Speybroeck N, Devleesschauwer B, Joseph L, Berkvens D (2013) Misclassification errors in prevalence estimation: Bayesian handling with care. Int J Public Health 58:791-795
Online Shiny application: https://cbra.shinyapps.io/truePrev/
See Also
coda for various functions that can be applied to the prev@mcmc object
truePrevMulti: estimate true prevalence from apparent prevalence obtained by testing individual samples with multiple tests, using a conditional probability scheme
truePrevMulti2: estimate true prevalence from apparent prevalence obtained by testing individual samples with multiple tests, using a covariance scheme
truePrevPools: estimate true prevalence from apparent prevalence obtained by testing pooled samples
betaPERT: calculate the parameters of a Beta-PERT distribution
betaExpert: calculate the parameters of a Beta distribution based on expert opinion
Examples
## Taenia solium cysticercosis in Nepal
## 142 positives out of 742 pigs sampled
## Model SE and SP based on literature data
## Sensitivity ranges uniformly between 60% and 100%
## Specificity ranges uniformly between 75% and 100%
#> BUGS-style:
truePrev(x = 142, n = 742,
SE = ~dunif(0.60, 1.00), SP = ~dunif(0.75, 1.00))
#> list-style:
SE <- list(dist = "uniform", min = 0.60, max = 1.00)
SP <- list(dist = "uniform", min = 0.75, max = 1.00)
truePrev(x = 142, n = 742, SE = SE, SP = SP)
## Model SE and SP based on expert opinions
## Sensitivity lies in between 60% and 100%; most likely value is 90%
## Specificity is with 95% confidence larger than 75%; most likely value is 90%
SE <- list(dist = "pert", a = 0.60, m = 0.90, b = 1.00)
SP <- list(dist = "beta-expert", mode = 0.90, lower = 0.75, p = 0.95)
truePrev(x = 142, n = 742, SE = SE, SP = SP)
## Model SE and SP as fixed values (each 90%)
truePrev(x = 142, n = 742, SE = 0.90, SP = 0.90)