Skip to content

Commit d5ed019

Browse files
committed
Add option to pull coef() instead of ranef() for random effects
Fixes #1067
1 parent b31860f commit d5ed019

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

R/group_level_total.R

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#' @keyword internal
2+
.group_level_total <- function(model, ...) {
3+
UseMethod(".group_level_total")
4+
}
5+
6+
7+
#' @keyword internal
8+
.group_level_total.glmmTMB <- function(model, ...) {
9+
params <- suppressWarnings(insight::compact_list(stats::coef(model)))
10+
params_cond <- params$cond
11+
params_zi <- params$zi
12+
13+
if (!is.null(params_cond)) {
14+
group_levels <- insight::compact_list(lapply(
15+
model$modelInfo$reTrms$cond$flist,
16+
levels
17+
))
18+
params_cond <- .reshape_group_level_coefficients(
19+
model,
20+
params_cond,
21+
group_levels = group_levels
22+
)
23+
}
24+
if (!is.null(params_zi)) {
25+
group_levels <- insight::compact_list(lapply(
26+
model$modelInfo$reTrms$zi$flist,
27+
levels
28+
))
29+
params_zi <- .reshape_group_level_coefficients(
30+
model,
31+
params_zi,
32+
group_levels = group_levels,
33+
component = "zero_inflated_random"
34+
)
35+
}
36+
}
37+
38+
39+
# helper ----------------------------------------------------------------------
40+
41+
.reshape_group_level_coefficients <- function(model,
42+
params,
43+
group_levels,
44+
component = "random") {
45+
group_factors <- insight::find_random(model)
46+
random_slopes <- insight::find_random_slopes(model)
47+
48+
# find all columns for which we can add fixed and random effects
49+
cols <- c(random_slopes[[component]], "(Intercept)")
50+
51+
# iterate all random effects, add group name and levels
52+
for (i in group_factors[[component]]) {
53+
params[[i]] <- params[[i]][cols]
54+
params[[i]]$Group <- i
55+
params[[i]]$Level <- group_levels[[i]]
56+
}
57+
58+
out <- do.call(rbind, params)
59+
datawizard::reshape_longer(out, select = seq_along(cols))
60+
}

0 commit comments

Comments
 (0)