# 'brms' for piecewise glmm with random change point

I have a question about how I can use ‘brms’ for piecewise glmm with a random change point.
I would like to fit a piecewise glmm to model after how many cases a surgeon passed his/her learning curve (i.e. a plateau is reached). A simple model consists of 2 pieces of which the 2nd piece has no slope ( = 0) (see example figure attached ). Since I have data from multiple surgeons I would also like the change point to be random.

I read the post on Piecewise Linear Mixed Models With a Random Change Point, however, I couldn’t figure out how to make the slope of the second piece zero.

Could you help me out? Many thanks in advance!

• Operating System: macOS 10.14.5
• brms Version: 2.9.0

Can you post your current work in progress model so that we can try to amend according to your needs?

Thanks Paul, I played a bit with some example data and got more or less what I had in mind.
The code I used:

`````` library(segmented)
data(plant)

library(brms)
bform <- bf(
y ~ b0 + b1 * (time - omega) * step(omega - time),
b0 + b1 + alpha ~ 1 + (1|group),
# to keep omega within the time range of 0 to 700
nlf(omega ~ inv_logit(alpha) * 700),
nl = TRUE
)

bprior <- prior(normal(0, 3), nlpar = "b0") +
prior(normal(0, 3), nlpar = "b1") +
prior(normal(400, 50), nlpar = "alpha")

make_stancode(bform, data = plant, prior = bprior)

fit <- brm(bform, data = plant, prior = bprior, iter = 2000, chains = 1)
summary(fit)
``````

Plotting the results give me the following: Could you tell me why the change point appears to be gradual and not one point?
How do I get the change point for each ‘group’ from the model fit?

You can extract the samples of alpha by using `coef(fit, summary = FALSE)\$alpha` and then do the inv_logit transformation yourself to obtain omega (which is the changepoint, right?)