Interpreting a model with an ordinal predictor

Hi,
We have fitted a multilevel binomial regression model to our data with one of the predictors being an ordinal variable with the following formula:

ResponseN ~ 0 + Bias:DistanceN:Language + Bias:DistanceN:mo(Step) + Bias:DistanceN:Language:mo(Step) + (0 + Bias:DistanceN + Bias:DistanceN:mo(Step) | SubjectID)

The response is coded as 0 or 1.
The ordinal variable Step has five values in our data (1, 4, 5, 6, 10). All the categorical predictors have two levels (Bias: taendt and sendt, DistanceN: NEAR and FAR, Language: Norwegian and Danish). Now we want to test hypotheses at the midpoint (i.e. Step = 5). For this, we’re trying to construct the posterior estimates at the mid-point with the following code :

post <- posterior_samples(model)
post <- post %>% mutate(

tNEARdkmid = b_Biastaendt:DistanceNNEAR:LanguageDanish + simo_Biastaendt:DistanceNNEAR:moStep1[1]+simo_Biastaendt:DistanceNNEAR:moStep1[2]+simo_Biastaendt:DistanceNNEAR:moStep1[3]+simo_Biastaendt:DistanceNNEAR:moStep1[4],
sNEARdkmid = b_Biassendt:DistanceNNEAR:LanguageDanish + simo_Biassendt:DistanceNNEAR:moStep1[1]+simo_Biassendt:DistanceNNEAR:moStep1[2]+simo_Biassendt:DistanceNNEAR:moStep1[3]+simo_Biassendt:DistanceNNEAR:moStep1[4],
tFARdkmid = b_Biastaendt:DistanceNFAR:LanguageDanish + simo_Biastaendt:DistanceNFAR:moStep1[1]+simo_Biastaendt:DistanceNFAR:moStep1[2]+simo_Biastaendt:DistanceNFAR:moStep1[3]+simo_Biastaendt:DistanceNFAR:moStep1[4],
sFARdkmid = b_Biassendt:DistanceNFAR:LanguageDanish + simo_Biassendt:DistanceNFAR:moStep1[1]+simo_Biassendt:DistanceNFAR:moStep1[2]+simo_Biassendt:DistanceNFAR:moStep1[3]+simo_Biassendt:DistanceNFAR:moStep1[4],
tNEARnomid = b_Biastaendt:DistanceNNEAR:LanguageNorwegian + simo_Biastaendt:DistanceNNEAR:moStep:LanguageNorwegian1[1]+simo_Biastaendt:DistanceNNEAR:moStep:LanguageNorwegian1[2]+simo_Biastaendt:DistanceNNEAR:moStep:LanguageNorwegian1[3]+simo_Biastaendt:DistanceNNEAR:moStep:LanguageNorwegian1[4],
sNEARnomid = b_Biassendt:DistanceNNEAR:LanguageNorwegian + simo_Biassendt:DistanceNNEAR:moStep:LanguageNorwegian1[1]+simo_Biassendt:DistanceNNEAR:moStep:LanguageNorwegian1[2]+simo_Biassendt:DistanceNNEAR:moStep:LanguageNorwegian1[3]+simo_Biassendt:DistanceNNEAR:moStep:LanguageNorwegian1[4],
tFARnomid = b_Biastaendt:DistanceNFAR:LanguageNorwegian + simo_Biastaendt:DistanceNFAR:moStep:LanguageNorwegian1[1]+simo_Biastaendt:DistanceNFAR:moStep:LanguageNorwegian1[2]+simo_Biastaendt:DistanceNFAR:moStep:LanguageNorwegian1[3]+simo_Biastaendt:DistanceNFAR:moStep:LanguageNorwegian1[4],
sFARnomid = b_Biassendt:DistanceNFAR:LanguageNorwegian + simo_Biassendt:DistanceNFAR:moStep:LanguageNorwegian1[1]+simo_Biassendt:DistanceNFAR:moStep:LanguageNorwegian1[2]+simo_Biassendt:DistanceNFAR:moStep:LanguageNorwegian1[3]+simo_Biassendt:DistanceNFAR:moStep:LanguageNorwegian1[4]
)

Now what is puzzling us is that the mid-point estimates end up being negative. But when we plot the raw data or the predicted values, we see that at the mid-point the response “1” is above 50% and therefore it has to be positive in the log-odd space.

So my question is are we not interpreting our model correctly? What are we doing wrong that results in negative estimates at Step = 5?

Thanks in advance!

1 Like

Can you use the builtin brms predict or fitted functions to get these values?

Check out: ?brmsfit.predict and ?brmsfit.fitted

1 Like

I just ask cause those formulas look really involved and so it seems there’s probably just a typo or just a difference in how brms implements the formula vs. what you might expect. It’d be easier if brms does all the bookkeeping for us.

1 Like