It appears that get_variance() in insight (v0.99.0.13) doesn’t handle brms models with an intercept-only sigma term correctly. When comparing models with and without sigma, the expected residual variance (var.residual) and distribution variance (var.distribution) should match, as both models are essentially equivalent. However, the results differ.
library(brms)
library(insight)
# Model without sigma
mdl1 <- brm(mpg ~ hp + (1 | cyl), data = mtcars, seed = 123)
get_variance(mdl1)
# Output:
# $var.fixed
# [1] 4.911032
# $var.random
# [1] 22.40697
# $var.residual
# [1] 10.93045
# $var.distribution
# [1] 10.93045
# Model with intercept-only sigma
mdl2 <- brm(bf(mpg ~ hp + (1 | cyl), sigma ~ 1), data = mtcars, seed = 123)
get_variance(mdl2)
# Output:
# $var.fixed
# [1] 4.910691
# $var.random
# [1] 23.4812
# $var.residual
# [1] 1
# $var.distribution
# [1] 1
It appears that get_variance() in insight (v0.99.0.13) doesn’t handle brms models with an intercept-only sigma term correctly. When comparing models with and without sigma, the expected residual variance (var.residual) and distribution variance (var.distribution) should match, as both models are essentially equivalent. However, the results differ.