| hello again,
yesterday I mentioned my idea of what to do with all of the unnecessary 0's, but I thought it would be too difficult. However I was thinking about it today and I got some new ideas, leading to IMHO relatively fair, usable and not so difficult solution. For this method it is necessary to store all everybody's votes.
In my explanation I will refer to a picture I made for this purpose, located at mujweb.cz/www/thommascz/solution1.gif This text is there too: mujweb.cz/www/thommascz/solution1.txt
I will be using a fictive man called XYZ. His votes are in figure 1 on the picture. (The voting scale goes from -5 to 5 but can be easily transformed into 0 to 10 or anything else. In the text I sometimes use percentages.) We can see that XYZ tends to vote low: he has voted -5 6 times, -4 2 times and -3 3 times. If he now happens to vote -2, which usually means bad, for him it means that the puzzle was the best he has ever seen. And I am sure many people overestimate or underestimate puzzles. Someone votes mostly from 20% to 60%, someone from 50% to 100%. The goal of my solution is to balance this, without eliminating any votes. The goal is, if somebody votes only 0%'s, they will be counted as 50%.
(Some technical stuff here, you can skip it - the purpose is to find XYZ's average vote (AV).) See figure 2. I will apply some physics and mechanics - convert the voting bar into a see-saw, and votes to forces. From this we can compute a torque from the formula:
(T)orque = (F)orce * (r)adius
(For those interested, Wikipedia, the free online encyclopedia describes torque as a "rotational force". http://en.wikipedia.org/wiki/Torque)
(In mechanics, radius is the distance from the stable point 0, so only absolute values are used, and if I remember it right, the sign of the torque is determined by the direction of the rotation (clockwise or counter-clockwise), but here I will use negative values where needed.)
So: T1 = F1 * -5 = 6 * -5 = -30 T2 = F2 * -4 = 2 * -4 = -8 T3 = F3 * -3 = 3 * -3 = -9
We can get the total torque by a sum of all torques. T = T1 + T2 + T3 = -30 + ( -8 ) + ( -9 ) = -47
We also have the total force: F = F1 + F2 + F3 = 6 + 2 + 3 = 11
From this we can compute the position ( (R)adius ) of F, meaning where F has to be applied to have the same effect as F1, F2 and F3 together. R = T / F = -47 / 11 = -4.27
The positive torque from positive votes (forces) is computed separately, and then the two total torques are summed. If the resulting total R is negative, the person underestimates puzzles and if positive, he/she overestimates.
(End of technical stuff)
So, we computed that in our example, the XYZ's AV is -4.27 . If he had voted 11 times -4.27, it would have had the same effect as his real voting.
So far, I am quite sure I am on the right way. But what to do with this value is a question that needs some discussing. I haven't had much time to really think about the possibilities, and I am not a mathematician, so I only developed one idea as I wanted to have at least one complete solution. But I think it could work.
See figure 3 - the real voting bar is shifted, or moved, by the value of the AV, so that 0, or generally the middle, corresponds to the XYZ's AV. It means, if XYZ votes -4.27, it will be counted as 0, if he votes -2, it will be counted as 2.27. The figure 4 shows the same as a graph. On the x axis is what XYZ clicked, y is what is counted. Notice that everything before and after the boundaries is rounded to the first, respective last number. So XYZ can't make a worse vote than -0.73 or better than 5. For the puzzle's rating it doesn't matter, if XYZ clicks 1 or 5, the only difference is for XYZ, because the AV is computed from the real votes. So if he votes 1, AV will become -3.83, if he votes 5, AV will become -3.5 (if I am counting right).
Now, some other rules have to be applied. I mean, if XYZ has voted only a few times, the AV is a very unprecise value. So maybe before XYZ makes 10 votes, they could be used normally. There can also be some other problems which I didn't think of.
All of this would be quite easy (I think), but to make it more precise, it would be good to store not only numbers of votes, but also which puzzles the people voted for, and after every change of a person's AV, all of the ratings of previously voted puzzles would be recomputed. So the ratings would be dynamic and IMHO even more accurate, but this would eat quite a lot of server's computing power, keeping it busy recomputing ratings.
The advantage of this method is, it almost doesn't affect people who vote fairly (the closer is AV to 0, the closer the vote sent is to the vote clicked). In a fictive ideal world, where everybody would spread his/her votes evenly, the result would be exactly the same as a normal arithmetic average of votes.
I hope I didn't make any mistakes, which would be very embarrassing. I really apologize for such a long text. Well, you don't have to read it, anyway. Oops, shouldn't I put that sentence rather in the beginning? :o |