Multifaceted Choice: Facets update devlog

Frequently Asked Questions #

Are you affiliated with Dota2ProTracker/Stratz/Valve? #

No.

What kind of reports are there? #

I usually create reports for all DPC and Premiere tournaments, leagues and qualifiers. I also try to make reports for tier 1/2 tournaments (based on liquipedia). I add every report that seems to be important enough to look at, regardless of who is hosting it. And there are also immortal ranked stats for every patch (starting from 5900 MMR), as well as meta reports.

Can you make a report for X event? #

Sure! Just let me know about the details about the event and I'll make one. Most important tournaments get their reports anyway, and I would also like help out smaller events and make a report for them. The only exception would be events without any data available (either events without a ticket or without any replays provided).

I want to have my photo on my player profile in the reports. #

Hit me up on Discord and send me your Steam ID and the photo, I'll add it.

Some matches/data are missing from the reports #

Usually there are two reasons for that:

  1. The match was considered “failed” or “remade”: games with low score or abandons might fall into this category.
  2. At the time of adding the match was not present in the API or did not have the analysis data yet. Usually this means that the data will be there after the next update loop.
    You can ask me on discord about such matches to know the details on it. We'll figure it out.

What are meta reports? #

Meta reports are based on aggregated data from other reports. There are three kinds of meta reports: ranked meta (last week and previous week), competitive meta (last two weeks and previous two weeks) and competitive season (DPC tournaments or data for all major tournaments/leagues during the competitive year.

What data is there in meta reports? #

Ranked meta reports have the same data as Ranked patch reports - they aggregate immortal rank level matches. Competitive season and meta reports are using data based on all DPC competitions, as well as premiere/tier 1/tier 2 competitions (based on liquipedia tier). Qualifiers are not included in meta reports (at least not right now)

How often do you update reports? #

Reports for tournaments and leagues are updated as soon as new match finishes. Ranked reports, as well as meta and competitive season reports, are updated daily.

What are “mp” and “mb”? #

Short for Median Picks and Median Bans. It's a sort of metric used to show how popular a hero was to a median hero in a report. It's useful when comparing two different reports, and it's also easier to read and get some context out of it.

Why you don't have data for X? #

It depends. I actually have a bit more data that you can see in reports (e.g. items or wards data, players data for ranked matches), but I don't really have time to implement it for public use. I'm working on a completely new version of stats hub / platform with all this data and better navigation throughout reports. Some data is excluded from reports for privacy reasons.

I add links to official social media and sponsors of each event to every report. This is done to make it easier for people to find information about the TOs and sponsors.

About Rank #

What is “rank” for heroes and how is it calculated? #

It’s a rank from 0 to 100 (higher is better) that’s assigned based on Wilson score rating calculation result, taking into account the total number of matches played, the hero’s contest rate, the hero’s win rate. Effectively it’s a “smart winrate” that takes into account both number of wins and the hero’s total number of matches relatively to total number of matches played.

What is “R-rank”? #

R-Rank, or Rev-Rank, or Reverse Rank is a rank that is reversed. Heroes who have a lot of matches, but are less effective (have low winrates) will get high R-Rank values.

What is “rank” for heroes positions and how is it calculated? #

Positions rank works similarly to overall heroes’ rank except it ranks specific positions and the formula has some slight tweaks to it. The idea behind it is pretty much the same.

Basic questions #

What is “winrate banned”? #

It’s winrate of a team that banned the hero.

What is Hero Pairs Divergence? #

It's the difference between expected pair's matches and real match number. Usually this difference is higher for better hero combos.

Positions are weird, what's about them? #

Positions are based on role (core/support) and lane. Naturally, it's not positions 1 to 5 that you would expect.
Lane swaps (position 1 going from safelane to offlane and vice versa) may cause some heroes to have more matches on the same role, but another lane. Aside from that, support positions are divided into Support Safelane (which is usually position 5) and Support Offlane (which is usually position 4), the latter being every other lane, except safelane to count in roaming heroes.
Keep in mind, that heroes who switched their lane to jungle early on in the game are considered “roamers”, and roamers automatically count as supports. Because of that you may see slightly more games and heroes in offlane support categories - it also includes heroes who jungled since the first minutes. But usually it's correct.

What are “medians”? Why do I need median XPM/GPM/etc? #

Median is basically a value in the middle. Average values (aka arithmetical mean) are usually pretty close to median values, but while they represent a mean value and get affected by standout values (e.g. if you have a set of 10 elements equal to 20 and one equal to 100, mean value will be higher than 20), median values represent a value in the middle of a set. Practically median value represents a value that you will see the most (or you will be rather close to it). Median XPM, GPM, Picks and Bans values are important to provide context to other numbers — for example, looking at a hero's picks number and at median picks you can easily understand how much popular the hero is in relation to every other hero.

Where can I find X data? #

Depends on what are you looking for. First of all, every team has its profile and data in the profile is usually identical to what the report has in general. So if you’re looking for something that’s on the general report, but not in the team’s profile, it should be there. Every link with a burger icon on it means there are other modules inside of it, Try looking into these as well.

Explain Hero VS Hero to me. #

It doesn’t use the rank formula, so it may shift a bit for lower match sample. In general it’s just a record of a hero’s performance against a selected hero. For example, if you choose Sven, there will be Meepo on the list with its Win and Loss numbers, as well as overall win rate and win rate advantage over Sven. Higher advantage means the hero is better, lower advantage means the hero is worse.

What is meta graph? #

It’s a visual representation of the most popular hero pairs as well as the most popular heroes in general.

Explain hero combos to me. What are all those weird columns? #

Every hero combos component (pairs, trios or lane combos) works the same. Winrate difference is calculated based on average expected win rate of the heroes together. Expected matches is calculated number of matches the heroes would be picked together randomly based on their pick rates. Deviation is difference between expected number of matches and the actual number (higher number is better and means the heroes are usually picked together intentionally, negative values mean otherwise). A lot of pairs are considered insignificant and are filtered out with a limiter value.

What is this limiter value? #

It’s a calculated number of matches that’s required for a hero or a pair to be significant. It’s required to avoid filling reports with completely useless data, having only the most important data left.

Technical stuff #

I found a bug / encountered a fatal error! What should I do? #

Tell me about it.
You can contact me on Discord, Telegram, Twitter or VK (links are on the sidebar). Most minor issues fix naturally when you reload the page (and I'm aware about the issues, it's related to stuff I described on Support page).

Is there an API? #

Yes, there is, but I don't recommend using it. I made it mostly for myself, its documentation is basically non-existant and I don't really have much time to support it. Although, you can get all the data you can find in a report.

Where do you get the data? #

I use OpenDota and official Dota 2 WebAPI for official matches and Stratz for ranked matches.

Why REGION NAME has low number of matches? #

It’s common for higher ranks to queue on closest popular region. I.e. EUW for RU players, USE for USW.

Where did you get data? #

I've got match IDs manually extracted from leaderboards players' recent matches using STRATZ API. Then I fetch match data using OpenDota API.

Is it strictly Immortal Rank? #

Almost. I'm not checking all the matches by myself (it would take too much time, requesting every single match and checking it's average rank). I'm using STRATZ API filters for that, minimum match rank is set to 80 (immortal). In some cases uncalibrated players or those who got to play with nine immortal players in game may get through.

