A set of 26 people (person A, B, ..., Z) play pick-up soccer 100+ times. Each time they play, they divide into two teams. You're given how the teams were divided and the order each player was picked. Not all players show up to every game.

For example: for the 42nd game that was played, letters M, N, ..., V (10 players) showed up to play. M and N were captains, and they picked the remaining 8 players one player at a time until no player was left.

M: picks Q
N: picks T
N: picks P

In the example above, Q is picked first, then T is picked, and player P is picked last.

Assuming all players showed up to play, find the expected draft order and the probability of each player being selected at their draft order.

Example solution:

- From a pool of all 26 players, Q is picked 90% of the time, and T is picked 10% of the time.
- Take out Q from the pool, since he/she is the most likely first-pick.
- From a pool of 25 players (A to Z minus Q), T is picked 76% of the time, B is picked 20% of the time, and F is picked 4% of the time.
- Take out T from the pool.
- From a pool of 24 players (A to Z minus Q minus T), ...
- From a pool of 1 player (player P), P is picked 100% of the time.

The expected draft order is
1. player Q picked first with a probability of 90%.
2. player T picked next with a probability of 76%.
3. ...
26. ...


I'm not sure how to tackle this solution. What I do know is that each game has multiple samples. If there are 20 players who played for the 50th game, then there are 20 samples here:

  • Sample 1 is player A being picked from a pool of A...T players
  • Sample 2 is player B being picked from a pool of B...T players
  • ...
  • Sample 20 is player T being picked from a pool of T...T players (singleton)

Directed Graph

I've tried using a directed graph for this. When player A is selected from a pool of 20 players, 19 edges are added from each of other players to player A. So B->A, C->A, etc. If an edge already existed, the weight is incremented by 1.

  • Not sure how to proceed after that. Maybe find the node that has the fewest number of out-going edges. Then, remove that node and repeat the process. Idk.


I'm looking for the best way of proceeding forward. I've done some initial exploration and looking for ways to bring it home and/or other ideas. Thanks!


1 Answer 1


A simple way is to fit this with a logistic regression, probit regression, or some other model that models the probability to be picked.

Say in one game the order of picking was A,K,G,B then you can encode this as 6 seperate games where A wins from K, A wins from G, A wins from B, K wins from G, K wins from B, and G wins from B. For $n$ players there will be $\frac{n}{2(n-1)}$ of such pairs.

The probability for a win can be modelled by a probability $p$ which is based on a logistic curve or normal distribution curve and some latent parameters that relate to the popularity of the players. Those parameters is what you model and you can use it to predict the order in a new game.

More complicated would be to include potential interactions between players. Possibly a particular player does not want to play with another no matter how good they are. Or players might have specialities that need to be matched. (E.g. only one keeper is necessary)

If you have more information about the process underlying the picking, then you could possibly describe a better model. But this might be a topic that is too broad for a simple answer here. There are many ways how you could make the model more complicated. And, without a good initial exploration of the data, it is difficult for outsiders to suggest options to improve the logistic regression model.

An approach that figures out most of the complexity by itselve could be to an artificial neural network. Although you have to be smart about a good layout. Also overfitting could happen if you only have 100 examples of previous games.

  • $\begingroup$ Thank you! May I get more details on how I would model this in Python or R? Your initial suggestion of doing a pair of games with logistic regression. What does my sample set look like and what does my output look like? And how would I get probability out from this? $\endgroup$
    – azizj
    Jun 17, 2022 at 14:30
  • $\begingroup$ I had thought I would model it as a multi-class classification. In the example of A, K, G, B playing, each sample would be a vector of length 26, and the order of A, K, G and B would create 4 samples: x[0] = [1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, ..., 0] and y=[0] = 'A', and then I would take out 'A' and my next sample would be x[1] = [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, ..., 0] and y[1] = 'K', creating a total of n samples where n is the # of players that showed up from each 100 games. Not sure how to get probabilities out of this approach though. $\endgroup$
    – azizj
    Jun 17, 2022 at 14:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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