odd ratio interpretation in R with a random slope model

I have a graph like this above and I used the tab_model function in library sjPlot to report the results of my model. My Model is random intercept and random slope model. I am quite new with advance level of stats like this. My question is about odd ratio. Odd ratio of 1.40 (p < 0.001***, significant), which means that for a 1 unit increase in centred instance we expect to see a 1.40 increase in the odds of success being 1. That is my interpretation, as far as I understood but since it is a random slope model, each individual must have a odds ratio of its own because the slope of each of them are different. It can be hard to explain here without a data but maybe if someone can provide another similar example or link to a source which explains something similar, I would appreciate.

First of all many thanks for the answer in detail. It was super useful!

Anova test was not significant. And I would like to ask also that the correlation was 1. Does it change anything?

• Which analysis function did you use to fit the model? Lmer? In any case, OR = 1.40 is the average OR across all fish. In addition, the model has computed individual OR / coefficient for each fish and these are illustrated in your image. 0.03 is the magnitude of slope variance (between-fish differences in predictor-outcome relationship). May 18, 2023 at 17:16
• I used glmer function. mylogit_s <- glmer(success_1 ~ inst_diff_1 +(1+inst_diff_1|fish_ID), data = results, family = "binomial") May 18, 2023 at 20:15
• OK, so if you need the individual fish coefficients as numeric, you can access them simply by coef(mylogit_s). The second column will have the individual coefficients, though they are typically in log-odds format. You can of course transform them into odds ratios by exp() function. Not sure how it is in your field, but it's often customary to report the overall effect of the predictor (here the OR=1.40) numerically and report the individual coefficients visually (as you have already done with sjPlot here). May 18, 2023 at 21:29
• To add: to get the individual coefficients into data frame form, you can use ind_coefs<-data.frame(coef(mylogit_s)[[1]]) . May 18, 2023 at 22:00
• Thanks a lot. I definitely gained a better understanding from it. Appreciated. May 20, 2023 at 16:11

I'll put this as an answer as it probably won't fit into a comment. Please be warned that I don't know anything about the fish or biology :) so I don't have any subject knowledge. But I'll try to give my 2 cents.

So, first of all, there is a clear effect of inst_diff_1 on success across all fish on average. This, as we already discussed, is represented in the OR format as OR = 1.40. That is probably your main result.

Regarding individual differences in this relationship, your output says that the individual-fish-related variance in the the inst_diff_1 --> success relationship is 0.03. Now it's hard to interpret this number without subject knowledge, I'd say it's small but not non-existent. However, you can formally test whether the fish-related differences in this relationship are statistically significant by running 2 models, one forcing all fishes' regression coefficients to equality (i.e., removing the random slope), and then your current model, and run a model comparison ANOVA to check whether having the random slope improves the model, like this:

mylogit_s <- glmer(success_1 ~ inst_diff_1 +(inst_diff_1|fish_ID), data = results, family = "binomial")

mylogit_check <- glmer(success_1 ~ inst_diff_1 +(1|fish_ID), data = results, family = "binomial")

anova(mylogit_check, mylogit_s)


If the anova test is significant, there are significant fish-related differences in inst_diff_1 -> success relationship. Maybe, if you have measured other fish-related variables, they might explain this variance and you could add them as predictors of success? If not, you can anyways report that you found significant fish-related differences in the relationship (...but probably quite small ones). If the anova is not significant, then there are no statistically significant fish-related differences in the relationship.

(The following may be irrelevant, but just for completeness:)

The ICC refers to the relative amount of variance in the level of success_1 attributable to fish identity, so basically the average level of success of each individual fish, but (here I'm a little unsure) it is my understanding that ICC is interpretable only if you run an unconditional model with no random slope and no predictors apart from the fish identity. So you can check this with

mylogit_unconditional <- glmer(success_1 ~ (1|fish_ID), data = results, family = "binomial")

performance::icc(mylogit_unconditional)

#the resulting ICC gives you the relative amount of variance (out of all variance) in the level of "success" that is attributable to fish identity (i.e. how strongly fish differed from each other in their average levels of success across your measurements).