# How to translate a Stan nonlinear fit to brms

**URL:** https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764
**Category:** brms
**Created:** [January 22, 2020, 6:33pm UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764 "2020-01-22T18:33:46Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![denne](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/denne/32/316_2.png) [@denne](https://discourse.mc-stan.org/u/denne)
#### Post date: [January 22, 2020, 6:33pm UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764/1 "2020-01-22T18:33:46Z")

</div>

I am trying to demonstrate how a Stan nonlinear fit can be “simplified” by brms, and failed miserably. Data set is from [https://github.com/dmenne/breathtestcore](https://github.com/dmenne/breathtestcore), Stan in [https://github.com/dmenne/breathteststan](https://github.com/dmenne/breathteststan)

```
library(ggplot)
library(breathteststan) # on cran
library(breathtestcore)
library(brms)

data(usz_13c)
# Use a subset
solids = str_detect(usz_13c$patient_id, "00") & str_detect(usz_13c$group, "solid")
bt = usz_13c[solids,] 
# cleanup_data standardizes columns
# Stan does not converge when samples are too dense, so do subsampling
bt = cleanup_data(breathtestcore::subsample_data(bt,15))

# Group parameter (patient/normal) is not used here, but that's the subject 
# for another day

#plot(null_fit(bt))

# https://github.com/dmenne/breathteststan/blob/master/inst/stan/breath_test_1.stan
# My simple stan model. 1000 iterations, about 30 seeconds on my computer
fit = stan_fit(bt)
plot(fit)
cf = coef(fit)
cf[cf$parameter %in% c("m","k","beta"),c(2,3,5)]

# Simplified model, incorporated constant "dose" parameter into m
fit_model = brm( bf(pdr ~ m*k*beta*(1-exp(-k*minute))^(beta-1)*exp(-k*minute),
                    m ~ 1 + (1|patient_id),
                    k ~ 1 + (1|patient_id),
                    beta ~ 1 + (1|patient_id), 
                    nl = TRUE), 
                 data = bt, 
                 chains = 1,
                 iter = 1,
                 family = gaussian(),
                 control = list(adapt_delta = 0.9, max_treedepth = 20),
                 inits = list(list(m = 2000, k = 0.02, beta = 2 )),
                 prior = c(
                   prior(normal(2000,400), nlpar = "m"),
                   prior(lognormal(-5, 1), nlpar = "k"),
                   prior(normal(2, 0.6), nlpar = beta)
                 ))
update(fit_model, iter = 1000)
# No convergence.....

```

---

<div class="post-metadata">

### Author: ![denne](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/denne/32/316_2.png) [@denne](https://discourse.mc-stan.org/u/denne)
#### Post date: [January 23, 2020, 9:53am UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764/2 "2020-01-23T09:53:49Z")

</div>

Sorry, Paul, with your help some years ago we had already solved this.

See [https://gist.github.com/dmenne/db4bacb7128f2922aaa75bcd9c1f8766](https://gist.github.com/dmenne/db4bacb7128f2922aaa75bcd9c1f8766)

---

<div class="post-metadata">

### Author: ![paul.buerkner](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/paul.buerkner/32/3303_2.png) [@paul.buerkner](https://discourse.mc-stan.org/u/paul.buerkner)
#### Post date: [January 23, 2020, 10:03am UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764/3 "2020-01-23T10:03:41Z")

</div>

So no more action required?

---

<div class="post-metadata">

### Author: ![denne](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/denne/32/316_2.png) [@denne](https://discourse.mc-stan.org/u/denne)
#### Post date: [January 23, 2020, 10:05am UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764/4 "2020-01-23T10:05:06Z")

</div>

No. I still don’t understand why the simple problem does not work, but I am checking.

Closed and thanks.

---

<div class="post-metadata">

### Author: ![denne](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mc-stan.org/denne/32/316_2.png) [@denne](https://discourse.mc-stan.org/u/denne)
#### Post date: [January 23, 2020, 10:18am UTC](https://discourse.mc-stan.org/t/how-to-translate-a-stan-nonlinear-fit-to-brms/12764/5 "2020-01-23T10:18:50Z")

</div>

Krrr… I forgot the dummy ID … Done this before.

```
m ~ 1 + (1|ID|patient_id),
k ~ 1 + (1|ID|patient_id),
beta ~ 1 + (1|ID|patient_id), 

```
