Using mi() for Covariates of a Multivariate Model

Hello,

I’m working to fit a multivariate location scale model for partners in a dyad. Here is the code I’d like to use to specify my model:

actor_bf6 <- bf(actor_pa_rel | mi() ~ 1 + mi(partner_pa_gral_c) + mi(lagged_actor_pa_gral_c) + mi(rel_sat) + partner_pa_gral_mean + (1 |c| id_dyad),
                sigma ~ 1 + mi(rel_sat) + mi(partner_na_gral_c) + partner_na_gral_mean + (1 |c| id_dyad)) +
  bf(partner_pa_gral_c | mi() ~ 1) +
  bf(lagged_actor_pa_gral_c | mi() ~ 1) +
  bf(rel_sat | mi() ~ 1) +
  bf(partner_na_gral_c | mi() ~ 1) +
  set_rescor(TRUE)

partner_bf6 <- bf(partner_pa_rel | mi() ~ 1 + mi(actor_pa_gral_c) + mi(lagged_partner_pa_gral_c) + mi(rel_sat) + actor_pa_gral_mean + (1 |c| id_dyad),
                  sigma ~ 1 + mi(rel_sat) + mi(actor_na_gral_c) + actor_na_gral_mean + (1 |c| id_dyad)) +
  bf(actor_pa_gral_c | mi() ~ 1) +
  bf(lagged_partner_pa_gral_c | mi() ~ 1) +
  bf(rel_sat | mi() ~ 1) +
  bf(actor_na_gral_c | mi() ~ 1) +
  set_rescor(TRUE)

fit_fb6 <- brm(actor_bf6 + partner_bf6, data = actor_data, seed = 111, iter = 50000)

The issue is that I get an error message when fitting the above model:

Error: Don’t know how to add a mvbrmsformulabform object without the response variable name. See help(‘brmsformula-helpers’) for more details.

This error does not appear for:

actor_bf6 <- bf(actor_pa_rel | mi() ~ 1 + mi(partner_pa_gral_c) + mi(lagged_actor_pa_gral_c) + mi(rel_sat) + partner_pa_gral_mean + (1 |c| id_dyad),
                sigma ~ 1 + mi(rel_sat) + mi(partner_na_gral_c) + partner_na_gral_mean + (1 |c| id_dyad)) +
  bf(partner_pa_gral_c | mi() ~ 1) +
  bf(lagged_actor_pa_gral_c | mi() ~ 1) +
  bf(rel_sat | mi() ~ 1) +
  bf(partner_na_gral_c | mi() ~ 1) +
  set_rescor(TRUE)

partner_bf6 <- bf(partner_pa_rel | mi() ~ 1 + actor_pa_gral_c + lagged_partner_pa_gral_c + rel_sat + actor_pa_gral_mean + (1 |c| id_dyad),
                  sigma ~ 1 + rel_sat + actor_na_gral_c + actor_na_gral_mean + (1 |c| id_dyad)) +
  bf(actor_pa_gral_c | mi() ~ 1) +
  set_rescor(TRUE)

fit_fb6 <- brm(actor_bf6 + partner_bf6, data = partner_data, seed = 111, iter = 50000)

However, the error appears as soon as I edit the above code to also impute actor_pa_gral_c in partner_bf6.

I’ve uploaded my data and would greatly appreciate if anyone could help!

actor_data.csv (4.1 MB)

Madeline

Could you print the output of actor_bf6 + partner_bf6 ? Like, I just want to see how brms is interpreting this combined brmsformula.

I’m not exactly sure what you mean by printing the output, but here is a screenshot of the output in the console when I try to fit the combined brmsformula:

No no, I mean literally printing: print(actor_bf6 + partner_bf6)

I see the same message.

I’m really not sure. Maybe @paul.buerkner can lend some insight into this?

1 Like

Thanks! Looks like a bug or at least an uninformative error message. I will take a look.

I improved the error message to now be for informative. In short, just add all the brmsformula objects directly in one step. As a side note, with Stan you probably won’t want or need to run 50000 iterations per chain.

Thank you @paul.buerkner ! Adding all brmsformula objects in one step solved the problem (although the error message doesn’t appear to be more informative when I add the brmsformula objects in two separate steps like I was doing before).

Thanks for taking a look @Stephen_Martin !