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

rstan

#1

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
dt = read.table(header = TRUE, text = "
        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.


#2

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


#3

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,
    control = list(adapt_delta = 0.95)
  )

(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,
    control = list(adapt_delta = 0.95)
  )

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

Thanks in advance for any help.