I've got a spreadsheet of some team scores. First team to 10 points wins. There are 2 players on each team. The players play with different teammates all the time, although they are not chosen perfectly randomly. No individual scores are kept.

So basically we have Bill and Bob beat Andy and Alice 10-4 Jake and Bill beat Joe and John 10-8 ...

Is it possible to come up with some ranking for the individual players, based on all the available match data. Basically, to see how much each player contributes to each game in terms of points or relative to the other players?

  • 2
    $\begingroup$ If any of this is at all useful and you'd be interested in seeing a further development of the simple adaptation of the "independent scoring" model to your scenario, let me know and I will try to write it up (hopefully a little more concisely) as a separate answer. Cheers. $\endgroup$ – cardinal Sep 28 '11 at 21:42

Below are a couple very simple models. They are both deficient in at least one way, but maybe they'll provide something to build on. The second model actually does not (quite) address the OP's scenario (see remarks below), but I am leaving it in case it helps in some way.

Model 1: A variant of the Bradley–Terry model

Suppose we are primarily interested in predicting whether one team will beat another based on the players on each team. We can simply record whether Team 1 with players $(i,j)$ beats Team 2 with players $(k,\ell)$ for each game, ignoring the final score. Certainly, this is throwing away some information, but in many cases this still provides lots of information.

The model is then $$ \mathrm{logit}(\mathbb P(\text{Team 1 beats Team 2})) = \alpha_i + \alpha_j - \alpha_k - \alpha_\ell \> . $$

That is, we have an "affinity" parameter for each player that affects how much that player improves the chance of his team winning. Define the player's "strength" by $s_i = e^{\alpha_i}$. Then, this model asserts that $$ \mathbb P(\text{Team 1 beats Team 2}) = \frac{s_i s_j}{s_i s_j + s_k s_\ell} \>. $$

There is a very nice symmetry here in that it doesn't matter how the response is coded as long as it is consistent with the predictors. That is, we also have $$ \mathrm{logit}(\mathbb P(\text{Team 2 beats Team 1})) = \alpha_k + \alpha_\ell - \alpha_i - \alpha_j \> . $$

This can be fit easily as a logistic regression with predictors that are indicators (one for each player) taking value $+1$ if player $i$ is on Team 1 for the game in question, $-1$ if she's on Team 2 and $0$ if she does not participate in that game.

From this we also have a natural ranking for the players. The larger the $\alpha$ (or $s$), the greater the player improves her team's chance of winning. So, we can simply rank players according to their estimated coefficients. (Note that the affinity parameters are only identifiable up to a common offset. Therefore, it is typical to fix $\alpha_1 = 0$ to make the model identifiable.)

Model 2: Independent scoring

NB: Upon rereading the OP's question, it's apparent that the models below are inadequate for his setup. Specifically, the OP is interested in a game that ends after a fixed number of points are scored by one team or the other. The models below are more appropriate for games that have a fixed duration in time. Modifications can be made to fit better within the OP's framework, but it would require a separate answer to develop.

Now we want to keep track of scores. Suppose it's a reasonable approximation that each team scores points independently of each other with the number of points scored in any interval independent of any disjoint interval. Then the number of points each team scores can be modeled as a Poisson random variable.

Thus, we can setup a Poisson GLM such that the score of some team consisting of players $i$ and $j$ in a particular game is $$ \log(\mu) = \gamma_i + \gamma_j $$

Note that this model ignores the actual matchups between teams, focusing purely on scoring.

It does have an interesting connection to the modified Bradley–Terry model. Define $\sigma_i = e^{\gamma_i}$ and suppose that a "sudden-death" game is played in which the first team to scores wins. If Team 1 has players $(i,j)$ and Team 2 has players $(k,\ell)$, then $$ \mathbb P(\text{Team 1 beats Team 2 in sudden death}) = \frac{\sigma_i \sigma_j}{\sigma_i \sigma_j + \sigma_k \sigma_\ell} \>. $$ Thus, the mean rate of scoring of the players is equivalent to the "strength" parameter formulation of Model 1.

We might consider making this model more complex by having an "offense" affinity $\rho_i$ and "defense" affinity $\delta_i$ for each player, such that if Team 1 with $(i,j)$ plays Team 2 with $(k,\ell)$, then $$ \log(\mu_1) = \rho_i + \rho_j - \delta_k - \delta_{\ell} $$ and $$ \log(\mu_2) = \rho_k + \rho_{\ell} - \delta_i - \delta_j $$

Scoring is still independent in this model, but now there is an interaction between the players on each team that affects the score. Players can also be ranked according to their affinity-coefficient estimates.

Model 2 (and its variants) allow for prediction of a final score as well.

Extensions: One useful way to extend both models is to incorporate an ordering where the positive indicators correspond to the "home" team and the negative indicators to the "away" team. Adding in an intercept term to the models can then be interpreted as a "home-field advantage". Other extensions might include incorporating the chance of ties in Model 1 (it's actually already a possibility in Model 2).

Side note: At least one of the computerized polls (Peter Wolfe's) used for the Bowl Championship Series in American college football uses the (standard) Bradley–Terry model to produce its rankings.

| cite | improve this answer | |
  • $\begingroup$ What is the weakness of the Bradley-Terry model vs something like Microsoft's TrueSkill, beyond just throwing away the point data? If we implement the Bradley-Terry, how would we update the $\alpha$ value? I presume we do not simply set it to the value of the most recent game. $\endgroup$ – qag54938bcaoo Jul 11 at 18:29

Microsoft's TrueSkill algorithm, as used to rank players on XBox Live, can deal with team matches, but does not incorporate margin of victory. It may still be of some use to you.

| cite | improve this answer | |


You could look at each players win/loss record, and point differential. I realize that's a simple answer, but, those stats would still be meaningful.

| cite | improve this answer | |
  • $\begingroup$ I want something a little more complex than this. It sounds like on average a player contributes X number of points to a game. I wanted to know if I could figure this out or a rough approximation somehow. $\endgroup$ – Bill Waterson Sep 20 '11 at 5:18
  • $\begingroup$ I would look into how Jeff Sagarin does his power rankings for college football and other sports. My guess is he guards his formula, but I think he did it while a master's student at MIT. Sagarin takes into account how much you beat your opponents by, how good your opponents are and strength of schedule (which may be the same as 'how good your opponents are.) I think a fellow named Danny Sheridan has a similar system. Good luck. $\endgroup$ – Adam Sep 21 '11 at 1:44

(I'd like to add this as a comment for a previous answer, but my reputation was not enough, for the time being)

Martin O'Leary linked TrueSkill algorithm, and it's a good option. If you're interested in use (more than in development), you should give a try to rankade, our ranking system. Like TrueSkill it can manage two faction with more than one players each (2-vs-2 foosball, 2-vs-2 table tennis, basketball 3-on-3 and 5-on-5, and more). Some remarkable differences, among others, are that rankade allows more structured factions building (1-vs-1, faction vs faction, multiplayer, multifaction, cooperative games, asymmetrical factions, and more) and that it's free to use.

Here's a comparison between most known ranking systems.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.