How star ratings system works?

1k views Asked by At

What I want is to know how star ratings works. I don't get the logic of it.

Example:

5 star - 300 people  
4 star - 45 people  
3 star - 100 people  
2 star - 99 people  
1 star - 10 people  

Total of 554 people

I want to convert these number of votes to percentage and compute all of it to get its average

5 star - 40% (300 people)  
4 star - 10% (45 people)  
3 star - 21% (100 people)  
2 star - 20 % (99 people)  
1 star - 9% (10 people)

a total of 100%

It's just a random percentage. It's not the correct answer.

How can I achieve that ? I don't think if that's the correct process of ratings.

3

There are 3 answers

0
Henrik On

I am confused s to what the question is?

But first some math:

5 star - 300 people  
4 star - 45 people  
3 star - 100 people  
2 star - 99 people  
1 star - 10 people

Total of 554 people

We can easily calculate the vote distribution in percent for stars, lets check units:

[count of people]/[total of people] => ratio of people
ratio of x * 100 => % of x

i.e:
(300/554) * 100 = 54.1516245487 % of people

and compute for all

5 star - 300 people - 54.15 % of votes
4 star - 45 people - 8.12 % of votes
3 star - 100 people - 18.05 % of votes
2 star - 99 people - 17.87 % of votes
1 star - 10 people - 1.80 % of votes

error due to round off: 100 - (sum(%) = 99.99) = 0.01 so its ok to round of


however this is not what the figures you came with looks like. This is probably because the code you are using, is not showing the percent of people who voted for something, but instead it shows an estimate of how the votes should be distributed, and not how they are.

Many rating systems actually count votes with different weights, depending on either the existing distribution, or to equate votes across cultures.

I am Danish, so I'll use that culture of reference, for the example. Take for instance Rural Denmark. In this culture, no one actually uses rates 5 or 1, unless the thing thats being rated is very extremely extraordinary bad or good. In fact it is also more likely to get a 1 than a 5. - but if you get a 2 or 4, it is not "close to 3" it is in fact really bad or really good..

In the Urban Denmark you get more exited, and easily vote 5 for something that is basivly a mediocre performance. Also 1 for something just because you had a bad day.

So for an ordinary but good show, (should rate mean 4) this would be the two distributions:

Rural:

5 stars - 1 people
4 stars - 3 people
3 stars - 10 people
2 stars - 5 people
1 stars - 1 people.

Urban:

5 stars - 4 people
4 stars - 5 people
3 stars - 5 people
2 stars - 3 people
1 stars - 3 people.

notice the cultural difference clearly shown in these made up results..

I am not making this up its called response styles, you may want to read this: http://www.harzing.com/download/respstyles.pdf

So the developer needs to consider which response style the ratings should compensate for.

I could easily weigh the Rural votes, and let the 1 person who dared to press 5 stars, get extra weight in the votes, and also give the people that voted 3 stars, get less wieght. This would make the two results look more alike, and make it easier for an urban dweller to compare the results.

But is that actually correct. ? (to choose urban votes as the norm, and modify the others to fit) would the opposite argument be just as good?

weigh 5 and 1 less in the urban votes, and 3 more, to make it look more comparable for the rural population?

--

in your case it seems that the results carry weights we cannot see how the weights have been found, but we can deduct something from them.

weights:

5 star - 40% / 54.15% ~= 0.74
4 star - 10% / 8.12% ~= 1.21   
3 star - 21% / 18.05% ~= 1.16
2 star - 20% / 17.87% ~= 1.18
1 star - 9% / 1.8% ~= 5

so in this case a negative vote is valued with a high weight, and a positive vote, is given less wight.

I would have expected that the sum of the weights would equal 1, but they are not, so this could be the result of manually fine tuning the results of ratings, to some desired distribution (commercial interests), or perhaps a miscalculation on your part.

0
Dharmesh Goswami On

First of all get total no of people vote.

and use this function to show percentage.

star percentage = star total people vote * 100 / total no of people vote.

for example if you want to get 5 star rate percentage then

5 star percentage = 300 * 100 / 554

0
PHPeter On

Just some basic math.

Sum: 300 + 45 + 100 + 99 + 10 = 554 Votes

Percentage by rating:
5 Star: (300/554) * 100 = 54,15162455%
4 Star: (45/554) * 100 = 8,122743682%
3 Star: (100/554) * 100 = 18,05054152%
2 Star: (99/554) * 100 = 17,8700361%
1 Star: (10/554) * 100 = 1,805054152%

Average:
(5*300) + (4*45) + (3*100) + (2*99) + (1*10) = 2188
2118 / 554 = 3,949458484 stars