Make model only based on prior

Hello,
I am trying to make a model that is solely reliant on the prior. I have generated a dummy dataset and set very strong priors, and I want the model to display the coefficients based solely on the prior. I tried to use sample_prior = “only” (as well as “yes” and “no”) but the results don’t seem to change. The estimates for the coefficients are on point, but the intercept is very different to what I set in my inits and prior. Does anyone have any idea as to how make intercept set?

category1 <- c("a", "b", "c", "d")
category2 <- c("1-15", "16-30", "31-50")
category3 <- 1:23

category1h <- as.factor(append(category1, rep("d", length(category3)-length(category1))))
category2h <- as.factor(append(category2, rep("16-30", length(category3)-length(category2))))
total_df <- data.frame(category1h, category2h, as.factor(category3))
total_df$outcome <- sample(2:6, nrow(total_df),replace = T)
colnames(total_df) <- c("category1", "category2", "category3", "outcome")

test_formula <- bf(log(outcome) ~ 1+ category1 + category2 + category3)
get_prior(test_formula, data = total_df, family = Gamma())

prior <- c( set_prior("normal(5, 0.003)", class = "Intercept")
            , set_prior("normal(1,0.003)", class = "b", coef = "category1b")
            , set_prior("normal(1,0.003)", class = "b", coef = "category1c")
            , set_prior("normal(1,0.003)", class = "b", coef = "category1d")
            , set_prior("normal(1,0.003)", class = "b", coef = "category216M30")
            , set_prior("normal(1.07142857142857,0.003)", class = "b", coef = "category231M50")
            , set_prior("normal(1.04464285714286,0.003)", class = "b", coef = "category310")
            , set_prior("normal(1.07142857142857,0.003)", class = "b", coef = "category311")
            , set_prior("normal(1.04464285714286,0.003)", class = "b", coef = "category312")
            , set_prior("normal(1.05357142857143,0.003)", class = "b", coef = "category313")
            , set_prior("normal(0.659640486567048,0.003)", class = "b", coef = "category314")
            , set_prior("normal(0.900606790535773,0.003)", class = "b", coef = "category315")
            , set_prior("normal(2.15068650185663,0.003)", class = "b", coef = "category316")
            , set_prior("normal(1.43370598532241,0.003)", class = "b", coef = "category317")
            , set_prior("normal(1,0.003)", class = "b", coef = "category318")
            , set_prior("normal(1,0.003)", class = "b", coef = "category319")
            , set_prior("normal(1,0.003)", class = "b", coef = "category32")
            , set_prior("normal(1,0.003)", class = "b", coef = "category320")
            , set_prior("normal(1,0.003)", class = "b", coef = "category321")
            , set_prior("normal(1,0.003)", class = "b", coef = "category322")
            , set_prior("normal(0.898752045460099,0.003)", class = "b", coef = "category323")
            , set_prior("normal(1,0.003)", class = "b", coef = "category33")
            , set_prior("normal(2.79277674437362,0.003)", class = "b", coef = "category34")
            , set_prior("normal(1.54930892211565,0.003)", class = "b", coef = "category35")
            , set_prior("normal(1.86317429352913,0.003)", class = "b", coef = "category36")
            , set_prior("normal(2.09441409420444,0.003)", class = "b", coef = "category37")
            , set_prior("normal(1.33742061732808,0.003)", class = "b", coef = "category38")
            , set_prior("normal(1.42780959920377,0.003)", class = "b", coef = "category39")
)

inits <- list(
  Intercept = 5,
  shape = 1)
list_of_inits <- list(inits, inits)

test.model1 <- brm(
  test_formula
  , family = Gamma(link ="log")
  , prior = prior
  , data = total_df
  , chains = 2
  , cores = 4
  , warmup = 100
  , iter = 300
  , inits = list_of_inits
  , control = list(adapt_delta = 0.95, max_treedepth = 12)
  , backend = "cmdstanr"
  , threads = threading(4)
  , seed = 9791 
  , save_pars = save_pars(all = TRUE)
  #, sample_prior = "only"
)
summary(test.model1)
tab_model(test.model1)


my operating system is Windows 10 Pro, RStudio is 4.1.3 and brms is 2.16.3

The results don’t seem to change relative to what? Could you include a picture of your model summaries with prior only to see what it looks like? sample_prior = “only” is the correct way to specify things so it should work. I would also suggest not putting the log() in the formula and making the outcome already log transformed and calling it directly to the model.

The results of the model didn’t change depending on the argument of the sample prior, I put “yes”, “no”, “only” and the output was the same. I use log because I actually need the multiplication of the factors. I have found the workaround for this problem. Instead of using log, I used multiplication and specified each parameter as non-linear, used sample_prior = “only” and everything worked.
Thank you for the input.