sim <- function(subj_n = 10, item_n = 10, b0 = 0, b1 = 0, # fixed effects u0s_sd = 1, u0i_sd = 1, # random intercepts u1i_sd = 1, r01i = 0, # random slope and cor sigma_sd = 2, # error term ... # helps the function work with pmap() below ) { # set up data structure data <- add_random(subj = subj_n, item = item_n) %>% # add and recode categorical variables add_between("subj", cond = c("control", "test")) %>% add_recode("cond", "cond.t", control = 0, test = 1) %>% # add random effects add_ranef("subj", u0s = u0s_sd) %>% add_ranef("item", u0i = u0i_sd, u1i = u1i_sd, .cors = r01i) %>% add_ranef(sigma = sigma_sd) %>% # calculate DV mutate(dv = b0 + u0s + u0i + (b1 + u1i) * cond.t + sigma) # run mixed effect model and return relevant values m <- lmer(dv ~ cond.t + (1 | subj) + (1 + cond.t | item), data = data) broom.mixed::tidy(m) }