# How to determine the strongest player in a team game

I have an idea for a "King of the Hill" contest in the Programming Puzzles and Code Golf Stack Exchange (https://codegolf.stackexchange.com/). The game I have in mind has four players divided into two teams of two players each with a specified play position (Team 1 White, Team 1 Black, Team 2 White, Team 2 Black) and three discrete outcomes (Team 1 Win, Team 2 Win, Draw). This would allow me to record each match in the tournament as Team 1 White Player Name, Team 1 Black Player Name, Team 2 White Player Name, Team 2 Black Player Name, Outcome. My idea was that I could run a tournament where every combination of four unique contestants would play several matches per permutation of players in that combination, record the results, and then determine the contest winner based upon the contestant that participated in the most games where that player won.

A user in that community is concerned that the only way to determine a contestant's strength is to effectively reduce the game to a two-player game by having each contestant play both colors on the team. If this is the case, then I think that may eliminate the fun of the competition.

Is there some statistical method that can be used to determine an individual player's strength in a team game? I think that there might be a way to determine a contribution (correlation, maybe?) between a player's outcomes and his performance as opposed to his teammate's performance. The limited statistics I learned in college does not seem to be helping me much here. I had thought that my best bet would be ANOVA, but the fact that each result between teams AB and CD will be accounted for in each team's observations seems like it might break that test.

If such a test exists, I would appreciate being told its name and being given an explanation for its process.

• You could try logistic regression with one feature for each player, where 1 means a player is on Team 1, 0 means they are not in the match, and -1 means they are on Team 2. A higher weight for a particular player would mean a higher contribution to winning. – Davis Yoshida Jul 24 '15 at 20:55
• If you're interested in use (more than in development), you should give a try to rankade, our ranking system. It's free to use, it can manage two faction with more than one players (2-vs-2, 3-on-3, and more, including asymmetrical factions), and it produces individual rankings. Here's a comparison between most known ranking systems, including Trueskill, another option for your task. – Tomaso Neri Dec 1 '15 at 7:56

For a nice introduction to the model type this is a nice reference using R. To fit this model I think you will have to write some code yourself, although it is not too hard and I am happy to help with that if you can provide some sample data.
For match $m$ where players $i_1$ and $j_1$ play in team 1 against players $i_2$ and $j_2$ in team 2, where $i$ denotes the white position and $j$ the black position, the model might look something like: $$P(Y_m \leq k) = \frac{e^{\theta_k + (w(i_1) + b(j_1)) - (w(i_2) + b(j_2))}}{1 + e^{\theta_k + (w(i_1) + b(j_1)) - (w(i_2) + b(j_2))}}$$ where $Y_m$ denotes the outcome of match $m$ coded as: $$Y_m = \left \{ \begin{array}{ll} 1 \quad \text{if team 1 wins} \\ 2 \quad \text{if draw} \\ 3 \quad \text{if team 2 wins} \end{array} \right.$$ where $-\infty < \theta_1 < \theta_2 < \theta_3 = \infty$ are the threshold/intercept parameters. $\theta_1 = -\theta$ and $\theta_2 = \theta$ with $\theta \geq 0$ ensures that team 1 and team 2 have the same probability of winning if the overall ability of each team is equal (the ability of team 1 for example is $w(i_1) + b(j_1)$). So you just need a a single parameter here, $\theta$, which largely implies the probability of a draw outcome.
$w$ and $b$ are then model parameter vectors containing the ability of each player in a particular index, for the white and black positions respectively (these may be the same i.e. $w=b$. I have no idea if there is any difference between the positions). The players in a match, $i_1$, $j_1$, $i_2$ and $j_2$ are really just indexes to access the correct element of the vector.
If you are able to then infer the parameter vectors $w$ and $b$ from data then you would be able to rank the players ability in each position. If $w=b$ is a reasonable assumption then it will be easier to rank the players based on overall ability. Also this method allows you to compare players who have not met, if there is some link between them via some commonly played players.