---
title: "Using priorsense with brms"
vignette: >
  %\VignetteIndexEntry{Using priorsense with brms}
  %\VignetteEngine{quarto::html}
  %\VignetteEncoding{UTF-8}
---


```{r}
#| include: false
ggplot2::theme_set(bayesplot::theme_default(base_family = "sans"))
options(priorsense.plot_help_text = FALSE)
```

```{r}
#| message: false
#| warning: false
library(posterior)
library(priorsense)
library(brms)
```

`brms` has built-in support for `priorsense`, such that it can be used directly
without any modifications to model code. However, priors can also be tagged in
order to selectively power-scale priors. Consider the univariate normal model
with unknown mu and sigma available
via`example_powerscale_model("univariate_normal")`. By also defining separate
`intercept` and `sigma` prior tags, it will be possible to check the
sensitivity for each prior separately.

```{r}
#| message: false
#| warning: false
#| results: false
normal_model <- example_powerscale_model(model = "univariate_normal")

priors <- c(
  prior(coef = "Intercept", normal(0, 1), tag = "intercept"),
  prior(class = "sigma", normal(0, 2.5), tag = "sigma")
)

fit <- brm(
  bf(y ~ 1, center = FALSE),
  data = data.frame(y = normal_model$data$y),
  prior = priors
)

```

Then the `priorsense` functions will work as usual.

```{r}
powerscale_sensitivity(fit)
```

```{r}
powerscale_sensitivity(fit, prior_selection = "sigma")
```

```{r}
powerscale_sensitivity(fit, prior_selection = "intercept")
```

```{r}
#| message: false
#| warning: false
#| fig-width: 6
#| fig-height: 4
powerscale_plot_dens(fit)
```
