Comparing lme4 and brms
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(brms)
## Loading required package: Rcpp
## Loading 'brms' package (version 2.22.0). Useful instructions
## can be found by typing help('brms'). A more detailed introduction
## to the package is available through vignette('brms_overview').
##
## Attaching package: 'brms'
## The following object is masked from 'package:stats':
##
## ar
library(cmdstanr)
## This is cmdstanr version 0.8.1
## - CmdStanR documentation and vignettes: mc-stan.org/cmdstanr
## - CmdStan path: /home/sc.uni-leipzig.de/xl76asob/.cmdstan/cmdstan-2.36.0
## - CmdStan version: 2.36.0
app_data <- read.csv("../data/responses_2025-02-09.csv") %>% as_tibble()
app_data <- app_data %>%
mutate(item_type = case_when(
response_option_8 == 8 ~ "rating",
response_option_2 == "Nein" ~ "yes_no",
response_option_1 == "weiß es" ~ "knowledge",
TRUE ~ "pick_free_response")) %>%
group_by(user_id) %>%
mutate(played_games = n() / 5) %>%
ungroup()
table(app_data$item_type)
##
## knowledge pick_free_response rating yes_no
## 131707 224838 119670 305578
app_data %>% group_by(item_type) %>%
summarise(mean(response_is_correct))
## # A tibble: 4 × 2
## item_type `mean(response_is_correct)`
## <chr> <dbl>
## 1 knowledge 0.654
## 2 pick_free_response 0.374
## 3 rating 0.385
## 4 yes_no 0.586
users <- read.csv("../data/users_2025-02-09.csv") %>% as_tibble()
app_data$item_user_id <- paste(app_data$item_id, app_data$user_id, sep = "_")
app_data$user_target_id <- paste(app_data$user_id, app_data$target_id, sep = "_")
app_data$item_target_id <- paste(app_data$item_id, app_data$target_id, sep = "_")
app_data_X <- app_data %>% sample_n(1000)
red_app_data <- app_data %>%
filter(played_games > 9) %>%
group_by(user_id) %>%
filter(n_distinct(target_id) > 10)
red_yes_no <- red_app_data %>%
filter(item_type == "yes_no")
red_yes_no <- red_yes_no %>% left_join(users, by = "user_id")
options(brms.backend = "cmdstanr", mc.cores = 4, brms.file_refit = "on_change")
push <- function(model) {
msg <- paste(capture.output(summary(model)),collapse = "\n")
msg <- stringr::str_sub(msg, 360, 360 + 1023)
pushoverr::pushover(msg, deparse(substitute(model)), app = "a7qjzcymviuyhn7ofq6poh3da3tr5h")
}
library(lme4)
## Loading required package: Matrix
##
## Attaching package: 'lme4'
## The following object is masked from 'package:brms':
##
## ngrps
correct_lme4 <- glmer(response_is_correct ~ 1 + (1 | item_id) + (1 | user_id) + (1 | target_id) + (1 | item_id:target_id), data = red_yes_no, family = binomial("logit"))
push(correct_lme4)
summary(correct_lme4)
## Generalized linear mixed model fit by maximum likelihood (Laplace
## Approximation) [glmerMod]
## Family: binomial ( logit )
## Formula: response_is_correct ~ 1 + (1 | item_id) + (1 | user_id) + (1 |
## target_id) + (1 | item_id:target_id)
## Data: red_yes_no
##
## AIC BIC logLik deviance df.resid
## 326148.4 326201.2 -163069.2 326138.4 281685
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -7.8646 -0.8022 0.3875 0.7120 4.8052
##
## Random effects:
## Groups Name Variance Std.Dev.
## user_id (Intercept) 0.01209 0.1100
## item_id:target_id (Intercept) 1.16995 1.0816
## item_id (Intercept) 0.22557 0.4749
## target_id (Intercept) 0.00402 0.0634
## Number of obs: 281690, groups:
## user_id, 3744; item_id:target_id, 2200; item_id, 215; target_id, 75
##
## Fixed effects:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.44244 0.04181 10.58 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
correct_brms <- brm(
response_is_correct ~ 1 + (1 | item_id) + (1 | user_id) + (1 | target_id) + (1 | item_id:target_id),
data = red_yes_no,
family = bernoulli("logit"),
file = "red_m_correct_main_yes_no_lme4_comp",
threads = threading(4),
iter = 6000,
prior = prior(normal(0, 1), class = sd)
)
## Start sampling
## Running MCMC with 4 parallel chains, with 4 thread(s) per chain...
##
## Chain 1 Iteration: 1 / 6000 [ 0%] (Warmup)
## Chain 2 Iteration: 1 / 6000 [ 0%] (Warmup)
## Chain 3 Iteration: 1 / 6000 [ 0%] (Warmup)
## Chain 4 Iteration: 1 / 6000 [ 0%] (Warmup)
## Chain 2 Iteration: 100 / 6000 [ 1%] (Warmup)
## Chain 3 Iteration: 100 / 6000 [ 1%] (Warmup)
## Chain 1 Iteration: 100 / 6000 [ 1%] (Warmup)
## Chain 4 Iteration: 100 / 6000 [ 1%] (Warmup)
## Chain 2 Iteration: 200 / 6000 [ 3%] (Warmup)
## Chain 3 Iteration: 200 / 6000 [ 3%] (Warmup)
## Chain 1 Iteration: 200 / 6000 [ 3%] (Warmup)
## Chain 4 Iteration: 200 / 6000 [ 3%] (Warmup)
## Chain 2 Iteration: 300 / 6000 [ 5%] (Warmup)
## Chain 1 Iteration: 300 / 6000 [ 5%] (Warmup)
## Chain 4 Iteration: 300 / 6000 [ 5%] (Warmup)
## Chain 3 Iteration: 300 / 6000 [ 5%] (Warmup)
## Chain 2 Iteration: 400 / 6000 [ 6%] (Warmup)
## Chain 1 Iteration: 400 / 6000 [ 6%] (Warmup)
## Chain 3 Iteration: 400 / 6000 [ 6%] (Warmup)
## Chain 4 Iteration: 400 / 6000 [ 6%] (Warmup)
## Chain 2 Iteration: 500 / 6000 [ 8%] (Warmup)
## Chain 3 Iteration: 500 / 6000 [ 8%] (Warmup)
## Chain 4 Iteration: 500 / 6000 [ 8%] (Warmup)
## Chain 1 Iteration: 500 / 6000 [ 8%] (Warmup)
## Chain 2 Iteration: 600 / 6000 [ 10%] (Warmup)
## Chain 3 Iteration: 600 / 6000 [ 10%] (Warmup)
## Chain 4 Iteration: 600 / 6000 [ 10%] (Warmup)
## Chain 2 Iteration: 700 / 6000 [ 11%] (Warmup)
## Chain 3 Iteration: 700 / 6000 [ 11%] (Warmup)
## Chain 1 Iteration: 600 / 6000 [ 10%] (Warmup)
## Chain 2 Iteration: 800 / 6000 [ 13%] (Warmup)
## Chain 4 Iteration: 700 / 6000 [ 11%] (Warmup)
## Chain 3 Iteration: 800 / 6000 [ 13%] (Warmup)
## Chain 2 Iteration: 900 / 6000 [ 15%] (Warmup)
## Chain 4 Iteration: 800 / 6000 [ 13%] (Warmup)
## Chain 1 Iteration: 700 / 6000 [ 11%] (Warmup)
## Chain 3 Iteration: 900 / 6000 [ 15%] (Warmup)
## Chain 4 Iteration: 900 / 6000 [ 15%] (Warmup)
## Chain 2 Iteration: 1000 / 6000 [ 16%] (Warmup)
## Chain 3 Iteration: 1000 / 6000 [ 16%] (Warmup)
## Chain 1 Iteration: 800 / 6000 [ 13%] (Warmup)
## Chain 4 Iteration: 1000 / 6000 [ 16%] (Warmup)
## Chain 2 Iteration: 1100 / 6000 [ 18%] (Warmup)
## Chain 3 Iteration: 1100 / 6000 [ 18%] (Warmup)
## Chain 1 Iteration: 900 / 6000 [ 15%] (Warmup)
## Chain 4 Iteration: 1100 / 6000 [ 18%] (Warmup)
## Chain 2 Iteration: 1200 / 6000 [ 20%] (Warmup)
## Chain 1 Iteration: 1000 / 6000 [ 16%] (Warmup)
## Chain 4 Iteration: 1200 / 6000 [ 20%] (Warmup)
## Chain 2 Iteration: 1300 / 6000 [ 21%] (Warmup)
## Chain 3 Iteration: 1200 / 6000 [ 20%] (Warmup)
## Chain 1 Iteration: 1100 / 6000 [ 18%] (Warmup)
## Chain 4 Iteration: 1300 / 6000 [ 21%] (Warmup)
## Chain 2 Iteration: 1400 / 6000 [ 23%] (Warmup)
## Chain 3 Iteration: 1300 / 6000 [ 21%] (Warmup)
## Chain 4 Iteration: 1400 / 6000 [ 23%] (Warmup)
## Chain 1 Iteration: 1200 / 6000 [ 20%] (Warmup)
## Chain 2 Iteration: 1500 / 6000 [ 25%] (Warmup)
## Chain 3 Iteration: 1400 / 6000 [ 23%] (Warmup)
## Chain 4 Iteration: 1500 / 6000 [ 25%] (Warmup)
## Chain 1 Iteration: 1300 / 6000 [ 21%] (Warmup)
## Chain 2 Iteration: 1600 / 6000 [ 26%] (Warmup)
## Chain 3 Iteration: 1500 / 6000 [ 25%] (Warmup)
## Chain 4 Iteration: 1600 / 6000 [ 26%] (Warmup)
## Chain 1 Iteration: 1400 / 6000 [ 23%] (Warmup)
## Chain 2 Iteration: 1700 / 6000 [ 28%] (Warmup)
## Chain 4 Iteration: 1700 / 6000 [ 28%] (Warmup)
## Chain 1 Iteration: 1500 / 6000 [ 25%] (Warmup)
## Chain 3 Iteration: 1600 / 6000 [ 26%] (Warmup)
## Chain 2 Iteration: 1800 / 6000 [ 30%] (Warmup)
## Chain 4 Iteration: 1800 / 6000 [ 30%] (Warmup)
## Chain 1 Iteration: 1600 / 6000 [ 26%] (Warmup)
## Chain 3 Iteration: 1700 / 6000 [ 28%] (Warmup)
## Chain 4 Iteration: 1900 / 6000 [ 31%] (Warmup)
## Chain 2 Iteration: 1900 / 6000 [ 31%] (Warmup)
## Chain 1 Iteration: 1700 / 6000 [ 28%] (Warmup)
## Chain 3 Iteration: 1800 / 6000 [ 30%] (Warmup)
## Chain 4 Iteration: 2000 / 6000 [ 33%] (Warmup)
## Chain 2 Iteration: 2000 / 6000 [ 33%] (Warmup)
## Chain 1 Iteration: 1800 / 6000 [ 30%] (Warmup)
## Chain 4 Iteration: 2100 / 6000 [ 35%] (Warmup)
## Chain 3 Iteration: 1900 / 6000 [ 31%] (Warmup)
## Chain 1 Iteration: 1900 / 6000 [ 31%] (Warmup)
## Chain 2 Iteration: 2100 / 6000 [ 35%] (Warmup)
## Chain 4 Iteration: 2200 / 6000 [ 36%] (Warmup)
## Chain 3 Iteration: 2000 / 6000 [ 33%] (Warmup)
## Chain 1 Iteration: 2000 / 6000 [ 33%] (Warmup)
## Chain 2 Iteration: 2200 / 6000 [ 36%] (Warmup)
## Chain 4 Iteration: 2300 / 6000 [ 38%] (Warmup)
## Chain 1 Iteration: 2100 / 6000 [ 35%] (Warmup)
## Chain 3 Iteration: 2100 / 6000 [ 35%] (Warmup)
## Chain 2 Iteration: 2300 / 6000 [ 38%] (Warmup)
## Chain 4 Iteration: 2400 / 6000 [ 40%] (Warmup)
## Chain 1 Iteration: 2200 / 6000 [ 36%] (Warmup)
## Chain 3 Iteration: 2200 / 6000 [ 36%] (Warmup)
## Chain 4 Iteration: 2500 / 6000 [ 41%] (Warmup)
## Chain 2 Iteration: 2400 / 6000 [ 40%] (Warmup)
## Chain 1 Iteration: 2300 / 6000 [ 38%] (Warmup)
## Chain 3 Iteration: 2300 / 6000 [ 38%] (Warmup)
## Chain 4 Iteration: 2600 / 6000 [ 43%] (Warmup)
## Chain 2 Iteration: 2500 / 6000 [ 41%] (Warmup)
## Chain 1 Iteration: 2400 / 6000 [ 40%] (Warmup)
## Chain 3 Iteration: 2400 / 6000 [ 40%] (Warmup)
## Chain 4 Iteration: 2700 / 6000 [ 45%] (Warmup)
## Chain 1 Iteration: 2500 / 6000 [ 41%] (Warmup)
## Chain 2 Iteration: 2600 / 6000 [ 43%] (Warmup)
## Chain 4 Iteration: 2800 / 6000 [ 46%] (Warmup)
## Chain 3 Iteration: 2500 / 6000 [ 41%] (Warmup)
## Chain 1 Iteration: 2600 / 6000 [ 43%] (Warmup)
## Chain 2 Iteration: 2700 / 6000 [ 45%] (Warmup)
## Chain 4 Iteration: 2900 / 6000 [ 48%] (Warmup)
## Chain 3 Iteration: 2600 / 6000 [ 43%] (Warmup)
## Chain 1 Iteration: 2700 / 6000 [ 45%] (Warmup)
## Chain 2 Iteration: 2800 / 6000 [ 46%] (Warmup)
## Chain 1 Iteration: 2800 / 6000 [ 46%] (Warmup)
## Chain 3 Iteration: 2700 / 6000 [ 45%] (Warmup)
## Chain 4 Iteration: 3000 / 6000 [ 50%] (Warmup)
## Chain 4 Iteration: 3001 / 6000 [ 50%] (Sampling)
## Chain 2 Iteration: 2900 / 6000 [ 48%] (Warmup)
## Chain 1 Iteration: 2900 / 6000 [ 48%] (Warmup)
## Chain 2 Iteration: 3000 / 6000 [ 50%] (Warmup)
## Chain 2 Iteration: 3001 / 6000 [ 50%] (Sampling)
## Chain 3 Iteration: 2800 / 6000 [ 46%] (Warmup)
## Chain 4 Iteration: 3100 / 6000 [ 51%] (Sampling)
## Chain 2 Iteration: 3100 / 6000 [ 51%] (Sampling)
## Chain 1 Iteration: 3000 / 6000 [ 50%] (Warmup)
## Chain 1 Iteration: 3001 / 6000 [ 50%] (Sampling)
## Chain 3 Iteration: 2900 / 6000 [ 48%] (Warmup)
## Chain 2 Iteration: 3200 / 6000 [ 53%] (Sampling)
## Chain 1 Iteration: 3100 / 6000 [ 51%] (Sampling)
## Chain 3 Iteration: 3000 / 6000 [ 50%] (Warmup)
## Chain 3 Iteration: 3001 / 6000 [ 50%] (Sampling)
## Chain 4 Iteration: 3200 / 6000 [ 53%] (Sampling)
## Chain 2 Iteration: 3300 / 6000 [ 55%] (Sampling)
## Chain 1 Iteration: 3200 / 6000 [ 53%] (Sampling)
## Chain 3 Iteration: 3100 / 6000 [ 51%] (Sampling)
## Chain 2 Iteration: 3400 / 6000 [ 56%] (Sampling)
## Chain 1 Iteration: 3300 / 6000 [ 55%] (Sampling)
## Chain 3 Iteration: 3200 / 6000 [ 53%] (Sampling)
## Chain 4 Iteration: 3300 / 6000 [ 55%] (Sampling)
## Chain 2 Iteration: 3500 / 6000 [ 58%] (Sampling)
## Chain 1 Iteration: 3400 / 6000 [ 56%] (Sampling)
## Chain 3 Iteration: 3300 / 6000 [ 55%] (Sampling)
## Chain 2 Iteration: 3600 / 6000 [ 60%] (Sampling)
## Chain 1 Iteration: 3500 / 6000 [ 58%] (Sampling)
## Chain 3 Iteration: 3400 / 6000 [ 56%] (Sampling)
## Chain 2 Iteration: 3700 / 6000 [ 61%] (Sampling)
## Chain 4 Iteration: 3400 / 6000 [ 56%] (Sampling)
## Chain 1 Iteration: 3600 / 6000 [ 60%] (Sampling)
## Chain 3 Iteration: 3500 / 6000 [ 58%] (Sampling)
## Chain 2 Iteration: 3800 / 6000 [ 63%] (Sampling)
## Chain 1 Iteration: 3700 / 6000 [ 61%] (Sampling)
## Chain 3 Iteration: 3600 / 6000 [ 60%] (Sampling)
## Chain 2 Iteration: 3900 / 6000 [ 65%] (Sampling)
## Chain 4 Iteration: 3500 / 6000 [ 58%] (Sampling)
## Chain 1 Iteration: 3800 / 6000 [ 63%] (Sampling)
## Chain 3 Iteration: 3700 / 6000 [ 61%] (Sampling)
## Chain 2 Iteration: 4000 / 6000 [ 66%] (Sampling)
## Chain 1 Iteration: 3900 / 6000 [ 65%] (Sampling)
## Chain 3 Iteration: 3800 / 6000 [ 63%] (Sampling)
## Chain 2 Iteration: 4100 / 6000 [ 68%] (Sampling)
## Chain 4 Iteration: 3600 / 6000 [ 60%] (Sampling)
## Chain 1 Iteration: 4000 / 6000 [ 66%] (Sampling)
## Chain 2 Iteration: 4200 / 6000 [ 70%] (Sampling)
## Chain 3 Iteration: 3900 / 6000 [ 65%] (Sampling)
## Chain 1 Iteration: 4100 / 6000 [ 68%] (Sampling)
## Chain 2 Iteration: 4300 / 6000 [ 71%] (Sampling)
## Chain 3 Iteration: 4000 / 6000 [ 66%] (Sampling)
## Chain 4 Iteration: 3700 / 6000 [ 61%] (Sampling)
## Chain 1 Iteration: 4200 / 6000 [ 70%] (Sampling)
## Chain 2 Iteration: 4400 / 6000 [ 73%] (Sampling)
## Chain 3 Iteration: 4100 / 6000 [ 68%] (Sampling)
## Chain 1 Iteration: 4300 / 6000 [ 71%] (Sampling)
## Chain 2 Iteration: 4500 / 6000 [ 75%] (Sampling)
## Chain 3 Iteration: 4200 / 6000 [ 70%] (Sampling)
## Chain 4 Iteration: 3800 / 6000 [ 63%] (Sampling)
## Chain 2 Iteration: 4600 / 6000 [ 76%] (Sampling)
## Chain 1 Iteration: 4400 / 6000 [ 73%] (Sampling)
## Chain 3 Iteration: 4300 / 6000 [ 71%] (Sampling)
## Chain 2 Iteration: 4700 / 6000 [ 78%] (Sampling)
## Chain 1 Iteration: 4500 / 6000 [ 75%] (Sampling)
## Chain 3 Iteration: 4400 / 6000 [ 73%] (Sampling)
## Chain 4 Iteration: 3900 / 6000 [ 65%] (Sampling)
## Chain 2 Iteration: 4800 / 6000 [ 80%] (Sampling)
## Chain 1 Iteration: 4600 / 6000 [ 76%] (Sampling)
## Chain 3 Iteration: 4500 / 6000 [ 75%] (Sampling)
## Chain 2 Iteration: 4900 / 6000 [ 81%] (Sampling)
## Chain 1 Iteration: 4700 / 6000 [ 78%] (Sampling)
## Chain 3 Iteration: 4600 / 6000 [ 76%] (Sampling)
## Chain 4 Iteration: 4000 / 6000 [ 66%] (Sampling)
## Chain 2 Iteration: 5000 / 6000 [ 83%] (Sampling)
## Chain 1 Iteration: 4800 / 6000 [ 80%] (Sampling)
## Chain 3 Iteration: 4700 / 6000 [ 78%] (Sampling)
## Chain 2 Iteration: 5100 / 6000 [ 85%] (Sampling)
## Chain 1 Iteration: 4900 / 6000 [ 81%] (Sampling)
## Chain 3 Iteration: 4800 / 6000 [ 80%] (Sampling)
## Chain 4 Iteration: 4100 / 6000 [ 68%] (Sampling)
## Chain 2 Iteration: 5200 / 6000 [ 86%] (Sampling)
## Chain 3 Iteration: 4900 / 6000 [ 81%] (Sampling)
## Chain 1 Iteration: 5000 / 6000 [ 83%] (Sampling)
## Chain 2 Iteration: 5300 / 6000 [ 88%] (Sampling)
## Chain 3 Iteration: 5000 / 6000 [ 83%] (Sampling)
## Chain 1 Iteration: 5100 / 6000 [ 85%] (Sampling)
## Chain 4 Iteration: 4200 / 6000 [ 70%] (Sampling)
## Chain 2 Iteration: 5400 / 6000 [ 90%] (Sampling)
## Chain 3 Iteration: 5100 / 6000 [ 85%] (Sampling)
## Chain 1 Iteration: 5200 / 6000 [ 86%] (Sampling)
## Chain 2 Iteration: 5500 / 6000 [ 91%] (Sampling)
## Chain 3 Iteration: 5200 / 6000 [ 86%] (Sampling)
## Chain 1 Iteration: 5300 / 6000 [ 88%] (Sampling)
## Chain 4 Iteration: 4300 / 6000 [ 71%] (Sampling)
## Chain 2 Iteration: 5600 / 6000 [ 93%] (Sampling)
## Chain 3 Iteration: 5300 / 6000 [ 88%] (Sampling)
## Chain 1 Iteration: 5400 / 6000 [ 90%] (Sampling)
## Chain 2 Iteration: 5700 / 6000 [ 95%] (Sampling)
## Chain 3 Iteration: 5400 / 6000 [ 90%] (Sampling)
## Chain 1 Iteration: 5500 / 6000 [ 91%] (Sampling)
## Chain 4 Iteration: 4400 / 6000 [ 73%] (Sampling)
## Chain 2 Iteration: 5800 / 6000 [ 96%] (Sampling)
## Chain 3 Iteration: 5500 / 6000 [ 91%] (Sampling)
## Chain 1 Iteration: 5600 / 6000 [ 93%] (Sampling)
## Chain 2 Iteration: 5900 / 6000 [ 98%] (Sampling)
## Chain 3 Iteration: 5600 / 6000 [ 93%] (Sampling)
## Chain 1 Iteration: 5700 / 6000 [ 95%] (Sampling)
## Chain 2 Iteration: 6000 / 6000 [100%] (Sampling)
## Chain 2 finished in 4995.6 seconds.
## Chain 4 Iteration: 4500 / 6000 [ 75%] (Sampling)
## Chain 3 Iteration: 5700 / 6000 [ 95%] (Sampling)
## Chain 1 Iteration: 5800 / 6000 [ 96%] (Sampling)
## Chain 3 Iteration: 5800 / 6000 [ 96%] (Sampling)
## Chain 1 Iteration: 5900 / 6000 [ 98%] (Sampling)
## Chain 4 Iteration: 4600 / 6000 [ 76%] (Sampling)
## Chain 3 Iteration: 5900 / 6000 [ 98%] (Sampling)
## Chain 1 Iteration: 6000 / 6000 [100%] (Sampling)
## Chain 1 finished in 5164.0 seconds.
## Chain 3 Iteration: 6000 / 6000 [100%] (Sampling)
## Chain 3 finished in 5205.6 seconds.
## Chain 4 Iteration: 4700 / 6000 [ 78%] (Sampling)
## Chain 4 Iteration: 4800 / 6000 [ 80%] (Sampling)
## Chain 4 Iteration: 4900 / 6000 [ 81%] (Sampling)
## Chain 4 Iteration: 5000 / 6000 [ 83%] (Sampling)
## Chain 4 Iteration: 5100 / 6000 [ 85%] (Sampling)
## Chain 4 Iteration: 5200 / 6000 [ 86%] (Sampling)
## Chain 4 Iteration: 5300 / 6000 [ 88%] (Sampling)
## Chain 4 Iteration: 5400 / 6000 [ 90%] (Sampling)
## Chain 4 Iteration: 5500 / 6000 [ 91%] (Sampling)
## Chain 4 Iteration: 5600 / 6000 [ 93%] (Sampling)
## Chain 4 Iteration: 5700 / 6000 [ 95%] (Sampling)
## Chain 4 Iteration: 5800 / 6000 [ 96%] (Sampling)
## Chain 4 Iteration: 5900 / 6000 [ 98%] (Sampling)
## Chain 4 Iteration: 6000 / 6000 [100%] (Sampling)
## Chain 4 finished in 6507.5 seconds.
##
## All 4 chains finished successfully.
## Mean chain execution time: 5468.2 seconds.
## Total execution time: 6508.6 seconds.
## Warning: 396 of 12000 (3.0%) transitions ended with a divergence.
## See https://mc-stan.org/misc/warnings for details.
## Loading required package: rstan
## Loading required package: StanHeaders
##
## rstan version 2.36.0.9000 (Stan version 2.36.0)
## For execution on a local, multicore CPU with excess RAM we recommend calling
## options(mc.cores = parallel::detectCores()).
## To avoid recompilation of unchanged Stan programs, we recommend calling
## rstan_options(auto_write = TRUE)
## For within-chain threading using `reduce_sum()` or `map_rect()` Stan functions,
## change `threads_per_chain` option:
## rstan_options(threads_per_chain = 1)
push(correct_brms)
## Warning: There were 396 divergent transitions after warmup. Increasing
## adapt_delta above 0.8 may help. See
## http://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
correct_brms
## Warning: There were 396 divergent transitions after warmup. Increasing
## adapt_delta above 0.8 may help. See
## http://mc-stan.org/misc/warnings.html#divergent-transitions-after-warmup
## Family: bernoulli
## Links: mu = logit
## Formula: response_is_correct ~ 1 + (1 | item_id) + (1 | user_id) + (1 | target_id) + (1 | item_id:target_id)
## Data: red_yes_no (Number of observations: 281690)
## Draws: 4 chains, each with iter = 6000; warmup = 3000; thin = 1;
## total post-warmup draws = 12000
##
## Multilevel Hyperparameters:
## ~item_id (Number of levels: 215)
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(Intercept) 0.48 0.04 0.41 0.56 1.00 1102 2516
##
## ~item_id:target_id (Number of levels: 2200)
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(Intercept) 1.08 0.02 1.05 1.12 1.00 1774 3210
##
## ~target_id (Number of levels: 75)
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(Intercept) 0.07 0.04 0.00 0.15 1.01 323 1025
##
## ~user_id (Number of levels: 3744)
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## sd(Intercept) 0.11 0.01 0.10 0.13 1.00 2895 3852
##
## Regression Coefficients:
## Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
## Intercept 0.44 0.04 0.36 0.52 1.00 2346 3621
##
## Draws were sampled using sample(hmc). For each parameter, Bulk_ESS
## and Tail_ESS are effective sample size measures, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
library(broom)
library(broom.mixed)
coefs = tidy(correct_lme4) %>% left_join(
tidy(correct_brms), suffix = c("_lme4" , "_brms"), by = c("term", "group", "effect"))
## Warning in tidy.brmsfit(correct_brms): some parameter names contain
## underscores: term naming may be unreliable!
library(ggplot2)
ggplot(coefs, aes(group, y = estimate_lme4)) +
geom_pointrange(aes(y = estimate_brms, ymin = conf.low, ymax = conf.high), color = "blue") +
geom_point(color = 'black', size = 3)
knitr::kable(coefs)
effect | group | term | estimate_lme4 | std.error_lme4 | statistic | p.value | component | estimate_brms | std.error_brms | conf.low | conf.high |
---|---|---|---|---|---|---|---|---|---|---|---|
fixed | NA | (Intercept) | 0.4424369 | 0.0418104 | 10.58199 | 0 | cond | 0.4428393 | 0.0421578 | 0.3588056 | 0.5244911 |
ran_pars | user_id | sd__(Intercept) | 0.1099584 | NA | NA | NA | cond | 0.1119621 | 0.0080651 | 0.0957348 | 0.1273051 |
ran_pars | item_id:target_id | sd__(Intercept) | 1.0816406 | NA | NA | NA | cond | 1.0840104 | 0.0191463 | 1.0462298 | 1.1212403 |
ran_pars | item_id | sd__(Intercept) | 0.4749458 | NA | NA | NA | cond | 0.4800211 | 0.0383217 | 0.4079923 | 0.5585523 |
ran_pars | target_id | sd__(Intercept) | 0.0634014 | NA | NA | NA | cond | 0.0677306 | 0.0398904 | 0.0034416 | 0.1467146 |