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.

I basically just had this same exact idea in a slightly different format and reposted it. I deleted that post, but here it is if it helps explain the idea:

Title: A combined implementation of cardinal and Condorcet methods using a generalized Condorcet principle: voters can have their ballots strategically optimized in each “score runoff”

Continuing the discussion from:

I think we can combine Score/Approval and Condorcet because all of them follow the “abstract generalized Condorcet principle”: a group of candidates who the voting method would consider better than all other candidates (when compared one-on-one) is better than all of them. (STAR fails this by the way, since in one-on-one contests it reduces to plurality and should therefore always elect a Condorcet winner if it followed this principle). WDS noticed this earlier, but it seems not the following:

Condorcet methods analyze plurality runoffs between pairs of candidates, and Score becomes a plurality runoff when voters are maximally strategic, but otherwise allows a voter to give less than their full weight to one of the candidates in the runoff. So we can offer voters the choice to “strategically optimize their vote” and have their scores for each candidate in score runoffs modified to be strategically optimal. If there’s a Condorcet cycle because of this, I’d suggest taking the highest-scored/most-approved candidate in the Smith Set.

Before any strategic optimization:
49 A5 B4 C0
3 A0 B0 C1
48 A0 B5 C1
200 D1

B clearly wins a score runoff against A (436 points vs. 245 points, easier analyzed with the KP transform as votes, and perhaps you can discard parts of a vote enough to ensure a voter only has up to one nominal vote in the runoff i.e. someone who scored A5 B4 has 0.2 of a vote for A in the runoff between A and B), C (436 points vs. 51 points) and D (436 vs. 200). Obviously this is an odd way of looking at it when just doing Score, since we could’ve seen who won by just looking at overall point totals. But if the 200 voters that prefer D>A want their votes strategically optimized, then their ballots are changed to give D 5 points in all score runoffs against other candidates, making D win all of them and be the winner.
This is a trivial example, but this idea seems like it applies everywhere, though it may need modification.

Two possibilities: either the voters who indicate they want their votes strategically optimized have that optimization applied solely to their ballots (increases voter choice and sovereignty, but allows for one-sided “strategy”) or the optimization is applied fractionally to all ballots i.e. if 30% of voters want ballots optimized, then all ballots have their preferences optimized by 30% in score runoffs i.e. a voter who indicated A5 B4 would have, instead of 20% of a vote going to A in that score runoff, 26% (Edit: this should be 20% + 30% * (100%-20%) = 44%), even if they didn’t want to optimize their preference.
Voters could also be allowed to indicate an “approval threshold” which strategically optimizes their vote in score runoffs between approved and disapproved candidates, but not between approved candidates. A voter who wants to Favorite Betray could use this to weaken their Favorite Betrayal by voting Favorite 3 Lesser Evil 5 Greater Evil 0 and then setting their approval threshold at a score of 3/a rank of 2, which would allow them to give the lesser evil somewhat higher odds of averting a Condorcet cycle with the favorite, while still giving both lesser evil and favorite maximal odds of beating greater evil.
I suppose a voter could also choose the fractional amount of optimization to apply to their ballot, rather than all-or-nothing. Really the ideal solution is to allow a voter to write the scores they’d give in each and every possible runoff between various candidates, but this is a much more feasible way of mostly doing that.

I actually would suspect this idea can be applied to cardinal PR methods as well, since any time those methods try to elect a candidate with the “highest score” in any context, they’re really just looking for a Condorcet method’s winner when obeying the property “the strength of a voter’s preference between X>Z must be equal to the sum of strength of preferences of all candidate-pairs in a beatpath from X to Z.”