data { int N; int msgs [N]; int likes [N]; int N_group; int sender [N]; int liker[N]; int combo [N]; } parameters { real delta; vector [N_group - 1] alpha_raw; vector [N_group - 1] beta_raw; vector [N_group*N_group - N_group] gamma_raw ; real sigma; } transformed parameters { vector [N] logodds; vector [N_group] alpha; vector [N_group] beta; vector [N_group*N_group - N_group] gamma; alpha[1:(N_group-1)] = alpha_raw; alpha[N_group] = -sum(alpha_raw); beta[1:(N_group-1)] = beta_raw; beta[N_group] = -sum(beta_raw); gamma = gamma_raw*sigma; logodds = delta + alpha[sender] + beta[liker] + gamma[combo]; } model { delta ~ normal(0, 3); alpha_raw ~ normal(0, 3); beta_raw ~ normal(0, 3); gamma_raw ~ normal(0, 1); sigma ~ exponential(1); likes ~ binomial_logit(msgs, logodds); }