PrefLib / preflibtools

A small and lightweight Python package for working with and generating data from www.PrefLib.org.
https://preflib.github.io/preflibtools/
GNU General Public License v3.0
9 stars 8 forks source link

Borda Score for Weak ranks #7

Closed claussmann closed 4 months ago

claussmann commented 9 months ago

Currently, if there is a tie in a preference, all candidates in the tie receive the worse score. E.g. in v = (a, (b,c), d, e), candidate b and c both receive score m-3 = 5-3 = 2.

However, according to Gärdenfors (1973) there is another (in my opinion more convenient) way to solve this. Every candidate receives the score = (num_succeeding - num_preceeding). For strict rankings this is equivalent to Borda (just that the scores are now (m - 1), (m - 3), (m - 5) …, (-m + 1). The advantage is that in weak ranks, every voter has the same influence. Example:

v = (a, (b,c,d,e,f), g) ==> candidates b,c,d,e,f all receive only score 1. Thus, in total voter v distributes only 11 points, whereas voters with a strict ranking distribute a total of 21 points. With the other Borda score, all points of a voter sum up to 0.

nmattei commented 9 months ago

So I wouldn't advocate for this.

Since there are about 18 version of Borda for weak and all have their own normative and axiomatic characterizations if you're going to implement it for weak make it a separate rule with the name of the version clearly marked.

Borda Mean: https://link.springer.com/article/10.1007/s00355-018-1167-8

Borda Weak: https://www.econstor.eu/bitstream/10419/247190/1/wp921.pdf

I could go on but you get the point. I would not advocate for a single weak borda implementation but rather clearly labeled variants.

On Wed, Oct 4, 2023 at 12:23 PM Christian Laußmann @.***> wrote:

Currently, if there is a tie in a preference, all candidates in the tie receive the worse score. E.g. in v = (a, (b,c), d, e), candidate b and c both receive score m-3 = 5-3 = 2.

However, according to Gärdenfors (1973) there is another (in my opinion more convenient) way to solve this. Every candidate receives the score = (num_succeeding - num_preceeding). For strict rankings this is equivalent to Borda (just that the scores are now (m - 1), (m - 3), (m - 5) …, (-m + 1). The advantage is that in weak ranks, every voter has the same influence. Example:

v = (a, (b,c,d,e,f), g) ==> candidates b,c,d,e,f all receive only score 1. Thus, in total voter v distributes only 11 points, whereas voters with a strict ranking distribute a total of 21 points.

— Reply to this email directly, view it on GitHub https://github.com/PrefLib/preflibtools/issues/7, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJGSMRQVAXKTEARC65NMKTX5WLS5AVCNFSM6AAAAAA5S7GFZGVHI2DSMVQWIX3LMV43ASLTON2WKOZRHEZDMNRWG4ZDINI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

-- Nicholas Mattei Assistant Professor, Tulane University @.*** | www.nickmattei.net Stanley Thomas Hall | 305B +1 504 865 5782 Department of Computer Science Tulane University 6823 St Charles Ave New Orleans, LA 70118

claussmann commented 9 months ago

Yes, you‘re right. So I will implement it as separate rule :)