A way to combine scoring and ranking

If you give a voter both a ranked section of the ballot and a scored section of the ballot, for every race, one above the other, with all the candidates markable in both sections, then they can both rank and score the candidates, with the scores being used to weaken a voter’s vote for any candidate (i.e. a candidate ranked 1st and rated 3/10 is given 30% of a 1st choice vote.) If the voter only fills out the scored section of the ballot, then it should be interpreted as them equally ranking all of the candidates 1st and giving them variable amounts of 1st choice votes (because this is exactly how scoring without any rankings works.) Essentially, you can show your preference, but also vote how you truly feel on the candidates if you want to. This may be the best possible way to design a voting method, since it takes into account approving (equally rank, or score several candidates max score), ranking, and scoring.

I’m not sure if it can be made simpler, and I suspect it might create some strategic opportunities not available with ranking or scoring alone. But this data can be input into any ranked voting method, and potentially change the result (a Condorcet winner honestly rated a 1/10 by every voter is more likely to lose their pairwise matchups, potentially making someone else the CW.)

500th discussion!

Are you then saying to use the IRV method? Why would a voter want to give any scores other than 1’s and perhaps 0’s? It would be like if you could (in FPTP) cast up to 5 votes on the same candidate. No one would ever want to not use all 5 votes.

Probably the best voting method, if you can get past its complexity and nonprecinctability, is “Vote a chain of if-else if-…-else blocks where each block contains a Boolean expression on the candidates and a Score ballot; candidates are eliminated in order of least total score”.

If that’s the case, maybe Score isn’t a good method compared to Approval or STAR.

To make it clearer how this would work, suppose you enter this data into a Condorcet method:

46 voters: A>B>C

10 voters: B

44 voters: C>B>A

Under normal Condorcet, B wins (beats A 54 to 46, and C 56 to 44.) But if the following scored data is supplied:

46 voters: A 10/10, B 1/10, C 0/10

10 voters: B 10/10

44 voters: C 10/10, B 1/10, A 0/10

Then both of B’s pairwise matchups are now lost, because she only gets 10% of the A and C voters’ votes, and so against A she gets 14.4 votes to 46 votes (the 10 votes from the B supporters, and 10% of the 44 C supporters’ votes), and against C 14.6 votes to 44. A would thus win, beating B 46 to 14.4, and C 46 to 44, because they have more support.

I think doing this with a Condorcet method is actually precinct-summable, since all you need to do is show the pairwise matchups, but consider that if 40 voters ranked A>B but gave A a 5/10, and 30 voters ranked B>A and didn’t rate at all, the B>A voters are essentially giving full support to B, so the pairwise matchup is actually A with 20 votes losing to B with 30 votes.

It’s worth pointing out that in Australia, they just write in the rank number next to each candidate. You could have a second write-in box which asks voters to convey what % of their vote or support they want to give to that candidate.

No, I was just sort of confused. I guess it was because you used ranking ballots without specifying the voting method, so I just defaulted to IRV because it sort of made sense.

I have no idea how you even count Condorcet on such a method. Suppose A is given 0.8 3rd-place votes and B is given 0.3 2nd-place votes. What goes into the A-B margin? 0.8? 0.3? 0.55? 0.24? Or 0.8 for A over B but 0.3 for B under A? (How would that even work?!)

I think the best way to deal with that is just to treat it as 0.3 votes for B and 0 for A. The voter most likely intended for their support for B to beat out A if they ranked and rated both of them that way. One way of looking at it is that if the voter had wanted to support A more than B, then it wouldn’t have made sense for them to rank B over A.

It could also be argued (maybe) that the voter wants 1 vote for B and 0 for A, but had they equally-ranked B and A 2nd, then they would’ve wanted 0.3 votes for B and 0.8 votes for A. Interesting example.

Ok, can you please give a specific voting system you plan to use this on? Right now the ranking seems largely irrelevant.

I think the latter version of including the scores into the ranks (that a voter ranking A>B should have their full vote go to A regardless of how they rated A or B, but that a voter ranking A=B should have the scores involved in how much of their vote goes to either candidate) makes more sense, so that makes my previous example

wrong, since the score would only come into play if A and C voters rank B co-equal 1st last.

