Informative priors for fixed effects in archetypes
Source:R/brm_prior_archetype.R
brm_prior_archetype.Rd
Create a brms
prior for fixed effects in an archetype.
Arguments
- label
A data frame with one row per model parameter in the archetype and columns to indicate the mapping between priors and labels. Generate using
brm_prior_label()
or manually. See the examples and the informative prior archetypes vignette for details.- archetype
An informative prior archetype generated by a function like
brm_archetype_successive_cells()
.
Value
A brms
prior object that you can supply to the prior
argument of brm_model()
.
Prior labeling
Informative prior archetypes use a labeling scheme to assign priors to fixed effects. How it works:
1. First, assign the prior of each parameter a collection
of labels from the data. This can be done manually or with
successive calls to [brm_prior_label()].
2. Supply the labeling scheme to [brm_prior_archetype()].
[brm_prior_archetype()] uses attributes of the archetype
to map labeled priors to their rightful parameters in the model.
For informative prior archetypes, this process is much more convenient
and robust than manually calling brms::set_prior()
.
However, it requires an understanding of how the labels of the priors
map to parameters in the model. This mapping varies from archetype
to archetype, and it is documented in the help pages of
archetype-specific functions such as brm_archetype_successive_cells()
.
See also
Other priors:
brm_prior_label()
,
brm_prior_simple()
,
brm_prior_template()
Examples
set.seed(0L)
data <- brm_simulate_outline(
n_group = 2,
n_patient = 100,
n_time = 3,
rate_dropout = 0,
rate_lapse = 0
) |>
dplyr::mutate(response = rnorm(n = dplyr::n())) |>
brm_simulate_continuous(names = c("biomarker1", "biomarker2")) |>
brm_simulate_categorical(
names = c("status1", "status2"),
levels = c("present", "absent")
)
archetype <- brm_archetype_successive_cells(data)
dplyr::distinct(data, group, time)
#> # A tibble: 6 × 2
#> group time
#> <chr> <chr>
#> 1 group_1 time_1
#> 2 group_1 time_2
#> 3 group_1 time_3
#> 4 group_2 time_1
#> 5 group_2 time_2
#> 6 group_2 time_3
prior <- NULL |>
brm_prior_label("normal(1, 1)", group = "group_1", time = "time_1") |>
brm_prior_label("normal(1, 2)", group = "group_1", time = "time_2") |>
brm_prior_label("normal(1, 3)", group = "group_1", time = "time_3") |>
brm_prior_label("normal(2, 1)", group = "group_2", time = "time_1") |>
brm_prior_label("normal(2, 2)", group = "group_2", time = "time_2") |>
brm_prior_label("normal(2, 3)", group = "group_2", time = "time_3") |>
brm_prior_archetype(archetype = archetype)
prior
#> prior class coef group resp dpar nlpar lb ub source
#> normal(1, 1) b x_group_1_time_1 <NA> <NA> user
#> normal(1, 2) b x_group_1_time_2 <NA> <NA> user
#> normal(1, 3) b x_group_1_time_3 <NA> <NA> user
#> normal(2, 1) b x_group_2_time_1 <NA> <NA> user
#> normal(2, 2) b x_group_2_time_2 <NA> <NA> user
#> normal(2, 3) b x_group_2_time_3 <NA> <NA> user
class(prior)
#> [1] "brmsprior" "data.frame"