Caitlin Cherryh has joined the development team and has been working on improving readability of outputs, documentation, and testing.
This update includes an option for PoolPrev()
to skip
the calculation of Bayesian estimates. When using
bayesian = FALSE
, only MLE and likelihood ratio confidence
intervals will be calculated, substantially speeding up this function
(perhaps x100).
This updates also removes one source of bias from prevalence
estimates returned for any hierarchical models. This effects the results
of HierPoolPrev()
and getPrevalence()
applied
to models with random effects. Under the update, prevalence estimates
will typically slightly increase, though the difference will not be
notable if the sample size is large and there is little clustering.
Previous estimates of prevalence did not marginalise out the random
effects when calculating population-level prevalence, but as of this
version, random effects are marginalised out. Due to the complexity
introduced by this bias-correction we now longer-support specifying
nested surveys using ~(1|Layer1/Layer2)
and recommend using
the format ~(1|Layer1) + (1|Layer2)
which should be
equivalent as long as each level in Layer2
is unique —
i.e. the format already required for HierPoolPrev()
.
Due to the complexity introduced by this bias-correction, the way of
specifying priors for HierPoolPrev()
has been updated.
Priors for HierPoolPrev()
are now directly on the
real-scale (logit-transformed) parameters, rather than prevalence
directly. We have also updated the default priors for
PoolRegBayes()
for regression parameters, as we believe the
previous priors were too diffuse (normal(0,100)
). The
defaults for the centered predictors are now
student(6,0,1.5)
.
HierPoolPrev()
now has functionality to return estimate
of intracluster correlation coefficients (ICC) at one or more levels of
clustering.
HierPoolPrev()
and PoolPrev()
now have
custom output classes (inheriting from tibble, the previous class for
these outputs). This has allowed us (Caitlin) to add pretty-print
functions these outputs which are much more human readable. Saving the
output with write.csv()
or similar will still return a
detailed, machine-readable output.
Both PoolPrev()
and HierPoolPrev()
have
been updated to improve point estimates. New default function values
have been added for both PoolPrev()
and
HierPoolPrev()
. The default for the new robust
parameter is robust = TRUE
, which means the point estimate
of prevalence is the posterior median. In both functions, the default
value for all.negative.pools = 'zero'
, meaning when all
pools are negative, the point estimate and the. lower bound for the
interval will be 0.
This is patch to fix a bug affecting PoolPrev()
. The bug
affected the maximum likelihood estimates (MLE) and likelihood ratio
confidence intervals (LR-CIs) of prevalence when the default Jeffrey’s
prior was being used. The bug would usually make the MLE and LR-CIs much
closer to the Bayesian estimates than they should have been. As both
sets of estimates are valid, the results will still have been
approximately correct.
This patch also includes an option, replicate.poolscreen
(default to FALSE
), for PoolPrev()
. This
options changes the way the likelihood ratio confidence intervals are
calculated. With replicate.poolscreen = TRUE
, PoolPrev will
more closely reproduce the results produced by Poolscreen. We believe
that our implementation of these intervals is more correct so would
recommend that users continue to use the default
(replicate.poolscreen = FALSE
), but this option may be
helpful for those who are trying to compare results across the two
programs.
We have published a paper about PoolTestR in Environmental Modelling and Software now available at https://doi.org/10.1016/j.envsoft.2021.105158. If you find this package useful, please let us know and/or cite our paper!
A couple bug fixes:
A few improvements:
getPrevalence()
to return the posterior
median as the point estimate (instead of the posterior mean) for
Bayesian models with with PoolRegBayes()
PoolRegBayes()
with a logit link function as
custom family in brms
. This allows for better
post-processing for the results of PoolRegBayes()
–
e.g. simulating from the model, leave-one-out cross-validation,
posterior predictive checks. See brms
for detailsPoolRegBayes()
, HierPoolPrev()
, and
PoolPrev()
HierPoolPrev()
. Also reduced the default value of this
hyperprior from 25 (very diffuse) to 2 (weakly informative). This is now
very comparable to the equivalent default hyper-prior for
brms
models including those fit using
PoolRegBayes()
(i.e. a half t distribution three degrees of
freedom )Minor patch so that the package works across more platforms (namely solaris)
This is our first official release! Please see the github site (https://github.com/AngusMcLure/PoolTestR#pooltestr) for a basic crash course on using the package. An upcoming (open access) journal article will go into further detail. A preprint can be accessed at https://arxiv.org/abs/2012.05405. I’ll post a link to the article when published.