# Error: Argument 'mi' is not supported for family 'bernoulli(logit)'

I am using imputation during model fitting. The outcome variable treat is binary while the predictor variable c1 which has missing values that I want to impute is continuous.

What I want here is to fit the outcome model using family bernoulli and to do the imputation of the predictor c1 using another family, for example gaussian.

When I run the model, I get the error:

Error: Argument ‘mi’ is not supported for family ‘bernoulli(logit)’.

##my model
bform <- bf(treat | mi()~ mi(c1)+(1|group)) +
bf(c1| mi() ~ c2) + set_rescor(FALSE)

m <-brm(bform, data=dt, family = bernoulli())

##sample data
n r r/n group treat c2 c1 weights
62 3 0.048387097 1 0 0.1438 1.941115288 1.941115288
96 1 0.010416667 1 0 0.237 1.186583128 1.186583128
17 0 0 0 0 0.2774 1.159882668 3.159882668
41 2 0.048780488 1 0 0.2774 1.159882668 3.159882668
212 170 0.801886792 0 0 0.2093 1.133397521 1.133397521
143 21 0.146853147 1 1 0.1206 1.128993008 1.128993008
143 0 0 1 1 0.1707 1.128993008 2.128993008
143 33 0.230769231 0 1 0.0699 1.128993008 1.128993008
73 62 1.260273973 0 1 0.1351 NA 1.121927228
73 17 0.232876712 0 1 0.1206 NA 1.121927228")

Thanks in advance for any help.

See vignette("brms_multivariate") for how to specify different families for different models parts.

1 Like

Thanks, @paul.buerkner. vignette("brms_multivariate") is straightforward.

I would like to know whether (1) below is doing what I want to accomplish with (2). If not, how could the problem of (2) be solved?

(1) When I fit the multivariate model without adding | mi() on the left-hand side of bf_outcome, the model runs well:

bf_outcome <- bf(treat ~ mi(c1)+(1|group)) + bernoulli()
bf_imputation <-bf(c1| mi() ~ c2) + gaussian()

imputed_fit <-brm(bf_outcome + bf_imputation + set_rescor(FALSE),
data=dt, chains = 2, cores = 2,
)

(2) But when I add | mi() on the left-hand side of bf_outcome to ensure that missings in both variables will be modeled rather than excluded, I get the error message:

bf_outcome <- bf(treat | mi()~ mi(c1)+(1|group)) + bernoulli()
bf_imputation <-bf(c1| mi() ~ c2) + gaussian()

imputed_fit <-brm(bf_outcome + bf_imputation + set_rescor(FALSE),
data=dt, chains = 2, cores = 2,