Mismatch prior specification in model and prior_summary() output

I am running some zero-one-inflated beta models in brms, but it seems like the priors I am trying to set on all the beta coefficients do not end up being as I had specified. Although I specified that I wanted normal(0,1) priors on the betas, when I do prior_summary() it looks like there are a bunch of flat priors that bypassed the prior specification in my code.

Here is one of the models followed by the prior_summary() output:

zoib_yl_prot <- brm(
  bf(
    day_combo_prot_perc ~ FAI + day_min_feed_scale + sex + (1 | id),
    phi ~ FAI + sex + day_min_feed_scale + (1 | id),
    zoi ~ FAI + sex + day_min_feed_scale + (1 | id),  
    coi ~ FAI + sex + day_min_feed_scale + (1 | id) 
  ),
  family = zero_one_inflated_beta(), 
       data = kam_follows_yl,
       prior = c(prior(student_t(3, 0, 2.5), class = "Intercept"), 
                 prior(normal(0, 1), class = "b")),
       iter = 7000, 
       warmup = 2000,
       cores = 2,  
       seed = 1234,
       chains = 4,
  control = list(adapt_delta = 0.98))   
prior_summary(zoib_yl_prot)

> prior     class               coef
         normal(0, 1)         b                   
         normal(0, 1)         b day_min_feed_scale
         normal(0, 1)         b                FAI
         normal(0, 1)         b            sexmale
               (flat)         b                   
               (flat)         b day_min_feed_scale
               (flat)         b                FAI
               (flat)         b            sexmale
               (flat)         b                   
               (flat)         b day_min_feed_scale
               (flat)         b                FAI
               (flat)         b            sexmale
               (flat)         b                   
               (flat)         b day_min_feed_scale
               (flat)         b                FAI
               (flat)         b            sexmale
 student_t(3, 0, 2.5) Intercept                   
       logistic(0, 1) Intercept                   
 student_t(3, 0, 2.5) Intercept                   
       logistic(0, 1) Intercept                   
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd          Intercept
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd          Intercept
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd          Intercept
 student_t(3, 0, 2.5)        sd                   
 student_t(3, 0, 2.5)        sd          Intercept
 group resp dpar nlpar lb ub       source
                                     user
                             (vectorized)
                             (vectorized)
                             (vectorized)
             coi                  default
             coi             (vectorized)
             coi             (vectorized)
             coi             (vectorized)
             phi                  default
             phi             (vectorized)
             phi             (vectorized)
             phi             (vectorized)
             zoi                  default
             zoi             (vectorized)
             zoi             (vectorized)
             zoi             (vectorized)
                                     user
             coi                  default
             phi                  default
             zoi                  default
                        0         default
             coi        0         default
             phi        0         default
             zoi        0         default
    id                  0    (vectorized)
    id                  0    (vectorized)
    id       coi        0    (vectorized)
    id       coi        0    (vectorized)
    id       phi        0    (vectorized)
    id       phi        0    (vectorized)
    id       zoi        0    (vectorized)
    id       zoi        0    (vectorized)

Why are not all of the priors of class="b" normal(0,1)? I would have thought that my specification of prior(normal(0, 1), class = "b") would have made all the betas a normal(0, 1) rather than having many of them flat.

Thanks!

  • Operating System: Mac OS 12.3.1
  • RStudio 2022.07.1+554 “Spotted Wakerobin” Release; R version 4.2.0
  • brms Version: 2.17.0

Oops, silly mistake. The solution is quite simple. For specifying priors on distributional regression parameters as this, one needs to use the argument dpar = "parameter name" as follows:

prior(normal(0, 1), class = "b", dpar = "phi"
prior(normal(0, 1), class = "b", dpar = "zoi" etc…

By only specifying only prior(normal(0, 1), class = "b") this puts a normal(0,1) prior on the betas for estimating the mu parameter of the model, but not the other parameters of the zoib model (phi, zoi, coi).