Skip to contents

Create a brms prior for fixed effects in an archetype.

Usage

brm_prior_archetype(label, 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

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"