Hello everyone,

(sorry in advance for my extensive message… i’m a beginner in stan and BRMS)

Here’s my problem.

I have a dependent variable, denoted REP, binary (1 or 0). I wish to predict the probability of answering 1 with a non-linear model such as, `REP ~ inv_logit ((X/(1 + k*D)) - X2)`

. with X and X2 two numerical variables , D a numerical variable and k : the free parameter to estimate.

…

I would like to estimate the parameter “k” according to the different experimental conditions I have realized.

**Independent variable A: “DOMAIN”** with two modalities (1: LOSS, 2: GAIN). Each subject is exposed to these 2 modalities of this independent variable.

**Independent variable B: “STATUS”** with two modalities (1: Control, 2: Threat). A participant is either “control” or “threat” but never both.

my data frame :

I would like to estimate the parameter “k” for each condition :

- k1_Control_GAIN,
- k2_Control_LOSS,
- k3_Threat_GAIN,
- k4_Threat_LOSS.

My hypothesis:

k1_Control_GAIN < k3_Threat_GAIN

k2_Control_LOSS < k4_Threat_LOSS

I have several ways to code this I think, the way I tried is this: (I’ve simplified the model here to make it more understandable)

```
main_model = bf(
rep ~ inv_logit(
((X / (1 + exp(k1 * dummy_ctrl * dummy_gain + k2 * dummy_gain * dummy_threat + k3 * dummy_loss * dummy_ctrl + k4 * dummy_loss * dummy_threat)*D ) - X2))
,
k1 ~ ( 1| ID ),
k2 ~ ( 1| ID ) ,
k3 ~ ( 1| ID ),
k4 ~ ( 1| ID ),
nl = TRUE)
```

with `dummy_ctrl = 1`

when the subject is in the “control” group and 0 otherwise

with `dummy_threat = 1`

when the subject is in the “threat” group and 0 otherwise

with `dummy_GAIN= 1`

when the subject is exposed to a trial of the “GAIN” condition and 0 otherwise

with dummy_LOSS= 1 when the subject is exposed to a trial of the “LOSS” condition and 0 otherwise

```
main_fit = brm(main_model,
data = DF, family = bernoulli(link='identity'),
prior = c(prior(normal(-5,3), nlpar = 'k1'),
prior(normal(-5,3), nlpar = 'k2'),
prior(normal(-5,3), nlpar = 'k3'),
prior(normal(-5,3), nlpar = 'k4')),
cores = parallel::detectCores(),
seed = "12345",
inits = "random",
chains = 4,
iter = 4000,
warmup = 2000,
control = list(adapt_delta=0.99))
```

I don’t think my way is right.

I think it’s better to do it like this?

```
main_model = bf(
rep ~ inv_logit( ( (X / (1 + exp(k)*D ) - X2)) ,
k ~ DOMAIN*STATUS + (1 + DOMAIN | ID),
nl = TRUE)
```

Thank you in advance for your responses.