1
$\begingroup$

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?)

  • 0
    This has nothing to do with the information theory or math software. Please categorize informatively.2012-12-06
  • 0
    I apologize, first time posting, which tags would you recommend?2012-12-06
  • 0
    Probably "arithmetic", maybe "statistics" if it was a more advanced case of calculating properties of a data set.2012-12-06

1 Answers 1

0

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

  • 0
    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?2012-12-06
  • 0
    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.2012-12-06
  • 0
    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.2012-12-06