| run_eDITH_BT {eDITH} | R Documentation |
Run eDITH with BayesianTools
Description
Function that runs a Bayesian sampler estimating parameters of an eDITH model
Usage
run_eDITH_BT(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, na.rm = TRUE)),
omega.prior = list(spec="unif",min=1, max=10*max(data$values, na.rm = TRUE)),
Cstar.prior = list(spec="unif",min=0, max=max(data$values, na.rm = TRUE)),
verbose = FALSE)
Arguments
data |
eDNA 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 |
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(dataC)
data(dataRead)
# 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(dataC, 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 eDNA concentrations
plot(out$C_map[dataC$ID], dataC$values,
xlab="Modelled (MAP) concentrations", ylab="Observed concentrations")
abline(a=0, b=1)
## fit eDNA read number data - use AEMs as covariates
out <- run_eDITH_BT(dataRead, wigger, ll.type = "nbinom",
par.AEM = list(weight = "gravity"),
mcmc.settings = settings.short) # use default mcmc.settings to ensure convergence
## use user-defined covariates
covariates <- data.frame(urban = wigger$SC$locCov$landcover_1,
agriculture = wigger$SC$locCov$landcover_2,
forest = wigger$SC$locCov$landcover_3,
elev = wigger$AG$Z,
log_drainageArea = log(wigger$AG$A))
out.cov <- run_eDITH_BT(dataC, wigger, covariates,
mcmc.settings = settings.short) # use default mcmc.settings to ensure convergence
# use user-defined covariates and AEMs
out.covAEM <- run_eDITH_BT(dataC, wigger, covariates,
use.AEM = TRUE, par.AEM = list(weight = "gravity"),
mcmc.settings = settings.short) # use default mcmc.settings to ensure convergence
# use AEMs with significantly positive spatial autocorrelation
out.AEM.moran <- run_eDITH_BT(dataC, wigger, use.AEM = TRUE,
par.AEM = list(weight = "gravity", moranI = TRUE),
mcmc.settings = settings.short) # use default mcmc.settings to ensure convergence
## use posterior sample to specify user-defined prior
library(BayesianTools)
data(outSample)
pp <- createPriorDensity(outSample$outMCMC)
# Important! add parameter names to objects lower, upper
names(pp$lower) <- names(pp$upper) <- colnames(outSample$outMCMC$chain[[1]])[1:8]
# the three last columns are for log-posterior, log-likelihood, log-prior
out.new <- run_eDITH_BT(dataC, wigger, covariates, prior = pp,
mcmc.settings = settings.short)