Hi!
I am currently have a little trouble with specifying a multivariate model in brms
and am interested to see if anyone has any advice. Similar topics were discussed in a previous post, but I still have a few questions. Briefly, I have run an experiment where we have repeatedly measured multiple traits (i.e. activity, body condition etc.) every week in individual fish across their entire life. I also measured each individual’s lifespan (in days). Fish were also raised in two separate treatments. A simplified version of my dataset is as follows:
ID Week Activity Body_condition Lifespan_days Treatment
1 1 32.5 1.16 436 A
1 2 24.6 1.88 NA A
1 3 36.1 2.23 NA A
Etc.
One of the main questions is whether individuals who are more active for example, are also in better body condition and have a longer lifespan (and whether this varies by treatment). To do this, I have therefore fit something similar to the following multivariate model using the brms
package:
Activity_mod <- bf(Activity ~ Week + Treatment + (1|a|gr(ID, by = Treatment)), family = gaussian)
Condition_mod <- bf(Body_condition ~ Week + Treatment + (1|a|gr(ID, by = Treatment)), family = gaussian)
Lifespan_mod <- bf(Lifespan_days|mi() ~ Treatment + (1|a|gr(ID, by = Treatment)), family = gaussian)
Here, as I am interested in the correlation among individual intercepts, I have specific Individual ID as a random intercept, and allowed correlations to vary among intercepts (grouped by treatment). All response variables were also standardized prior to model fitting. However, as Lifespan has a reduced number of repeated measures , I have used imputation during model fitting to account for the missing data using the mi()
function.
The issue is that Lifespan obviously only has 1 measure per individual, and therefore allowing random intercepts to vary amongst individuals seems to result in issues with model fitting (i.e. large Rhat, low ESS). However, ideally I would like to estimate correlations between traits at the among-individual (i.e. intercept) level. I know that this can apparently be done using MCMCglmm
. See 'Multivariate modelling for individual variaiton - MCMCglmm tutorial, pages 13-16 (Tutorials | Tom Houslay).
But I am wondering if this could also be done using brms
? That is, whether I can estimate between trait correlations at the among-individual (i.e. intercept) level in brms
, where one of those traits only has 1 repeated measure in brms?
I hope this all makes sense. Any advice would be greatly appreciated!
Many thanks,
Jack