Closed GidonFrischkorn closed 6 months ago
Strange. I can look into it
Ok, this is not a problem with the grouped random effects, but a problem when there are random effects and an interaction only fixed effects:
data <- oberauer_lin_2017
model <- mixture2p('dev_rad')
# this is fine
formula <- bmf(
kappa ~ 0 + set_size*session + (1|ID),
thetat ~ 0 + set_size*session + (1|ID)
)
default_prior(formula, data, model)
#> prior class coef group resp dpar nlpar lb ub source link
#> logistic(0, 1) theta2 -Inf Inf default identity
#> normal(0, 1) b session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size2:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size3:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size4:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size5:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size6:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size7:session2 kappa <NA> <NA> (vectorized) identity
#> normal(0, 1) b set_size8:session2 kappa <NA> <NA> (vectorized) identity
#> student_t(3, 0, 2.5) sd kappa 0 default identity
#> student_t(3, 0, 2.5) sd ID kappa 0 (vectorized) identity
#> student_t(3, 0, 2.5) sd Intercept ID kappa 0 (vectorized) identity
#> (flat) b thetat default identity
#> (flat) b session2 thetat (vectorized) identity
#> (flat) b set_size2:session2 thetat (vectorized) identity
#> (flat) b set_size3:session2 thetat (vectorized) identity
#> (flat) b set_size4:session2 thetat (vectorized) identity
#> (flat) b set_size5:session2 thetat (vectorized) identity
#> (flat) b set_size6:session2 thetat (vectorized) identity
#> (flat) b set_size7:session2 thetat (vectorized) identity
#> (flat) b set_size8:session2 thetat (vectorized) identity
#> student_t(3, 0, 2.5) sd thetat 0 default identity
#> student_t(3, 0, 2.5) sd ID thetat 0 (vectorized) identity
#> student_t(3, 0, 2.5) sd Intercept ID thetat 0 (vectorized) identity
#> normal(0, 1) b kappa <NA> <NA> user identity
#> normal(2, 1) b set_size1 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size2 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size3 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size4 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size5 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size6 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size7 kappa <NA> <NA> user identity
#> normal(2, 1) b set_size8 kappa <NA> <NA> user identity
#> logistic(0, 1) b set_size1 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size2 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size3 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size4 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size5 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size6 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size7 thetat <NA> <NA> user identity
#> logistic(0, 1) b set_size8 thetat <NA> <NA> user identity
#> constant(0) Intercept mu1 <NA> <NA> user tan_half
#> constant(0) Intercept mu2 <NA> <NA> user identity
#> constant(-100) Intercept kappa2 <NA> <NA> user identity
# this is not fine
formula <- bmf(
kappa ~ 0 + set_size:session + (1|ID),
thetat ~ 0 + set_size:session + (1|ID)
)
default_prior(formula, data, model)
#> prior class coef group resp dpar nlpar lb ub source link
#> logistic(0, 1) theta2 -Inf Inf default identity
#> (flat) b kappa default identity
#> (flat) b set_size1:session1 kappa (vectorized) identity
#> (flat) b set_size1:session2 kappa (vectorized) identity
#> (flat) b set_size2:session1 kappa (vectorized) identity
#> (flat) b set_size2:session2 kappa (vectorized) identity
#> (flat) b set_size3:session1 kappa (vectorized) identity
#> (flat) b set_size3:session2 kappa (vectorized) identity
#> (flat) b set_size4:session1 kappa (vectorized) identity
#> (flat) b set_size4:session2 kappa (vectorized) identity
#> (flat) b set_size5:session1 kappa (vectorized) identity
#> (flat) b set_size5:session2 kappa (vectorized) identity
#> (flat) b set_size6:session1 kappa (vectorized) identity
#> (flat) b set_size6:session2 kappa (vectorized) identity
#> (flat) b set_size7:session1 kappa (vectorized) identity
#> (flat) b set_size7:session2 kappa (vectorized) identity
#> (flat) b set_size8:session1 kappa (vectorized) identity
#> (flat) b set_size8:session2 kappa (vectorized) identity
#> student_t(3, 0, 2.5) sd kappa 0 default identity
#> student_t(3, 0, 2.5) sd ID kappa 0 (vectorized) identity
#> student_t(3, 0, 2.5) sd Intercept ID kappa 0 (vectorized) identity
#> (flat) b thetat default identity
#> (flat) b set_size1:session1 thetat (vectorized) identity
#> (flat) b set_size1:session2 thetat (vectorized) identity
#> (flat) b set_size2:session1 thetat (vectorized) identity
#> (flat) b set_size2:session2 thetat (vectorized) identity
#> (flat) b set_size3:session1 thetat (vectorized) identity
#> (flat) b set_size3:session2 thetat (vectorized) identity
#> (flat) b set_size4:session1 thetat (vectorized) identity
#> (flat) b set_size4:session2 thetat (vectorized) identity
#> (flat) b set_size5:session1 thetat (vectorized) identity
#> (flat) b set_size5:session2 thetat (vectorized) identity
#> (flat) b set_size6:session1 thetat (vectorized) identity
#> (flat) b set_size6:session2 thetat (vectorized) identity
#> (flat) b set_size7:session1 thetat (vectorized) identity
#> (flat) b set_size7:session2 thetat (vectorized) identity
#> (flat) b set_size8:session1 thetat (vectorized) identity
#> (flat) b set_size8:session2 thetat (vectorized) identity
#> student_t(3, 0, 2.5) sd thetat 0 default identity
#> student_t(3, 0, 2.5) sd ID thetat 0 (vectorized) identity
#> student_t(3, 0, 2.5) sd Intercept ID thetat 0 (vectorized) identity
#> normal(2, 1) b 1 | ID kappa <NA> <NA> user identity
#> logistic(0, 1) b 1 | ID thetat <NA> <NA> user identity
#> constant(0) Intercept mu1 <NA> <NA> user tan_half
#> constant(0) Intercept mu2 <NA> <NA> user identity
#> constant(-100) Intercept kappa2 <NA> <NA> user identity
Created on 2024-04-07 with reprex v2.1.0
Describe the bug When using a
bmmformula
that includes grouped random effects, such as the formula we use in the second example of our Tutorial manuscript:then the
default_prior
function does not parse these effects correctly. As a result it only sets priors on the whole formula, as it does not recognize thegr()
commond around the grouping variableID
.To Reproduce Using the
wmData
of the second example, you can reproduce the error specifying the followingbmmodel
andbmf
:Here is a screenshot from the output:
Expected behavior If implemented correctly, the
bmm
default priors specified in thebmmodel
should be applied to theflat
priors listed in the output.