Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have this data:

Game 1: 7.0/10.0, Reviewed: 1000 times
Game 2: 7.5/10.0, Reviewed: 3000 times
Game 3: 8.9/10.0, Reviewed: 140,000 times
Game 4: 10.0/10.0 Reviewed: 5 times

I want to manipulate this data in a way to make each rating reflective of how many times it has been reviewed.

For example Game 3 should have a little heavier weight than than Game 4, since it has been reviewed way more. And Game 2's 7 should be weighted more than Game 1's 7.

Is there a proper function to do this scaling? In such a way that

ScaledGameRating = OldGameRating * (some exponential function?)

share|cite|improve this question
This has nothing to do with the information theory or math software. Please categorize informatively. – cheepychappy Dec 6 '12 at 5:32
I apologize, first time posting, which tags would you recommend? – user1487000 Dec 6 '12 at 5:36
Probably "arithmetic", maybe "statistics" if it was a more advanced case of calculating properties of a data set. – cheepychappy Dec 6 '12 at 5:47
up vote 0 down vote accepted

You probably want to use a logarithmic function, not an exponential function. I don't know how greatly you want to weight things, but simply multiplying the score by $\log_{10}$ of your vote counts would give you:

7 * log(1000) = 7 * 3 = 21

7.5 * log(3000) = 7.5 * 3.4 = 26.1

8.9 * log(140000) = 8.9 * 5.1 = 45.8

10 * log(5) = 10 * .7 = 6.9

share|cite|improve this answer
So to normalize this to keep it within 0-10 scale, would I just divide by log10(biggest vote count)? So for example the highest is 140k. So I would divide 45.8/log10(140000) to get a compressed score of 5.14. Is there a better way to go about this from your experience to keep an accurate 0-10 scale? – user1487000 Dec 6 '12 at 6:05
You would definitely not want to simply divide as you've stated. That would cause more votes to decrease the score and higher votes to increase the score, thus making it a meaningless field to sort in. You can create a function to scale to your current maximum number of votes, in which case you have to constantly recalculate whenever this maximum increases, or you can have a stable function such as $\frac{-r}{\log_{10}(x+10)}+1$ where x is your number of votes and r is your raw score. However, such a stable might not scale well. – cheepychappy Dec 6 '12 at 6:23
I would recommend looking up industry standard solutions on software development sites rather than a mathematics site. You are definitely not the first one to have this in mind and there is probably somebody who has come up with a good compromise of a solution. There are infinitely many functions that mathematically meet your criteria, but I doubt you would be happy with a majority of them. – cheepychappy Dec 6 '12 at 6:25

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.