the prevalence package
tools for prevalence assessment studies.

## Estimate true prevalence from pooled samples

### Description

Bayesian estimation of true prevalence from apparent prevalence obtained by testing pooled samples.

### Usage

truePrevPools(x, n, SE = 1, SP = 1, prior = c(1, 1),
nchains = 2, burnin = 10000, update = 10000,
verbose = FALSE)

### Arguments

 x The vector of indicator variables, indicating whether a pool was positive ("1") or negative ("0") n The vector of pool sizes 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 c(1, 1) nchains The number of chains used in the estimation process; nchains must be 2 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 FALSE

### Details

truePrevPools calls on JAGS via 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-class object.

model {
for (i in 1:N) {
x[i] ~ dbern(AP[i])
AP[i] <- SEpool[i] * (1 - pow(1 - TP, n[i])) + (1 - SPpool[i]) * pow(1 - TP, n[i])
SEpool[i] <- 1 - (pow(1 - SE, n[i] * TP) * pow(SP, n[i] * (1 - TP)))
SPpool[i] <- pow(SP, n[i])
}
# SE ~ user-defined
# SP ~ user-defined
TP ~ dbeta(prior[1], prior[2])
}

The test sensitivity (SE) and specificity (SP) can be specified by the user, independently, as one of "fixed" (default), "uniform", "beta", "pert", or "beta-expert". Note that SE and SP must correspond to the test characteristics for testing individual samples; truePrevPools will calculate SEpool and SPpool, the sensitivity and specificitiy for testing pooled samples, based on Boelaert et al. (2000).

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)

• 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.
See betaPERT for 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.
Only mode or mean should be specified; lower and upper can be specified together or alone.
See betaExpert for more information on Beta-Expert parameterization.

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-class.

### 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 http://sourceforge.net/projects/mcmc-jags/.

### References

coda for various functions that can be applied to the prev@mcmc object

truePrev: estimate true prevalence from apparent prevalence obtained by testing individual samples with a single test

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

betaPERT: calculate the parameters of a Beta-PERT distribution

betaExpert: calculate the parameters of a Beta distribution based on expert opinion

### Examples

## Sandflies in Aurabani, Nepal, 2007
pool_results <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 0)
pool_sizes <- c(2, 1, 6, 10, 1, 7, 1, 4, 1, 3)
## Sensitivity ranges uniformly between 60% and 95%
## Specificity is considered to be 100%
## .. BUGS-style
truePrevPools(x = pool_results, n = pool_sizes,
SE = ~dunif(0.60, 0.95), SP = 1)
#>     mean median  mode    sd  2.5% 97.5%
#> TP 0.100  0.093 0.083 0.050 0.025 0.218
#> SE 0.764  0.759 0.630 0.101 0.607 0.941
#> SP 1.000  1.000 1.000 0.000 1.000 1.000
#>
#> Multivariate BGR statistic = 1
#> BGR values substantially above 1 indicate lack of convergence
## .. list-style
SE <- list(dist = "uniform", min = 0.60, max = 0.95)
truePrevPools(x = pool_results, n = pool_sizes,
SE = SE, SP = 1)
#>     mean median  mode    sd  2.5% 97.5%
#> TP 0.099  0.092 0.079 0.050 0.025 0.217
#> SE 0.765  0.760 0.633 0.101 0.607 0.940
#> SP 1.000  1.000 1.000 0.000 1.000 1.000
#>
#> Multivariate BGR statistic = 1.0001
#> BGR values substantially above 1 indicate lack of convergence