run_eDITH_BT_joint {eDITH} | R Documentation |
Run eDITH with BayesianTools based on joint eDNA and direct sampling data
Description
Function that runs a Bayesian sampler estimating parameters of an eDITH model fitted on both eDNA and direct sampling data.
Usage
run_eDITH_BT_joint(data, river, covariates = NULL, Z.normalize = TRUE,
use.AEM = FALSE, n.AEM = NULL, par.AEM = NULL,
no.det = FALSE, ll.type = "norm", source.area = "AG",
mcmc.settings = NULL, likelihood = NULL, prior = NULL,
sampler.type = "DREAMzs",
tau.prior = list(spec="lnorm",a=0,b=Inf, meanlog=log(5),
sd=sqrt(log(5)-log(4))),
log_p0.prior = list(spec="unif",min=-20, max=0),
beta.prior = list(spec="norm",sd=1),
sigma.prior = list(spec="unif",min=0,
max=max(data$values[data$type=="e"],
na.rm = TRUE)),
omega.prior = list(spec="unif",min=1,
max=10*max(data$values[data$type=="e"],
na.rm = TRUE)),
Cstar.prior = list(spec="unif",min=0,
max=max(data$values[data$type=="e"],
na.rm = TRUE)),
omega_d.prior = list(spec="unif",min=1,
max=10*max(c(0.11, data$values[data$type=="d"]),
na.rm = TRUE)),
alpha.prior = list(spec="unif", min=0, max=1e6),
verbose = FALSE)
Arguments
data |
eDNA and direct observation data. Data frame containing columns |
river |
A |
covariates |
Data frame containing covariate values for all |
Z.normalize |
Logical. Should covariates be Z-normalized? |
use.AEM |
Logical. Should eigenvectors based on AEMs be used as covariates? If |
n.AEM |
Number of AEM eigenvectors (sorted by the decreasing respective eigenvalue) to be used as covariates. If
|
par.AEM |
List of additional parameters that are passed to |
no.det |
Logical. Should a probability of non-detection be included in the model? |
ll.type |
Character. String defining the error distribution used in the log-likelihood formulation.
Allowed values are |
source.area |
Defines the extent of the source area of a node. Possible values are |
mcmc.settings |
List. It is passed as argument |
likelihood |
Likelihood function to be passed as |
prior |
Prior function to be passed as |
sampler.type |
Character. It is passed as argument |
tau.prior |
List that defines the prior distribution for the decay time parameter |
log_p0.prior |
List that defines the prior distribution for the logarithm (in base 10) of the baseline production rate
|
beta.prior |
List that defines the prior distribution for the covariate effects |
sigma.prior |
List that defines the prior distribution for the standard deviation of the measurement error
when |
omega.prior |
List that defines the prior distribution for the overdispersion parameter |
Cstar.prior |
List that defines the prior distribution for the |
omega_d.prior |
Prior distribution for the overdispersion parameter for direct sampling density observations. |
alpha.prior |
Prior distribution for the inverse DNA shedding rate (i.e., the organismal density that sheds a unit eDNA value per unit time). |
verbose |
Logical. Should console output be displayed? |
Details
The arguments of the type *.prior
consist in the lists of arguments required by dtrunc
(except the first argument x
).
By default, AEMs are computed without attributing weights to the edges of the river network.
Use e.g. par.AEM = list(weight = "gravity")
to attribute weights.
Value
A list with objects:
param_map |
Vector of named parameters corresponding to the maximum a posteriori estimate. It is the
output of the call to |
p_map |
Vector of best-fit eDNA production rates corresponding to the maximum a posteriori parameter
estimate |
C_map |
Vector of best-fit eDNA values (in the same unit as |
probDet_map |
Vector of best-fit detection probabilities corresponding to the maximum a posteriori
parameter estimate |
cI |
Output of the call to |
gD |
Output of the call to |
covariates |
Data frame containing input covariate values (possibly Z-normalized). |
source.area |
Vector of source area values. |
outMCMC |
Object of class |
Moreover, arguments ll.type
(possibly changed to "custom"
if a custom likelihood is specified), no.det
and data
are added to the list.
Examples
data(wigger)
data(dataCD)
# reduce number of iterations for illustrative purposes
# (use default mcmc.settings to ensure convergence)
settings.short <- list(iterations = 1e3, thin = 10)
set.seed(1)
out <- run_eDITH_BT_joint(dataCD, wigger, mcmc.settings = settings.short)
library(rivnet)
# best-fit (maximum a posteriori) map of eDNA production rates
plot(wigger, out$p_map)
# best-fit map (maximum a posteriori) of detection probability
plot(wigger, out$probDet_map)
# compare best-fit vs observed values
data.e <- which(dataCD$type=="e")
data.d <- which(dataCD$type=="d")
plot(out$C_map[dataCD$ID[data.e]], dataCD$values[data.e],
xlab="Modelled (MAP) eDNA concentrations", ylab="Observed eDNA concentrations")
abline(a=0, b=1)
plot(out$p_map[dataCD$ID[data.d]], dataCD$values[data.d],
xlab="Modelled (MAP) eDNA production rate", ylab="Observed density data")