Altered fixed effect parameters when using different random effect distributions on same data

Hi all,

I have an odd finding when it comes to fixed population effects when using different random effect distributions. Thanks to @paul.buerkner, brms has an option of a Student t distribution for the random effect distribution. However, when I compare the values of the fixed-effect parameters between the Gaussian and t distributions, they are significantly different. I confirmed that the models converged in both cases and also reran the data with non-informative priors of normal(0,1000). I also reviewed the Stan code generated by brms and found no clear errors.

Below is the code used for the two models, followed by the respective output.

Gaussian model:

nd_full = brm(
  md ~ time_sap + (1+ time_sap|eyeid),
  data = final_sap,
  family = gaussian(),
  set_prior("normal(0,1000)", class='b'),
  warmup = 1000, iter = 8000, chains = 4,
  control=list(adapt_delta=0.9, max_treedepth = 15))

Output:

summary(nd_full)
Family: gaussian
Links: mu = identity; sigma = identity
Formula: md ~ time_sap + (1 + time_sap | eyeid)
Data: final_sap (Number of observations: 10081)
Samples: 4 chains, each with iter = 8000; warmup = 1000; thin = 1;
total post-warmup samples = 28000

Group-Level Effects:
~eyeid (Number of levels: 1242)
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
sd(Intercept) 5.20 0.11 4.99 5.42 1.00 5000
sd(time_sap) 0.35 0.01 0.33 0.38 1.00 13125
cor(Intercept,time_sap) 0.13 0.04 0.06 0.20 1.00 15928
Tail_ESS
sd(Intercept) 9456
sd(time_sap) 19009
cor(Intercept,time_sap) 19562

Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -4.02 0.15 -4.31 -3.73 1.00 2652 5896
time_sap -0.15 0.01 -0.17 -0.12 1.00 16717 19839

Family Specific Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma 1.62 0.01 1.59 1.65 1.00 19701 19799

Student t model:

t_full = brm(
 md ~ time_sap + (1+ time_sap|gr(eyeid, dist = "student")),
 data = final_sap,
 family = gaussian(),
 set_prior("normal(0,1000)", class='b'),
 warmup = 1000, iter = 8000, chains = 4,
 control=list(adapt_delta=0.9, max_treedepth = 15))

Output:

summary(t_full)
Family: gaussian
Links: mu = identity; sigma = identity
Formula: md ~ time_sap + (1 + time_sap | gr(eyeid, dist = “student”))
Data: final_sap (Number of observations: 10081)
Samples: 4 chains, each with iter = 8000; warmup = 1000; thin = 1;
total post-warmup samples = 28000

Group-Level Effects:
~eyeid (Number of levels: 1242)
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS
df 1.46 0.10 1.28 1.65 1.00 1888
sd(Intercept) 2.19 0.11 1.98 2.41 1.00 2082
sd(time_sap) 0.14 0.01 0.12 0.15 1.00 2467
cor(Intercept,time_sap) 0.22 0.05 0.13 0.32 1.00 6798
Tail_ESS
df 4714
sd(Intercept) 5625
sd(time_sap) 6468
cor(Intercept,time_sap) 12640

Population-Level Effects:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept -1.93 0.10 -2.12 -1.74 1.00 3656 8260
time_sap -0.07 0.01 -0.08 -0.05 1.00 12615 18970

Family Specific Parameters:
Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sigma 1.60 0.01 1.58 1.63 1.00 26854 21498

You will notice a significant difference in the estimates of the Population-level Effects between the Gaussian and t models. Why would altering the random effect distribution affect the fixed effect values? Many thanks in advance!

  • Operating System: Windows
  • brms Version: 2.13.3

The fixed effects is essentially a (weighted) average of the random effects. If the random effects change because of different shrinkage, the fixed effect might change as well. I suggest comparing the individual random effects of the two models. I suspect you will see some outliers in the t case that have been shrunken much more strongly in the gaussian case.