Search code examples
pythonalgorithmrankingranking-functions

Advice on how to rank based on a score


Im new to trying to use algorithms and interested if there is some advice on what topics I could research to try and solve my problem.

Below is a chart that I'm trying to understand how I could rank all of the competitors and occurrences (you'll notice the same names appear multiple times) of their score based on the scoring system.

The lower the score the better and I need to rank all the competitors from best to worst

The output i would expect would be something along the lines of Atheleric , Scissor Step and Huesca being ranked higher than Morecoruba and Three Kinds and Taunting

my very rudimentary approach has been to take the lowest of each competitor's scores and then rank lowest to highest but i know that misses out on variations and consistency.

Im just wondering what advice people would have around this type of problem.

enter image description here


Solution

  • Your issue is that you have multiple scores per competitor. There is no set approach for a ranking. Here are some methods:

    • Use the average score.
    • Use the median score.
    • Use the most recent score.
    • Use a weighted average based on recency, such as imposing an arithmetic decay).

    One method that I've used when there are lots of scores for many/most "competitors" is an adjusted average. The adjustment is one standard deviation less than the average:

    avg(score) - stdev(score)
    

    The basic idea is that this incorporates the confidence in the score based on the number of observations. Note that this assumes that the "score" doesn't really change over time and the observations are attempts to measure it.