I have troubles understanding the brms estimate for a random factor (which I assume is the (mean?) standard deviation for all the groups, sd(Intercept)
), and the estimate for each group given by mod$fit
.
I have a non-linear mixed model that estimated true prevalence (Tp) from apparent prevalence (Ap). My model:
mod <- brm(
bf(Ap~ Tp * Se + (1 - Tp) * (1 - Sp),
Tp ~ 1 + (1|site),
Se + Sp ~ 1,
nl = T),
family = bernoulli(link = 'identity'), data, chains = 4)
priors <- c(set_prior('beta(2,2)', class = 'b', nlpar = 'Tp', ub = 1, lb = 0), #get_prior() tells me that intercept is also of class 'b'
set_prior('beta(2,10)', class = 'sd', nlpar = 'Tp', ub = 1, lb = 0),
set_prior('beta(10,1)', class = 'b', nlpar = 'Se', ub = 1, lb = 0),
set_prior('beta(15,1)', class = 'b', nlpar = 'Sp', ub = 1, lb = 0))
and now mod$fit
:
Inference for Stan model: anon_model.
4 chains, each with iter=2000; warmup=1000; thin=1;
post-warmup draws per chain=1000, total post-warmup draws=4000.
mean se_mean sd 2.5% 25%
b_Tp_Intercept 0.40 0.00 0.09 0.19 0.34
b_Se_Intercept 0.89 0.00 0.09 0.66 0.85
b_Sp_Intercept 0.94 0.00 0.06 0.79 0.91
sd_site__Tp_Intercept 0.18 0.00 0.06 0.06 0.14
r_site__Tp[Goe1392,Intercept] -0.17 0.00 0.14 -0.44 -0.26
r_site__Tp[Goe1425,Intercept] 0.07 0.00 0.13 -0.18 -0.01
r_site__Tp[Goe235,Intercept] -0.16 0.01 0.14 -0.44 -0.25
r_site__Tp[Goe288,Intercept] 0.12 0.00 0.14 -0.12 0.02
r_site__Tp[Goe47,Intercept] -0.17 0.00 0.14 -0.44 -0.26
...
in mod$fit
(e.g., r_site_Tp[Goe1392], Intercept
) the estimates are mostly 0.1 or -0.1. Negative numbers are not possible as specified by my priors bounds and beta families.
Regarding the model itself, I get hundreds of divergent transitions, but the effective sample sizes, the Rhat and the estimates are correct (very similar to no random effect model). What are the r_site
values exactly and why are they negative?