The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
BayesianDEB provides a complete Bayesian framework for Dynamic Energy Budget (DEB) modelling. It wraps pre-written Stan models with a clean R interface for data preparation, model specification, fitting, diagnostics, and visualisation.
The package implements four model types:
| Type | Stan model | Description |
|---|---|---|
individual |
2-state (E, V) | Single individual growth |
growth_repro |
3-state (E, V, R) | Growth + reproduction |
hierarchical |
2-state + random effects | Multi-individual with partial pooling |
debtox |
4-state (E, V, R, D) | Toxicokinetic-toxicodynamic |
# Install cmdstanr (required backend)
install.packages("cmdstanr",
repos = c("https://stan-dev.r-universe.dev", getOption("repos")))
cmdstanr::install_cmdstan()
# Install BayesianDEB
# remotes::install_github("sciom/BayesianDEB")library(BayesianDEB)
data(eisenia_growth)
# Use first individual
df1 <- eisenia_growth[eisenia_growth$id == 1, ]
dat <- bdeb_data(growth = df1, f_food = 1.0)
datmod <- bdeb_model(
data = dat,
type = "individual",
priors = list(
p_Am = prior_lognormal(mu = 1.5, sigma = 0.5),
p_M = prior_lognormal(mu = -1.0, sigma = 0.5),
kappa = prior_beta(a = 3, b = 2),
sigma_L = prior_halfnormal(sigma = 0.05)
)
)
modUnspecified priors are filled from
prior_default("individual").
fit <- bdeb_fit(mod, chains = 4, iter_sampling = 1000, seed = 123)
fitbdeb_diagnose(fit)
plot(fit, type = "trace")
plot(fit, type = "pairs", pars = c("p_Am", "p_M", "kappa"))ppc <- bdeb_ppc(fit, type = "growth")
plot(ppc)bdeb_derived(fit, quantities = c("L_inf", "growth_rate"))plot(fit, type = "trajectory", n_draws = 200)dat_all <- bdeb_data(growth = eisenia_growth, f_food = 1.0)
mod_hier <- bdeb_model(dat_all, type = "hierarchical")
fit_hier <- bdeb_fit(mod_hier, chains = 4, adapt_delta = 0.9,
threads_per_chain = 4) # within-chain parallelism
bdeb_diagnose(fit_hier)
bdeb_summary(fit_hier, pars = c("mu_log_p_Am", "sigma_log_p_Am", "p_M", "kappa"))data(debtox_growth)
# Concentration mapping
conc_map <- setNames(
c(0, 20, 80, 200),
c("1", "2", "3", "4")
)
dat_tox <- bdeb_data(
growth = debtox_growth,
concentration = conc_map,
f_food = 1.0
)
mod_tox <- bdeb_tox(dat_tox, stress = "assimilation")
fit_tox <- bdeb_fit(mod_tox, chains = 4, adapt_delta = 0.95)
# EC50 and NEC
bdeb_ec50(fit_tox)
# Dose-response plot
plot_dose_response(fit_tox)BayesianDEB follows the prior recommendations of Kooijman (2010) and the AmP collection (Marques et al., 2018):
# View defaults
prior_default("individual")
# Override specific priors
my_priors <- list(
p_Am = prior_lognormal(mu = 2.0, sigma = 0.3),
kappa = prior_beta(a = 5, b = 2)
)The default likelihood is Gaussian for growth and negative binomial
for reproduction. Switch via observation:
# Robust to outliers
mod <- bdeb_model(dat, type = "individual",
observation = list(growth = obs_student_t(nu = 5)))
# Multiplicative error
mod <- bdeb_model(dat, type = "individual",
observation = list(growth = obs_lognormal()))These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.