How often do you update Immortal reports? #

Every night there is a match collection routine running. Data collection and processing take a couple of hours. You can find more specific times on the reports updates schedule page.

How do you deal with matches of bots abusers at high MMR? #

I don't. To collect the stats I'm using match histories of Immortal players using the list of known players and public data. Bad actors who tend to exploit matchmaking in this way usually play in a lobby with 10 anonymous players. Because of that, there is not even a single player who would have these matches in a public match history, and because of that these matches are naturally ignored.

In addition to that, I have various filters for match duration, abandons, low score and other suspicious activity. While this is not a solution for every case (and it's not intended to be one), it's good enough for what I'm trying to achieve.

Items stats #

What are items stats based of? #

I'm using item purchase events to calculate items stats (this data is acquired from the detailed analysis). This kind of approach allowes me to get more accurate data (compared to using endgame inventory), and allows to calculate item timings and winrates on different stages of the game.

What are items categories based of? #

Mostly of price: early items are cheap and can be bought on themselves only early on, middle are 1-2.5k gold items without upgrades, major items are everything else. Neutral items are divided by tiers. Categories are moderated by me.

I can't find item X in the stats or it has less matches, what's up with that? #

I'm using Stratz data for that and in some cases assembled items may be recorded incorrectly (and may be missing from data, like Boots of Travel and Orb of Corrosion on 7.28 release). In case of neutral items, I'm using per-minute inventory data to record neutral items pickups (there are no purchase events since these items aren't purchased), and consumable neutral items (like Royal Jelly and Mango Tree) will have much less matches because of that.

What are winrate shifts? #

“When picked” is by how much the winrate of a hero changes when the item is acquired vs when it is not. Early and late timings are differences in winrate when the item was picked up early (Q1 timing and earlier) and late (Q3 and later) vs average item timing. Gradient represents by how much the winrate changes with every minute, starting with Early timing/winrate.

What is the build progression tree? #

It's a tree (graph), that represents items' purchase order (by arrows) in time (every layer vertically is equal to ~6 minutes of the game) and success of an items purchase order pair (by color). You can also see the same data as a table.

Laning stats #

Due to Laning stats being such a complex topic, I decided to make a section dedicated to explaining limitations of the current implementation, as well as to answer most common questions

  • Lane winrate is determined based on networthes in the matchup at the end of the laning stage. Huge difference is won/lost lane, small difference is considered a tie. Won lane counts as 1 point, tie counts as a half.
  • Lane status of a support is based on a networth of the closest core (so if a support's core won the lane, the support is considered a winner too).
  • Rank for lane stats is based on lane winrate, number of matches, average differences in lane advantage and match win rate. In case of hero specific laning stats the highest rank indicates the best possible lane opponent to benefit the hero (aka the easiest one).
  • There may be slight differences in numbers, produced by either lack of detailed analysis or lack of an opponent in lane.
  • There are some assumptions and only one factor used to detect laning outcome, due to my current limitations. HOWEVER, from practice it turns out to be pretty accurate with the real picture.
  • Since it's based on NETWORTH, it's naturally affected by hero and tower kills, as well as deaths. It also means that if a hero switched to jungle and got more from there, then the hero practically won the lane (if the hero didn't leave the lane completely).
  • Hero laning matchups are not limited to 1 vs 1 lane matchups. Supports and even multiple cores on lane may affect the picture.
  • There's no such thing as “lost lane 1 vs 3, but it's actually a won lane”. If a hero lost lane, then the lane is lost, no matter how you call it. However, there are winrates from lost/tie/won lanes, that can show you, how effective the hero may be if the lane was lost, completing the picture. Same goes the other way around.

Nerds Builds #

The skill builds are awful, where did you even get this data? #

I used Dota2ProTracker as the source of data for skill builds for some time, but at the moment of writing it’s broken. I have my own dataset, but didn’t implement the feature yet.