Elo, DotA, stacking and player level
Posted: Sun Feb 02, 2014 5:41 pm
Suggestion: adding a new variable to the !sd command's output in DotA games (it's the only map I play here).
Note: the explanation below is probably a bit unclear, especially to people who are not familiar with maths, if there is anything that I forgot to add, seems wrong or needs to be explained better I will try my best to do so, just ask
To have an idea of the other players level we get to see their elo, as well as some other data, my suggestion is to add another variable, so that we can get a better idea of a player's level and can find more balanced games (or stack better xD).
For now I've come up with this:
We can already know players W/L and elo, so if we take the equation
Wx-Ly=K
where W=amount of wins, L=amount of losses, x=average elo per win, y= average elo per loss, K=elo - 1000
and also the equation
x+y=30
because the amount of elo you stand to lose, plus the amount of elo you stand to win adds up to 30.
These two equations have a single solution for (x,y). From this solution, we can know wether someone usually plays stacked games, balanced games or difficult games. We could then add (x,y) to the !sd commands output, or add a variable S:
S=x-y or S=x+y
But I think we could go further, the way elo works you get points according to the games expected outcome, so for a balanced Dota game in Ent you win 15 and lose 15. Now if (and this is 100% my assumption) the way elo is assigned at ent is (20,10)=(elo won, elo lost) means that (66%,33%)=(probability of defeat, probability of victory).
If that is how it works (if it's different it could still be adjusted), then
Ev=y/30 is the expected victory probablity (the probability that you win a game) according to elo.
We can also easily find:
Wp=W/(W+L) which is the win percentage that comes from dividing wins by the amount of games (wins plus losses).
Now if we take
Of=Wp-Ev
we get the offset, which is the difference between a player's win percentage and his expected win probability.
If Of>0 it means that the player usually contributes to his team and helps get a win even if a loss was expected, and if Of<0 it means he is a bad player that will make a theoretically superior (accordint to elo) team lose.
The larger the absolute value |Of| the better/worse the player will be. It might even be possible to add an average offset for each team.
If you are interested in adding this feature, I can write a C or C++ implementation for it so that the person dealing with it has an easier time adding it, even if you use a different programming language it should be very similar.
The reason why I would like this to be added is so that we can have a better idea of all the players level and can play more balanced games.
Note: the explanation below is probably a bit unclear, especially to people who are not familiar with maths, if there is anything that I forgot to add, seems wrong or needs to be explained better I will try my best to do so, just ask

To have an idea of the other players level we get to see their elo, as well as some other data, my suggestion is to add another variable, so that we can get a better idea of a player's level and can find more balanced games (or stack better xD).
For now I've come up with this:
We can already know players W/L and elo, so if we take the equation
Wx-Ly=K
where W=amount of wins, L=amount of losses, x=average elo per win, y= average elo per loss, K=elo - 1000
and also the equation
x+y=30
because the amount of elo you stand to lose, plus the amount of elo you stand to win adds up to 30.
These two equations have a single solution for (x,y). From this solution, we can know wether someone usually plays stacked games, balanced games or difficult games. We could then add (x,y) to the !sd commands output, or add a variable S:
S=x-y or S=x+y
But I think we could go further, the way elo works you get points according to the games expected outcome, so for a balanced Dota game in Ent you win 15 and lose 15. Now if (and this is 100% my assumption) the way elo is assigned at ent is (20,10)=(elo won, elo lost) means that (66%,33%)=(probability of defeat, probability of victory).
If that is how it works (if it's different it could still be adjusted), then
Ev=y/30 is the expected victory probablity (the probability that you win a game) according to elo.
We can also easily find:
Wp=W/(W+L) which is the win percentage that comes from dividing wins by the amount of games (wins plus losses).
Now if we take
Of=Wp-Ev
we get the offset, which is the difference between a player's win percentage and his expected win probability.
If Of>0 it means that the player usually contributes to his team and helps get a win even if a loss was expected, and if Of<0 it means he is a bad player that will make a theoretically superior (accordint to elo) team lose.
The larger the absolute value |Of| the better/worse the player will be. It might even be possible to add an average offset for each team.
If you are interested in adding this feature, I can write a C or C++ implementation for it so that the person dealing with it has an easier time adding it, even if you use a different programming language it should be very similar.
The reason why I would like this to be added is so that we can have a better idea of all the players level and can play more balanced games.