PoolRegBayes {PoolTestR} | R Documentation |
Bayesian Mixed or Fixed Effect Logistic Regression with Presence/Absence Tests on Pooled Samples
Description
It can be useful to do mixed effects logistic regression on the presence/absence results from pooled samples, however one must adjust for the size of each pool to correctly identify trends and associations.
Usage
PoolRegBayes(
formula,
data,
poolSize,
link = "logit",
prior = NULL,
cores = NULL,
...
)
Arguments
formula |
A |
data |
A |
poolSize |
The name of the column with number of specimens / isolates / insects in each pool. |
link |
Link function. There are three options 'logit' (i.e logistic regression, the default), 'cloglog' (complementary log-log), and 'loglogit'. The final option blends a log link function and the logit function so that parameters are (log) prevalence/rate ratios as long as predicted prevalence is <0.8 (for details see Clark and Barr, Stat Methods Med Res (2018) <DOI:10.1177/0962280217698174>) |
prior |
The priors to be used for the regression parameters. Defaults to
a non-informative (normal(0,100)) prior on linear coefficients and a
zero-truncated student-t prior on the group effect standard deviations.
Custom priors must be |
cores |
The number of CPU cores to be used. By default one core is used |
... |
Additional arguments to be passed to |
Value
An object of class brms
with the regression outputs.
References
Clark RG, Barr M: A blended link approach to relative risk regression. Statistical Methods in Medical Research 2018, 27(11):3325-3339. <DOI:10.1177/0962280217698174>
Angus McLure, Ben O'Neill, Helen Mayfield, Colleen Lau, Brady McPherson (2021). PoolTestR: An R package for estimating prevalence and regression modelling for molecular xenomonitoring and other applications with pooled samples. Environmental Modelling & Software, 145:105158. <DOI:10.1016/j.envsoft.2021.105158>
See Also
Examples
# Perform logistic-type regression modelling for a synthetic dataset consisting
# of pools (sizes 1, 5, or 10) taken from 4 different regions and 3 different
# years. Within each region specimens are collected at 4 different villages,
# and within each village specimens are collected at 8 different sites.
### Models in a frequentist framework
#ignoring hierarchical sampling frame within each region
Mod <- PoolReg(Result ~ Region + Year,
data = SimpleExampleData,
poolSize = NumInPool)
summary(Mod)
#accounting hierarchical sampling frame within each region
HierMod <- PoolReg(Result ~ Region + Year + (1|Village/Site),
data = SimpleExampleData,
poolSize = NumInPool)
summary(HierMod)
#Extract fitted prevalence for each combination of region and year and then at
#each level of the hierarchical sampling frame (i.e. for each village in each
#region and each site in each village)
getPrevalence(HierMod)
### Models in a Bayesian framework with default (non-informative) priors
#ignoring hierarchical sampling frame within each region
BayesMod <- PoolRegBayes(Result ~ Region + Year,
data = SimpleExampleData,
poolSize = NumInPool)
summary(BayesMod)
getPrevalence(BayesMod) #Extract fitted prevalence for each combination of region and year
#accounting hierarchical sampling frame within each region
BayesHierMod <- PoolRegBayes(Result ~ Region + Year + (1|Village/Site),
data = SimpleExampleData,
poolSize = NumInPool)
summary(BayesHierMod)
getPrevalence(BayesHierMod)
### Calculate adjusted estimates of prevalence
# We use the same function for all four models, but the outputs are slightly different
# Extract fitted prevalence for each combination of region and year
getPrevalence(Mod)
getPrevalence(BayesMod)
#Extract fitted prevalence for each combination of region and year and then at
#each level of the hierarchical sampling frame (i.e. for each village in each
#region and each site in each village)
getPrevalence(HierMod)
getPrevalence(BayesHierMod)
# You can also use getPrevalence to predict at prevalence for other values of
# the covariates (e.g. predict prevalence in year 4)
#Making a data frame containing data make predict on
DataFuture <- unique(data.frame(Region = SimpleExampleData$Region,
Village = SimpleExampleData$Village,
Site = SimpleExampleData$Site,
Year = 4))
getPrevalence(Mod, newdata = DataFuture)
getPrevalence(HierMod, newdata = DataFuture)
getPrevalence(BayesMod, newdata = DataFuture)
getPrevalence(BayesHierMod, newdata = DataFuture)