Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rank to MMR #396

Open
dankYoff opened this issue Jan 31, 2024 · 5 comments
Open

Rank to MMR #396

dankYoff opened this issue Jan 31, 2024 · 5 comments

Comments

@dankYoff
Copy link

I wrote a code that can convert rank to mmr. To do this, we substitute the rank in the 1st or 2nd formula (depending on the rank). And we can see how the rank and MMR correlate. For high ranks, the error is 100-300 MMR (> rank = <accuracy: it depends on the top, as well as a limited amount of information about the ranks, I had 15 of them).

But in general, this can be easily corrected and the formulas can be made even more accurate, although they are already quite accurate in calculating MMR.

MAIN

Accuracy: 95-98% | If Rank <=460
Formula: MMR = -448.45658 * ln(9264.01245 * "RANK") + 17242.22337

Accuracy: 98-99% | If Rank>460
Formula: MMR = -1248.02749 * ln(1861.20536 * "RANK") + 27052.29973

Example:

Rank 131 | ~ 11000-11150 MMR
MMR = -448.45658 * ln(9264.01245 * 131) + 17242.22337 = 10959.75 MMR
Accuracy: 98.3%

Rank 1674 | ~ 8245 MMR
MMR = -1248.02749 * ln(1861.20536 * 1674) + 27052.29973 = 8391 MMR
Accuracy: 98.2%

Image for example:

image

@github-project-automation github-project-automation bot moved this to 🏹 Coming up in Roadmap Jan 31, 2024
@Geczy
Copy link
Member

Geczy commented Jan 31, 2024

is this EU only or does it hold true for russia, eu, sea, us east, us west?

awesome job with the formulas!

@dankYoff
Copy link
Author

СIS + EU

@dankYoff
Copy link
Author

I don't think it makes sense to do this for the US/SEA, because there are more streams from either the CIS or Europe, and I'm not sure if it's possible to track the region of the match.

The rating systems are different everywhere, because the number of players varies from region to region.

@dankYoff
Copy link
Author

How to do this for any server.

Step 1. We have data from dotabod: what mmr = what rank. So we can do the following. We take people from the database, look at which server they played the last match on, and write them into the database. Now we know and can calculate the average rating for each region.

Step 2. From each region CIS/Europe/Chine/US West|East, we select a separate region and calculate the rank approximation to mmr, as it was in my code, the more data the more accurate the result will be.

Step 3. We get formulas that now calculate the average player rating at any given time.

Ez

@Geczy
Copy link
Member

Geczy commented Mar 12, 2024

thats a good idea @dankYoff

looks like opendota returns the region in api https://docs.opendota.com/#tag/matches/operation/get_matches_by_match_id
maybe so does steam api, but i haven't checked

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🏹 Coming up
Development

No branches or pull requests

2 participants