Hypothesis function on Intercept for mixed-effects model

Dear All,

I am struggling to interpret the result of the hypothesis function in an analysis I’ve run, and would appreciate any guidance. I’m not sure whether I have done something wrong or am just failing to understand the output.

I’ve run the following model to analyse a between-subjects single-factor experiment (with a continuous dependent variable and 18 items):

m1 ← brm(DV ~ Condition + (Condition|Item) + (1|ID), data = Data, iter = 4000, chains = 3, refresh = 0, prior = c(prior(normal(0, 100), class = “Intercept”), prior(normal(0, 100), class = “b”), prior(cauchy(0, 5), class = “sigma”)), sample_prior = TRUE)

The treatment-coded variable ‘Condition’ has the levels ‘Null’, ‘Double’, ‘PropAtt’, and ‘Unhedged’. The model produces the following estimates for the population-level effects.

Population-Level Effects: 
                     Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
Intercept            77.04      2.76    71.48    82.46        798 1.00
ConditionDouble     -27.70      3.58   -34.67   -20.32        767 1.01
ConditionPropAtt    -27.98      3.53   -34.87   -21.05        859 1.01
ConditionUnhedged   -25.23      3.53   -32.16   -18.19        879 1.01

I’d like to test some point hypotheses with the ‘hypothesis’ function. This works well for most hypotheses. For instance:

hypothesis(m1, “ConditionUnhedged = ConditionPropAtt”)

produces

Hypothesis Tests for class b:
Hypothesis Estimate Est.Error CI.Lower CI.Upper Evid.Ratio
1 (ConditionUnhedge… = 0 2.75 3.44 -4.14 9.5 30.42
Post.Prob Star
1 0.97

But comparing the null (control) condition with the others produces a result I don’t understand. For instance:
hypothesis(m1, “Intercept = ConditionUnhedged”)

Hypothesis Tests for class b:
Hypothesis Estimate Est.Error CI.Lower CI.Upper Evid.Ratio
1 (Intercept)-(Cond… = 0 102.26 5.24 91.77 112.62 0
Post.Prob Star
1 0 *

This estimate doesn’t seem to correspond to the difference between the “Intercept” and “ConditionUnhedged” estimates for the population-level effects. And yet it seems like it should, according to examples in various online tutorials. If I compare the intercept versus specific values, however, it once again makes sense, i.e. testing whether the intercept, above, is equal to 75 would return the estimate 2.04.

Any help interpreting/correcting this would be very much appreciated. I’m sorry if it’s a rather basic question - I’m a newcomer to the package. I’m happy to provide any more information.

Many thanks!

  • Operating System: macOS High Sierra
  • brms Version: 2.40

I see two problems.

  1. the intercept is the mean of the reference, while (by default) the other regression coeffcients of Condition are differences between means of one group and the reference group. Accordingly, your intercept comparison may not make much sense.

  2. If you are interested in Bayes factors of comparisons, including the intercept, please use the 0 + Intercept notation in the formula for reasons explained in ?set_prior.

Right! I had rather misunderstood the logic of what was happening, but this is now very clear. Thank you.