Interpretation of cor term from multivariate animal models

Great. So here’s an example - let’s say we measure threee song lengths for three mice and we have the model Resp ~ (1 || ID). This model has three “main” parameters: Intercept (which we will not care about here), the “global” or “residual” variability sigma and the “between-mice” variability sd_Intercept_ID. Let’s say our data looks like this:

Example 1:
MouseA: 13 12 14
MouseB: 25 22 21
MouseC: 31 28 30

Without even running the model we can say that between-mice variability sd_Intercept_ID is much larger than the residual variability sigma.

But the data could have looked differently:

Example 2:
MouseA: 13 28 21
MouseB: 25 12 30
MouseC: 31 22 14

Here, the mice actually don’t differ much from each other, so sd_Intercept_ID will be smaller than sigma which becomes large to encompass the measurements change notably even within the same mouse. Makes sense so far?

The point is that in both examples, the first observations are exactly the same, so if we observed just the first column, we are unable to distinguish between “large sd_Intercept_ID, small sigma” and “small sd_Intercept_SD, large sigma” (and everything in between).

Technical aside for completeness: if you observe only one value per mouse, the model only informs the total sd which is sqrt(sd_Intercept_SD^2 + sigma^2), and that’s why the pairs plot for the two looks roughly like a circle arc. Also, for some non-gaussian families you could - at least in principle - identify sd_Intercept_ID even when you have only one observation per individual, because the gaussian varying intercept can create a somewhat different variability pattern than the variability introduced by the family, but for gaussian family (and few others) the case is hopeless even in theory, because (with a bit of sloppy notation) normal(normal(mu, sd1), sd2) is exactly the same as normal(mu, sqrt(sd1 ^ 2 + sd2 ^ 2)).

Now for your data, it might actually make sense to take a different approach for each of the responses: The song length is not fixed per individual, there is (I assume) substantial within-individual variability and you have multiple measurements of the song length so you can identify both the “within-individual” and “between-individual” variability. For body size, I would expect much smaller within-individual variability (although there probably is some due to measurement imprecisions, and I’ve heard people’s height changes slightly over the course of day so mice’s probably do so as well). While you can’t directly quantify the within-individual variability as you have only a single measurement, I guess you can easily put some quite strict bounds on it using your knowledge of the domain. In a single-response model this could be achived by putting a narrow prior on sigma.

There would be some technical challenges for putting both in a single brms model. A slightly sub-optimal but probably easiest would be to use the se() addition term. You would have Resp1 | se(error) ~ ... This effectively fixes the sigma at a specific value separately for each row in the dataset which will no longer be estimated. The error represents a column in the data containing the standard error of the mean (sd(x) / sqrt(n)), so for song length, you would put average song length as the response and the observed standard error of the mean as error. For body size you would put the single measurement as the response and put the theoretically derived measurement error as error. (this paragraph is pure speculation on my side, I’ve never built such a model, but I think it should work).

If your responses are all positive, than the natural trasformation would IMHO be be taking the log (and potentially scaling then, but that might not be necessary). The log is also likely to reduce the skew, so you might be able to get away with gaussian family and use rescor (which I now believe to be quite beneficial).

As I said, this will change the interpretation of the coefficients but I think that this is actually more natural - say you get estimate of sd_intercept_ID roughly 5 for a model on the original scale: this means that between-mice variability is something like +/- 2*5. If the mean population song length is say 30, this is unproblematic but what if the mean song length is 8, this would imply that some mice have average song length of -2 …

If you work on the log scale and you get estimate of sd_intercept_ID roughly 0.55 ~= log(3)/2, this means that the between-mice variability is roughly between “the song is shorter by a factor of 3” and “the song is thirce as long” which makes sense regardless of the population mean…

Does that make sense?

2 Likes