Hi !
I’d like to help my collaborators fit Bradley-Terry models:
P[\text{team }i\text{ wins against team }j] = \text{logit}^{-1}(\beta_i - \beta_j)
in R, using an interface to Stan like rstanarm or brms.
This post uses lme4:
First, we’ll create a data.frame where the outcome takes on values of 0 or 1 depending on whether team 1 won the game. Each game occupies two rows in this data.frame with each opponnent taking its turn as team1.
glmer(outcome ~ (1 | team1) + (1 | team2), family = binomial)
But this is
P[\text{team }i\text{ wins against team }j] = \text{logit}^{-1}(\beta_i^{(1)} + \beta_j^{(2)})
and doesn’t link the same team’s random effect when they enter the likelihood as team1 vs team2, right ?
See a related question asked about lme4 in stackexchange.
UPDATE: I got this working in INLA ! Can compare to HMC, maybe in Stan itself, if interfaces like brms and rstanarm can’t accommodate Bradley-Terry models.
data$w = -1
inla(depvar ~ f(team1, model="iid", values = teams) +
f(team2, w, copy = "team1"),
family="binomial",
data=data)


