# Data Manipulation and Compression

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

-
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

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

-
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