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)