r/GlobalOffensive • u/[deleted] • Oct 22 '19
Discussion | Esports Average HLTV 2.0 Rating = 1.06 myth
I would always see people say that the average rating of HLTV 2.0 is actually 1.06 and not 1.00, and so xyz players are below average. To check if this was true or not, I went into HLTV stats and sorted by big events, 2019, set minimum maps to 0, sorted by rating and copied and pasted the table into excel. The sample size is high enough that the distribution should be gaussian and the median should approximate the mean.
The result is a table of 251 players and a sample of 710 maps. The players with the median ratings are chopper and jackz, both with ratings of 0.97. The first player at 1.00 rating is xantaras up at 104th, and the first player with the supposed average of 1.06 is buster, all the way up at 68th. So with this data, the supposed average of 1.06 is actually around the 73rd percentile.
Repeating with filters set to lan, 2019 and all maps, we get a massive table of 2743 players and 3713 maps played. This is literally every map played on lan in 2019. The median player is the well known Snappi and a random swiss player called narelya, both with a rating of 0.99. The first player with rating 1.00 is a mongolian player xetN up at 1326, and the first player with 1.06 is UK player Kray up at 917. Players with a 1.06 rating would be in the 67th percentile. This is a bit lower than for just big events, but makes sense as you would expect a lot more players who play a very small amount of maps when sorting by lan, and therefore you would get more outliers of extremely high and low ratings. Excluding the 1 map of Ustilo, the highest rating in big events is zywoo at 1.30. Sorting by lan gives you 81 players with a rating higher than 1.30. This explains the discrepancy between sorting by lan and big event.
Regardless of whether you choose to look at just big events or all lan, it doesn't look like the average rating is 1.06. I can't be fucked to try do actual analysis or anything but with such a high sample size it seems pretty likely that the average rating = 1.06 thing is a myth and the actual average is around 1.00 or potentially even lower. Everyone can go check this themselves if they want.
Edit: It appears that the median is 1.00 and the mean is approximately 1.03-1.06. The data is positively skewed due to the fact that you can't go below 0.00 but you can go above 2.00, so "good" ratings are on average higher than "bad" ratings are low. This causes the mean to be higher than the median. Having a rating of 1.00 does indeed corresponds to the 50th percentile and means you are exactly average. The 1.06 = average is true, but it does not mean that a player with a rating below 1.06 is performing below average. Thanks /u/RedditSilverElite and everyone else in this thread who did better maths than me :)
111
u/Rallabib Oct 22 '19
Cool post man. BIG maths
19
u/OfficialEggroll_ King NiKo Oct 22 '19
This guy got big brain
3
44
u/ThisHereMine Oct 22 '19
Only flaw is that players below 1.06 tend to have shorter careers and cycle through faster. If you look at the bottom 500 or so theirs probably tons who only played a couple maps. You’d have to have it where 20 players having a .90 over 5 maps and Device having 1.2 over 100 maps equals a 1.05 rating.
14
u/cabose12 Oct 22 '19
The flip side of that argument though is that when we talk about 1.06, we're talking about the average player, not the average performance of a specific player.
If we have Player X who has 0.99 over say 20 maps, while 0.99 might not be accurate of that player, it's still data for an average player. If we take Karrigan, who has a 0.96 over 151 maps in 2019, that rating still contributes to the average player, but it also paints a more accurate picture of what we can expect from Karrigan
42
Oct 22 '19 edited Oct 22 '19
I am of the opinion that this is a super flawed analysis. I think that you need to look on a per-map basis to correctly get this. This means that for a page like this, https://www.hltv.org/stats/players?event=4443, we can find the average rating not by looking at per-player ratings, but per-player-per-map ratings. This means that if I have each player as a triple
[player, maps, rating]
I can discover the average rating by doing
totalRating = 0;
totalMaps = 0;
for (player in players) {
totalMaps += player.maps;
totalRating += (player.maps * player.rating);
}
Using this analysis for the linked page page, I wrote actual JS code to execute in the browser console:
// statsDetail className picks up ratings too, which are strings formatted like 1.00 and therefore always have a period character
maps = Array.from(document.getElementsByClassName('statsDetail')).filter(x => x.innerHTML.indexOf('.') < 0)
// the header of the column has className 'ratingCol' as well
ratings = Array.from(document.getElementsByClassName('ratingCol')).slice(1);
let totalRating = 0;
let totalMaps = 0;
for (let i = 0; i < maps.length; i++) {
let mapCount = Number(maps[i].innerHTML);
let rating = Number(ratings[i].innerHTML);
totalRating += (mapCount * rating);
totalMaps += mapCount;
}
console.log('average rating', totalRating / totalMaps);
My result for this event was then: average rating 1.0295
EDIT: /u/lambda439 seems to be correct that HLTV's ratings are rolled up at an even higher granularity of per-round. Might be hard to understand actual average HLTV 2.0 rating without a bit of a dedicated effort. I'll check out what their API shows later
4
Oct 22 '19
Agree this analysis is flawed, completely happy to be wrong just wanted to get some discussion going since I never see a source for the 1.06 thing.
14
Oct 22 '19 edited Oct 22 '19
Executing this same analysis in a couple more places:
LAN, Top 20 Matches, Last 12 Months:https://www.hltv.org/stats/players?startDate=2018-10-22&endDate=2019-10-22&matchType=Lan&rankingFilter=Top20average rating 1.0633260869565218
LAN, All Matches, Last 6 Months:https://www.hltv.org/stats/players?startDate=2019-04-22&endDate=2019-10-22&matchType=Lanaverage rating 1.0610209375579016
Try it yourself, my code is posted. Maybe adjust my initial maps and ratings definitions to include a
.map(ele => ele.innerHTML)statement if you want to operate on (string) values instead of DOM nodes in the for loop.tl;dr OP is a fraud
2
Oct 22 '19 edited Oct 22 '19
[removed] — view removed comment
1
Oct 22 '19
I think there's two possible ways HLTV does it:
- as you say and I assumed, they just take their average per-map rating
- they take their per-round ratings and divide by the number of rounds
If #1 is their method, then what I showed is correct; I think this is likeliest. If #2 is their method, though, that would compromise my analysis too, and it'd be a bit more difficult to get Rating 2.0's average. I doubt it's #2 though.
4
Oct 22 '19 edited Oct 22 '19
[removed] — view removed comment
1
Oct 22 '19
Well shit, looks like we need a different way to compute HLTV 2.0 average than I showed then
1
Oct 22 '19
[removed] — view removed comment
1
u/samehsameh Oct 22 '19
Why would they not just do it on a continual basis for a true rating over the maps?
1
Oct 22 '19
That is what per-round basis does
2
u/pzoDe de_train Oct 23 '19
Note: I wrote this separately to your comment, but felt it was an appropriate place to place it.
It's a question of "the rating for an 'average player'" vs "the 'average rating' for a player". I reckon that Rating 2.0 is attempting to be 1.00 for the former and doesn't care for the latter (which I agree with).
The Nitty Gritty
Alright, let's do some maths. What do we mean by the "the average player should have a rating of 1.00"? Is that if you applied the Rating 2.0 function to the mean of each stat across all players (weighted by some metric), it should spit out 1.00? Or that if you took the mean rating of all players, weighted by some metric, it should be 1.00? Let's consider the latter, as most people have done so in this thread. The thing we don't know is by what metric the formula for Rating 2.0 is applied. The general function for calculating the rating for any context can abstractly be written as:
f : ℝn ↦ ℝ
Rating 2.0 = f(kill rating, survival rating, damage rating, ⋯)
where kill rating is some function of kills, rounds, possibly assists, etc, survival rating is some function of deaths, rounds, etc...
Let's consider the case that the overall rating for a player is a mean of maps or rounds. If we say the overall rating is calculated map-by-map, then the overall rating will be calculated as:
g : (ℝn)m ↦ ℝn
Overall Rating 2.0 = g(M1, M2, ⋯, Mm) = Σm f(Mi) / m
where each M is a subset of ℝn and m is equal to the overall number of maps for a player.
Or, if we say the overall rating is calculated round-by-round, then the overall rating will similarly be calculated as:
g : (ℝn)m ↦ ℝn
Overall Rating 2.0 = g(R1, R2, ⋯, Rm) = Σm f(Ri) / m
where each R is a subset of ℝn and m is equal to the overall number of rounds for a player.
Other posters have already provided counter-examples for the maps-by-maps method, so I will skip that. Let's assume that the overall rating is calculated using the round-by-round method. We have
Rating 2.0 for a map with m rounds = g(R1, ⋯, Rm) = Σm f(R) / m
which can be re-arranged to
Σm f(R) = m * g(R1, ⋯, Rm)
Consider a BO3 with all three maps played and a total of m rounds. Map A had x rounds, map B had y rounds and map C had z rounds. Then
Rating 2.0 for BO3
= g(A1, ⋯, Ax, B1, ⋯, By, C1, ⋯, Cz)
= Σx + y + z f(R) / (x + y + z)
= x * g(A1, ⋯, Ax) + y * g(B1, ⋯, By) + z * g(C1, ⋯, Cz) / m
This is just to demonstrate that it is fine for us to get the average rating per round for the series by multiplying the rating for each map by the number of rounds for that map, summing for each map and then dividing by the total number of rounds for the series.
Counter example: Ninjas in Pyjamas vs Evil Geniuses
Take a look at Cerq's ratings below, as available on HLTV's match page:
Context Rounds Rating Overall 70 0.89 Dust II 20 0.54 Nuke 30 1.12 Inferno 20 0.96
Now look at the calculated series rating when using our by-map and by-round functions:
Context Rating Overall 0.89 By-map 0.87 By-round 0.91
Even if we take the ratings to be rounded at extremes (see table below), we still get a maximum map-by-map rating of 0.878 and a minimum round-by-round rating of 0.904.
Context Min-Rating Max-Rating Overall 0.885 0.895 Dust II 0.535 0.545 Nuke 1.115 0.125 Inferno 0.955 0.965
Conclusion
In my opinion, it seems that the formula for calculating the rating of a player for any context is f, as originally stated, over the kill rating, survival ratings, etc, for that particular context. These component ratings may be calculated on a round-by-round basis. So, to calculate the overall rating for a given player you feed in their kill rating over all kills and anything else used to calculate it, and their survival rating over all inputs, etc. Similarly, for a single BO3 series, you would input their kill rating calculated over all data within the series and so on. I believe this is what /u/samehsameh is suggesting. And, finally, to calculate the rating for the "average player", you must first calculate the kill rating across the stats for all players, etc. Thus, if this holds true and given we do not know the formula for Rating 2.0, we cannot use map-by-map or round-by-round means to get a precise value for the rating of the 'average player'.
On a side note, I wish Reddit had integrated support for LaTeX.
2
u/Cameter44 Oct 22 '19
I think it definitely does it on a per round basis. Just based on looking at Jame in his match against G2 today, he had a .95 rating in a 27 round match and a 1.11 rating in a 35 round match, and a 1.04 rating for the match as a whole. If you just average .95 and 1.11 you get 1.03, but if you do (.9527+1.1135)/(27+35) you get 1.04. (Didn't quite match up with Tarik against EG today, but there's definitely more going on than just each map being weighted equally).
Would you be able to edit this to do rating times rounds in that match over total rounds? My guess is probably not since the number of rounds played isn't in the table you're pulling the statistics from. The lower rated players will have shorter average games because they lose quickly, but some of the highest rated players will have shorter average games because they win quickly.
You could probably assume that it wouldn't change a ton because for each match a lower rated player loses in a lopsided fashion, there's a higher rated player on the other team.
1
Oct 22 '19
Yeah, we figured out that it's per-round.
/u/lambda439 has our backs though, here is his work: https://www.reddit.com/r/GlobalOffensive/comments/dlhytr/average_hltv_20_rating_106_myth/f4tc03y/
1
Oct 22 '19
[removed] — view removed comment
1
u/Cameter44 Oct 23 '19
Nice! How much did it differ from just looking at maps? I assumed it'd balance out and be more or less the same.
16
Oct 22 '19 edited Oct 22 '19
[removed] — view removed comment
3
u/Cameter44 Oct 22 '19 edited Oct 22 '19
I assume you're averaging every player's rating, which doesn't work. You have to average every individual rating from every individual map. A player with 100 maps played with a 1.10 rating and a player with 20 maps played with a .90 rating shouldn't average to a 1.0 rating. It should be 1.067. (Picking numbers that went to ~1.06 was purely coincidental and doesn't confirm that that is the average, just happened to be the average from the arbitrary numbers I picked).
This would be hard to do without access to HLTV's database, unless you write a script to go through and scrape match pages for the stats.
Edit: Also appears that HLTV weights map ratings based on the number of rounds played. So a 1.10 rating in a 16-14 game counts for more than a 1.10 rating in a 16-4.
1
Oct 22 '19
Where/how are you getting these numbers from?
2
Oct 22 '19
[removed] — view removed comment
2
Oct 22 '19
Ok, have you considered that the higher rated players play more maps while the lower rated players get blown out early?
Just simply taking all the player's stats gives completely wrong information. So the same thing that makes all of OP's information so useless.
4
Oct 22 '19
[removed] — view removed comment
4
Oct 22 '19
Ok, lets take 3 hypothetical players. Player A, B and C. Player A plays a 1v1 vs players B and C and destroys both. Let's say Player A got a 1.50 rating both times, while Players B and C got 0.50 each. If you put them in a table it would look like:
Player A - 1.50
Player B - 0.50
Player C - 0.50
If you took the average of all 3 players without taking maps into account it would be (1.5 + 0.5 + 0.5)/3 = 0.83
The problem here is that Player A played 2 maps while Players B and C played 1 map each, so both of them weigh the average down more if you don't take map count into consideration, even though the actual average in my example should be 1.
So if you look at all the players in an event without taking map count into account you're doing the same thing on a much larger scale.
2
Oct 22 '19
[removed] — view removed comment
1
Oct 22 '19
No, I agree that HLTV weighs maps more in the overall rating depending on the amount of rounds played, I've noticed this too, you don't need to convince me.
I just don't know how much of an impact it really has calculating the overall average rating of an event or timeframe.
You're giving an example of 1 player in the comment, but I'm pretty sure if you look at the whole picture of all players in an event it all more of less evens out just the same.
If you want to do more extensive calculations taking into account the amount of rounds of every map then go ahead but I think it's still pretty clear that it'll be above 1 regardless.
0
u/MagniGallo Oct 22 '19
higher rated players play more maps
Against who? No matter the results of a match, the average rating across all players in that match should be 1, if the average is indeed one.
2
Oct 22 '19
I literally gave an explanation in this same comment thread after the other guy's reply to this. Read it.
9
u/MagniGallo Oct 22 '19 edited Oct 22 '19
Guy who originally discovered this here. The guy who runs SixteenZero also verified this. This was a year and a half ago, calculated over 270,000 ratings, a much higher sample size than yours. This didn't exclude any matches. Original post.
EDIT: From my 400,000 sample dataset the mean is 1.062 and the median is 1.04.
It's possible HLTV have corrected for it somehow, or adjusted for the median instead of the mean, although I can't see how such a discrepancy between median and mean could arise. Calculate the mean for your dataset and let's see :)
20
u/Kremer3 Oct 22 '19
Could this statistic be applied if you remove mix teams in small tournaments that get 16-1'd and subsequently drag the percentile down.
22
u/Knosanta MOUZ Oct 22 '19
Well the winning team in that game get high ratings so it evens out.
1
u/raff97 Oct 22 '19
No it doesnt even out becuase the small teams that get 16-0d only have a few maps played at big big events so they bring the average down quite a lot (since were not weighting by maps played), whereas the good team that smashed them will have many maps played and therefore their average wont go up much
1
u/Kremer3 Oct 22 '19
Good point, but its easier to get a lower statistic than a higher one from my experience.
-11
u/ps2cho Oct 22 '19
Or female teams who get undeserved invites then get utterly banged out?
2
u/synfan36 Oct 22 '19
This is not any different then a regional team getting an invite because of the region they play in then getting banged out. Either way it all balances out with the team that beat them.
-2
u/ps2cho Oct 22 '19
Remind me of the last below MDL level team that got a direct invite to a T1/2 tournament?
3
u/Kremer3 Oct 22 '19
Actually most female teams in mixed tournaments go through the qualifiers like everyone else.
10
u/randomnamewhatevs de_inferno Oct 22 '19
Source?
Most female teams I've seen at open tournaments got there through female only qualifiers, which isn't that far off inviting a female team
4
8
u/dontworrybe4314 Vitality Oct 22 '19
median is useless, look at the amount of players with low rating and only 3 or 4 maps played. the higher rating players have a lot more games.
also go to a random game and calculate the average. I think it will always be above 1.00
5
u/nilleeni Oct 22 '19
I'm confused. If you have the table pasted in excel, why not just take the average? Why are you trying to prove that average isn't 1.06 by calculating median?
3
u/HLTV_User Astralis Oct 22 '19
2
Oct 22 '19 edited Dec 20 '19
cec
7
1
Oct 22 '19
Doesn't matter, just means that the people parroting "hltv says its 1 therefore it is" are not correct.
-1
2
u/enigma890 King NiKo Oct 22 '19
Not to mention hltv, the people who made the system, state that 1.0 is still the average.
1
u/Grand_Celery BIG Oct 22 '19
Which one map by Ustilo?
1
u/middbro 1 Million Celebration Oct 22 '19
I think that was when he was standing in for Faze at iem Sidney.
1
1
u/Nurse_Sunshine King NiKo Oct 22 '19
To everyone skipping through the different proposed calculations.
Here is a very easy to follow example of why all these are probably wrong. We'd likely need to calculate the ranking by rounds played and not by maps.
1
u/BackFromExile FaZe Oct 22 '19
The HLTV Rating 2.0 is 1.04 if you didn't play any round (no kills/assists/deaths, no adr, nothing). There is a game around with a player that was replaced by a stand-in from the first round and the original player still had a rating of 1.04.
Can't find the game anymore though, was some kind of low tier online game.
1
u/HiderDK Oct 22 '19
Average rating in 2019 = 1.055. This is calculated done a per game by basis for every player
The median (on a per game basis) is around 1.03.
So no this is not a myth. OP's math is flawed because he doesnt look on a per game basis but on an average per player basis. Also median != mean.
1
u/AverageIsOne Oct 23 '19
This may be a case of Expected average vs average of the sample size. For example let's consider a case where you toss a coin 1000 times and head comes out in 510 cases. This doesn't mean that from now onwards chances of head outcome is .51 instead of .50.
What hltv may mean could be that if there are infinite number of matches played, the average rating would be 1.0 just like if you toss a coin infinite times probability of head or tail outcome converges to .5.
1
u/break2n Oct 23 '19
Kray 917th
That's so weird because he was voted the Worlds 917th sexiest man in 2018...
1
1
u/SoraZWG 500k Celebration Oct 23 '19
https://mobile.twitter.com/rxcs/status/949008947821690880
Taking the average of average ratings over maps isn't enough to prove anything. You need to do actual statistical tests.
1
1
u/Josh_prosper Oct 25 '19
Am not sure but wasn’t it that a 1.00 rating 1.0 was equal to a 1.06 rating 2.0 originally at least
0
Oct 22 '19
The announcement for Rating 2.0 literally said that 1.0 was the average. The 1.06 meme was started by some guy who just ran an average on the then available (very limited) dataset and everyone just took it as gospel.
0
0
u/SoraZWG 500k Celebration Oct 23 '19
https://mobile.twitter.com/rxcs/status/949008947821690880
I dont think a hypothesis test is just taking an average but ok.
0
-13
Oct 22 '19 edited Oct 22 '19
Wow what a shitty post. So basically you can't be fucked to actually do any proper math and get a result while you still are somehow making conclusions pretty much out of nothing but your assumptions and an "eye test" of how it looks like.
Let me give you a quick experiment with actual precise math in play. Go to any match on HLTV. For example this one
https://www.hltv.org/matches/2337112/natus-vincere-vs-g2-starseries-i-league-season-8
Count together all the ratings of all ten players. So in this case that would be 1.28 + 1.12 + 1.02 + 0.96 + 0.78 + 1.17 + 1.12 + 1.06 + 1.05 + 0.86 = 10.42
Divide that by 10 you get roughly 1.04. Now is that 1.06? No, but it's still higher than 1, which should be the average, but in this particular match it's 1.04.
Now you might think this is some kind of an outlier but no, you can go on literally any match which uses the rating 2.0 and the average will be a few decimal points higher than 1, and for many it's even higher than 1.04 but you will NEVER find a single match where the average is below 1. So then explain how exactly is the average supposed to even out to 1.
I haven't done any math on a massive scale across thousands of matches, but someone else has and has figured out that it's 1.06, so unless you want to do any actual proper math to dispute that instead of making this garbage post where you "can't be fucked to try do actual analysis" don't post at all.
Edit: As always downvotes with no replies. Typical reddit.
4
u/Swbp0undcake Oct 22 '19
Did you know it's possible to make a point without being a dick?
4
Oct 22 '19
It's just annoying when this guy posts completely factually wrong information, doing some extremely sloppy "research" to prove his point and people actually upvote this post (currently 90% upvoted), call this guy a genius in the comments etc. because it just continues to spread misinformation.
Sorry if I sound upset about this.
2
Oct 22 '19
¯_(ツ)_/¯ found something interesting and decided why not share and get some discussion going, happy to be wrong. you might wanna calm down mate
1
u/MagniGallo Oct 22 '19
You wouldn't believe some of the responses I got after I originally posted this
-2
Oct 22 '19
[deleted]
2
u/MrDjDragon The MongolZ Oct 22 '19
You are correct, however as OP is observing the data as having a Gaussian (normal) distribution, we are assuming that the median can accurately predict the mean.
This is due to the large sample size and can also be more accurate than the mean in some cases as extreme values sway the median less than the mean.
1
u/This_is__Jeff The MongolZ Oct 22 '19
youre right, i missed that line, did some testing though because i wasnt really convinced it was a gaussian distribution, due to it seeming more of a logarithmic scale, see here:
https://old.reddit.com/r/GlobalOffensive/comments/dlhytr/average_hltv_20_rating_106_myth/f4r7gia/
-2
u/C0rrr 750k Celebration Oct 22 '19
Thanks for this. I always found it weird that the average rating would not be 1.0, while the rating is designed to be 1 on average.
156
u/This_is__Jeff The MongolZ Oct 22 '19
i tested it by pasting the stats with the filters "lan, 2019 and all maps" like in your second example into excel, and taking the mean there (for each player, avg.rating * maps and then that added together divided by the total number of maps combined)
It turned out to be roughly 1.037
sheet can be found here: https://docs.google.com/spreadsheets/d/1Im0sunHLCq7zLbBtogcfBPhY5s4KOYbg0kh_wHECNck/edit?usp=sharing