Suppose I have 5 players on each team in a game where each player selects a character (League of legends, Valorant, etc.).

I am considering the overall win rates of the characters, and the unique win rate attached to the player is not considered (i.e some players focus on using X character, so their win rate may be higher with this specific character, I am ignoring this, I am using the win rate of a character across all games played in a given season).

Each character has been played (in a game that has matches consisting of 2 teams formed by 5 players each, selected at random) anywhere from at least 4,000 to even 60,000 times in a given patch (lets just use season for simplicity).

Upon entry, team A may have overall individual character win rates (calculated across all matches played from and up to a certain point) of [40%, 50%, 55%, 50%, 60%] and team B may have individual win rates of [50%, 45%, 60%, 40%, 65%] for each character (not player) respectively.

Is it naïve to just average the win rates and consider that the team win rate, or is there a more robust method of doing this?

Despite all the characters having 4000+ games, some may have only around 4000, some may have 8000, some may have even more depending on popularity, so I imagine there may need to be sort of weighting, but I am not sure if 4000+ games is enough to disregard the need for a weighting system (as opposed to a basketball player playing less than 20 games a season and then 70 games the next, clearly weighting there may be more important).

My goal is to determine a predicted win rate for each team given the win rates of each character selected.

I can come up with everything, I am just trying to figure out that last key data point (predicted team win rate), it seems almost too easy to just average the 5 win rates, or maybe I am just overthinking it =)



2 Answers 2


I have been thinking over the same question in my head for the past few weeks. I don't have a good answer yet sorry.

I know for certain that averaging the WRs is not correct. For example, consider a theoretical character with a 100% WR (broken, I know!). Regardless of the other characters picked in the game, they always win. If we have a team of 50%, 50%, 50%, 50%, and our 100% character, on average we get 60% WR. But this does not logically fit with the fact that the character we described is guaranteed to win! So there must be a more fitting statistical method.

I haven't come up with a good method yet sorry. In my thinking, it's clear that more weighting needs to be given to characters who are further from a 50% WR: i.e. a character with a 15% WR will make their team MUCH more likely to lose, even if the "average" WR of the team is 43%!!

It's probably best to focus on a formula that produces an accurate average for one team (against any given five characters in the second team) before then making a more complex formula for comparing two teams' individual WRs.

I somehow wish I'd paid more attention to Statistics in school!

Best of luck, R.


Cool question.

To me this looks like a regression problem with interactions.

As @Raphael (did I mention correctly? how does it work?) mentioned above it's not a linear sum problem. for example an overpowered character may force the probability to 1, but averaging reduces the probability.

A second example would be (I don't know the games so don't judge me :P) that a team with no healers has a lower probability of winning, so adding a healer would increase the probability. But a team of all healers is no good either.

So we know it's not a summation problem, and we know that interactions are important. and what we want to find is the following:

$P(win|c_1,c_2,c_3,c_4,c_5)$ where $c_i$ are the 5 characters.

One way to do it is to assume that $P(c_i)$ is a function with interactions of the following form:

$P = a_0 + a_1*c_1 + a_2*c2 ... a_n*c_n + b_{1,2}*c_1*c_2 + b_{1,3}*c_1*c_3... + b_{n,n}*c_n*c_n$

where $a_0$ is a bias term, $c_i$ are indicator variables (0 or 1) for each character and $a_i$ are their coefficients. a second interaction term for each character pair is also added and represented by coefficients $b_{i,j}$. which can easily be interpreted as a matrix and $a_i$ a vector. so in Einstein notation we can write it as:

$P = a_0 + a_i*c_i + b_{i,j}*c_i*c_j$

we now want to find the missing coefficients that optimize our problem.

We can further force it to be a valid probability by making it a logistic regression:

$P = \frac{1}{1+e^{-(a_0 + a_i*c_i + b_{i,j}*c_i*c_j)}}$

And a final version I'd suggest would be to use a factorization machine, where we replace the indicator variables by a vector of coefficients (an embedding) that we optimize:

$P = \frac{1}{1+e^{-(a_0 + \Sigma_i a_i*c_i + \Sigma_{i,j} e_i^Te_j*c_i*c_j)}}$

where $a_0$ is a constant, $e_i, e_j$ are the embeddings of the i'th and j'th characters and $c_i,c_j$ are the indicator variables, T is transpose. we now loop over all 5 added characters, so when having 5 healers we'll have: $P = \frac{1}{1+e^{-(a_0 + 5*a_{healer} + 5e_{healer}^Te_{healer}}}$

If necessary we can add 3rd order terms.

Here for example if having multiple healers is a bad thing, the interaction will be negative and the more healers we'll have the worse the probability will become.

That's my 2 cents.


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.