I'm trying to identify the rating algorithm used to calculate the displayed average of a 1 star to 5 stars rating system. To analyze the data I collated the first and last 1000 ranks and added the real average.
Please see my EtherCalc table.
Here is what I know about the underlying algorithm:
- It is symmetrical.
- It gives more power to the majority of votes.
- It is pretty simple and not (intentionally) based on any known (complicated) mathematical method.
- No information other than the respective number of votes is used for the calculation.
- It tries to give supposedly dishonest votes (those allegedly submitted just to force the rating up (5 stars) or down (1 star)) less weight, so not every vote is worth the same. For example: If the vast majority of votes concentrate around 1 star and 2 stars votes with a smooth decline and a sudden jump at 5 stars votes, those 5 stars votes will count less (not necessarily 3.00 or 4.00, it could also be something like 4.88).
- To detect outliers (suspected dishonest votes) a relative smooth rating curve is expected.
- Items with overwhelmingly favorable ratings get bonus points what gets them over 5 stars.
I guess the easiest way to determine the algorithm is to analyze the items with the fewest numbers of total ratings. For example:
rank | 5 stars | 4 stars | 3 stars | 2 stars | 1 star | total | displayed average | real average |
---|---|---|---|---|---|---|---|---|
535. | 15 | 1 | 3 | 0 | 1 | 20 | 5.42 | 4.45 |
9802. | 2 | 3 | 10 | 0 | 0 | 15 | 3.11 | 3.47 |
9908. | 2 | 1 | 3 | 2 | 2 | 10 | 2.86 | 2.90 |
9944. | 0 | 0 | 3 | 0 | 1 | 4 | 2.71 | 2.50 |
9978. | 0 | 0 | 3 | 0 | 2 | 5 | 2.26 | 2.20 |
Since I've been thinking about this for too long and can't come up with the solution, I kindly ask for your valuable help.