Dear Stan/brms community :)
It’s been awhile that I am struggling to fit a model with shifted lognormal link-function for my response time data, and it is (mostly) doesn’t converged well.
library(brms) library(tidyverse) Data <- Data %>% mutate(Type = as.factor(Type), # 4 levels var. within-subject Group = as.factor(Group), # 2 levels var. between-subject Control = as.factor(Control), # 2 levels var. between-subject ) %>% filter(Target.RT>100) prior <- c(prior("normal(0,50)", class = "b"), prior("normal(0,50)", dpar = "ndt"), prior("cauchy(0,1)", dpar = "sigma"), prior("cauchy(0,1)", class = "sd")) chains <- 3 inits_drift <- list(temp_ndt_Intercept = -3) inits_drift <- replicate(chains, inits_drift, simplify = FALSE) Model <- brm( data= Data, formula = bf( Target.RT | trunc(ub = 2000)~ Type*Group*Control+ (Type|Subject), sigma~Type*Group*Control+ (Type|Subject), ndt~Type*Group*Control+ (Type|Subject)), family = shifted_lognormal(), iter = 1000, warmup = 500, prior = prior, inits = inits_drift, init_r = 0.2, chains = 6, cores = 6, control = list(adapt_delta = 0.95, max_treedepth = 12), save_pars = save_pars(all = TRUE) )
The model converges without errors and with 79 divergent transitions after warmup, but it doesn’t converge well.
On the one hand, bases on the posterior predictive check, the function seems to fit :
The chains on the other hand are messy:
Using more or less iterations and warmup did very little change, and the same for using the default priors.
I’d appreciate your help :)