This could be used in any Condorcet system; the idea is that a voter can safely and honestly distinguish between candidates within the same rank using the scores, but can still put full weight behind ensuring candidates at higher ranks beat candidates at lower ranks. Suppose, in a Score election, a narrow majority support A and B, but there are subfactions within the majority preferring A or B. In Score, it won’t really be possible to specify how much support you want to give to A or B (other than full support) without risking electing C, your least favorite. But if a Condorcet system was employed with this Score modification, every A and B voter could choose to either rank one over the other, or if their preference is weak between the two, they could equally rank the two, or if they have a strong preference between the two, but also don’t want to put a full vote’s difference between the two, they can equally rank the two and then rate one of them higher than the other (A is rated a 3/10 and B an 8/10 to make a half-vote’s worth of difference between the two, for example.) That voter doesn’t sacrifice any power in the A vs. C or B vs. C contest because they ranked C lower than A and B, so their full vote ensures only A or B win.

A voter who scores a candidate but doesn’t rank them should be understood to be ranking them co-equal one rank before last (i.e. if a voter gave a 10/10 to a candidate and didn’t rank them, but ranked several other candidates, then the other candidates should have 1 vote more than the 10/10, but if there’s a candidate the voter neither scored nor ranked, the 10/10 should have 1 more vote than them.) If a voter ranks nobody but scores everyone, it’s as if they’re ranking all of those scored candidates 1st (since 1st is one rank before last here.)

Actually, I think a scored but unranked candidate should be treated as ranked co-equal last, because if a voter were to score one candidate a 5/10 and walk out of the voting booth, they likely want 50% of their vote for that candidate against all others, not 100%.

I suppose there’s theoretical grounds to coming up with a ranking for candidates the voter only scored, though.

To absolutely minimize confusion and change from rankings, you could provide an option to rank and a “half-approve” box next to each candidate. If you rank two candidates equally but half-approved one, then it’s considered as if half of your vote goes towards the other candidate in that pairwise matchup. (It should probably be called “prefer” instead of “half-approve”, just to be less ambiguous. Maybe even “half-prefer.”)

I see.

This seems to be O(n2) precinct-summable, which is good.

Have you looked at my Score Sorted Margins code? I think it does exactly what you are discussing.

Score ballots (say 0 to 5, 0 to 9, or 0 to 10, as you prefer).

Candidates have both a total score sum and also a pairwise preference against every other candidate, with a ballot scoring one candidate higher than another contributing a pairwise vote for the one against the other in the pairwise array.

Candidates are initially seeded in rank in descending order of total score sum.

While there are any adjacent pairs that are out of order with respect to their pairwise result, do the following:

  • Find the pairwise out of order pair with the minimum score margin and swap those candidates in the ranking.

The result is clone-independent, Condorcet-winner, and Condorcet-loser compliant, and makes the minimal change to the original score ranking to create an ordered pairwise ranking.

See https://github.com/dodecatheon/approval-sorted-margins/, look at ScoreSM.py

Could you do a short example, running through each step, to help me understand?

What I’m proposing can potentially fail to elect a low-scored Condorcet winner. For example, if 46 voters rank A>B>C, 10 voters rank B, and 44 voters rank C>B>A, B is the Condorcet winner. But if the A>B>C voters switch to A>B=C and score B a 1/10, while the C>B>A voters switch to C>B=A and score B a 1/10, then essentially, the A and C voters are giving B only 10% of their vote against their least favorites i.e. B only gets 10% of the 46 A voters’ votes against C, and loses 14.6 (10 B voters + 10% of 46 A voters) to 44, and B only gets 10% of the 44 C voters’ votes against A, and loses 14.4 to 46. I know the ranks got changed for this to work, and technically the ranks themselves indicate B isn’t a Condorcet winner, but the idea is to allow voters to determine how much strength of preference they want to give to candidates competing within a particular rank, while still allowing for full weight supporting higher-ranked candidates against lower-ranked candidates. Any design suggestions (i.e. maybe a candidate ranked one rank higher than another candidate should have the score count in the matchup, but not two ranks higher; or maybe if a voter scores but doesn’t rank all but one of the candidates, and ranks the last candidate as their 2nd choice, then the scored-but-unranked candidates should all be treated as ranked 1st rather than 3rd) are welcome.