BayesERtools
provides a suite of tools that facilitate exposure-response analysis using Bayesian methods.
- Tutorial (
BayesERbook
): https://genentech.github.io/BayesERbook/ - Package documentation: https://genentech.github.io/BayesERtools/
- GitHub repo of the package: https://github.com/genentech/BayesERtools/
Installation
You can install the BayesERtools
with:
# install.packages('BayesERtools') # Once on CRAN
devtools::install_github("genentech/BayesERtools") # development version
You also need latest version of rstanemax
(>= 0.1.7) to use Emax model.
install.packages('rstanemax', repos = c(ppm = 'https://packagemanager.posit.co/cran/latest'))
Supported model types
Binary endpoint
|
Continuous endpoint
|
|||
---|---|---|---|---|
Linear (logit) | Emax (logit) | Linear | Emax | |
backend |
rstanarm
|
rstanemax
|
rstanarm
|
rstanemax
|
reference | π | π | π | π |
develop model | β | β | β | β |
simulate & plot ER | β | β | β | β |
exposure metrics selection | β | β | β | β |
covariate selection | β | β | β | β |
covariate forest plot | β | β | π‘ | β |
β Available, π‘ In plan/under development, β Not in a current plan |
Quick guide
Here is a quick demo on how to use this package for E-R analysis. See vignette("basic_workflow_bin")
for more thorough walk through of a basic workflow.
# Load package and data
library(dplyr)
library(BayesERtools)
ggplot2::theme_set(ggplot2::theme_bw(base_size = 12))
data(d_sim_binom_cov)
# Hyperglycemia Grade 2+ (hgly2) data
df_er_ae_hgly2 <-
d_sim_binom_cov |>
filter(AETYPE == "hgly2") |>
# Re-scale AUCss, baseline age
mutate(
AUCss_1000 = AUCss / 1000, BAGE_10 = BAGE / 10,
Dose = paste(Dose_mg, "mg")
)
var_resp <- "AEFLAG"
Simple univariable model for binary endpoint
set.seed(1234)
ermod_bin <- dev_ermod_bin(
data = df_er_ae_hgly2,
var_resp = var_resp,
var_exposure = "AUCss_1000"
)
ermod_bin
#>
#> ββ Binary ER model βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
#> βΉ Use `plot_er()` to visualize ER curve
#>
#> ββ Developed model ββ
#>
#> stan_glm
#> family: binomial [logit]
#> formula: AEFLAG ~ AUCss_1000
#> observations: 500
#> predictors: 2
#> ------
#> Median MAD_SD
#> (Intercept) -2.04 0.23
#> AUCss_1000 0.41 0.08
#> ------
#> * For help interpreting the printed output see ?print.stanreg
#> * For info on the priors used see ?prior_summary.stanreg
# Using `*` instead of `+` so that scale can be
# applied for both panels (main plot and boxplot)
plot_er_gof(ermod_bin, var_group = "Dose", show_coef_exp = TRUE) *
xgxr::xgx_scale_x_log10()
Covariate selection
BGLUC (baseline glucose) is selected while other two covariates are not.
set.seed(1234)
ermod_bin_cov_sel <-
dev_ermod_bin_cov_sel(
data = df_er_ae_hgly2,
var_resp = var_resp,
var_exposure = "AUCss_1000",
var_cov_candidate = c("BAGE_10", "RACE", "BGLUC")
)
#>
#> ββ Step 1: Full reference model fit ββ
#>
#> ββ Step 2: Variable selection ββ
#>
#> βΉ The variables selected were: AUCss_1000, BGLUC
#>
#> ββ Step 3: Final model fit ββ
#>
#> ββ Cov mod dev complete ββ
#>
ermod_bin_cov_sel
#> ββ Binary ER model & covariate selection βββββββββββββββββββββββββββββββββββββββ
#> βΉ Use `plot_submod_performance()` to see variable selection performance
#> βΉ Use `plot_er()` with `marginal = TRUE` to visualize marginal ER curve
#>
#> ββ Selected model ββ
#>
#> stan_glm
#> family: binomial [logit]
#> formula: AEFLAG ~ AUCss_1000 + BGLUC
#> observations: 500
#> predictors: 3
#> ------
#> Median MAD_SD
#> (Intercept) -7.59 0.90
#> AUCss_1000 0.46 0.08
#> BGLUC 0.87 0.13
#> ------
#> * For help interpreting the printed output see ?print.stanreg
#> * For info on the priors used see ?prior_summary.stanreg
plot_submod_performance(ermod_bin_cov_sel)
coveffsim <- sim_coveff(ermod_bin_cov_sel)
plot_coveff(coveffsim)