# How to interpretate the results of a cumulative log model in brms (calculating the probabilities of being in a category))

**URL:** <https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313>\
**Category:** Modeling\
**Tags:** brms\
**Created:** [August 20, 2024, 4:33pm UTC](https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313 "2024-08-20T16:33:50Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Charlotte003](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/charlotte003/32/19008_2.png) [@Charlotte003](https://discourse.mc-stan.org/u/Charlotte003)\
**Post date:** [August 20, 2024, 4:33pm UTC](https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313/1 "2024-08-20T16:33:50Z")

</div>

Hello,

I’m working with an ordered categorical outcome variable in my model and am trying to interpret the results. Specifically, I’m analyzing how workload (measured as `antwoordtekst`) affects the employee loyalty index (`eNPS`), which is categorized into three ordered levels.

Here’s the model I used:

formula ← bf(category ~ antwoordtekst + (1 + antwoordtekst || technische\_sleutel), family = cumulative(“logit”))

fit\_workload\_1 ← brm(formula = formula, data = testset\_workload, family = cumulative(“logit”), iter = 1000, chains = 2, warmup = 500, cores = parallel::detectCores())

In the output, I have the following regression coefficients:

Regression Coefficients:  
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk\_ESS Tail\_ESS  
Intercept[1] -6.94 0.17 -7.28 -6.62 1.01 251 437  
Intercept[2] -3.50 0.15 -3.80 -3.20 1.01 321 477  
antwoordtekst -1.13 0.05 -1.22 -1.04 1.01 295 491

I understand that the `Intercept[1]` and `Intercept[2]` represent the thresholds for the categories. Specifically, does `Intercept[1]` indicate the logit of being in category 2 or higher, and `Intercept[2]` indicate the logit of being in category 2 or higher? But it is very strange that both of the intercepts are negative. In the data most of the people are in category 3. How do I calculate the probability correctly?

---

<div class="post-metadata">

**Author:** ![joels](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/joels/32/10442_2.png) [@joels](https://discourse.mc-stan.org/u/joels)\
**Post date:** [August 20, 2024, 7:23pm UTC](https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313/2 "2024-08-20T19:23:59Z")

</div>

Welcome to the community Charlotte!

The intercepts are thresholds for the logit of being _below_ these levels, rather than above. In addition, the logit for a given observation also includes the effect of `antwoordtekst`.

The model is returning predictions on the logit scale in the following form:

Below 1st or lowest outcome category: -6.94 - 1.13 \* antwoordtekst  
Below sum of 1st and 2nd lowest categories: - 3.50 - 1.13 \* antwoordtekst

You can turn these into probabilities with the inverse-logit function: 1 / (1 + exp(-x)), where x is one of the linear predictors above (e.g., -6.94 - 1.13 \* antwoordtekst). The probability of being in the top category is just one minus the probability of being in the first two categories.

`brms` has the `inv_logit_scaled` function to convert from the logit scale to the probability scale, so you can do:

```no-highlight
inv_logit_scaled(-3.50 - 1.13 * antwoordtekst)

# Specific example:
inv_logit_scaled(-3.50 - 1.13 * c(0.5, 1, 1.5))
[1] 0.016873391 0.009660523 0.005513647

```

The fact that the intercepts are relatively negative (along with the negative coefficient for `antwoordtekst`) indicates that the probability of being in the top outcome category is very high, as you expected from your data.

---

<div class="post-metadata">

**Author:** ![JLC](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/jlc/32/12520_2.png) [@JLC](https://discourse.mc-stan.org/u/JLC)\
**Post date:** [August 20, 2024, 11:22pm UTC](https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313/3 "2024-08-20T23:22:58Z")

</div>

The `tidybayes` package offers the `add_epred_draws()` function, which will give you per-category probabilities for a cumulative `brms` model.

---

<div class="post-metadata">

**Author:** ![Charlotte003](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/charlotte003/32/19008_2.png) [@Charlotte003](https://discourse.mc-stan.org/u/Charlotte003)\
**Post date:** [September 3, 2024, 1:01pm UTC](https://discourse.mc-stan.org/t/how-to-interpretate-the-results-of-a-cumulative-log-model-in-brms-calculating-the-probabilities-of-being-in-a-category/36313/4 "2024-09-03T13:01:04Z")

</div>

> [@joels](#):
>
> Below 1st or lowest outcome category

Thanks that helps a lot.
