[EM] A more Condorcet-like party list PR method
Kristofer Munsterhjelm
km_elmet at lavabit.com
Sat Jul 6 05:26:37 PDT 2013
Among other things, in Wahlberg's thread, there was a discussion about
ways of making Sainte-Laguë party list PR accommodate ranked ballots.
The simplest method found was:
1. Allocate seats according to Sainte-Laguë or Webster with respect to
first preference votes.
2. If any party got zero seats:
2.1. Remove the party with the least votes from all ballots.
2.2. Go to 1.
This will work most of the time, but it has two potential problems.
The first is that when there are only a few seats, it will reduce to
Plurality (i.e. it doesn't take compromise parties into account).
The second is that the order of elimination may matter. If you have an
L-C-R situation among parties, and none of them can get a seat by first
preferences alone, then the compromise C (which may get a seat were L
and R eliminated) may be eliminated early and so make the outcome worse
for the L-C-R voters.
After some thinking, I think I've found a hack that should fix the
second problem. I'm unsure how much it fixes the first, but it reduces
to Condorcet in the single-seat case.
It's also probably too complex to be used, but that's another matter :-)
So, the method. It works like CPO-STV or Schulze STV: you define a
function f({x}, {y}) for subsets {x} and {y}. This function produces a
score of a virtual contest between the two subsets, and then these
contests become the entries in a pairwise matrix that is run through a
Condorcet method.
For this method, the subsets are sets of parties. To determine the score
for f({x}, {y}), do this:
1. Eliminate all parties not in either {x} or {y}.
2. Do a restricted Sainte-Laguë allocation for {x}. A restricted
allocation goes like Sainte-Laguë, but no party not in {x} can get any
seats, and every party in {x} must get at least one seat. Implement
thresholds as needed here.
2.1. If the allocation is contradictory (e.g. more parties than seats,
or there is a threshold and a party below it has been given seats), then
treat the allocation as one where no seats were given to any party.
3. Once done, for each party, add the number of voters that voted for
that party, minus that party's quotient, to a common sum. Call this sum
{x}'s proportionality score.
4. Do a restricted Sainte-Laguë allocation for {y} and similarly
calculate {y}'s proportionality score.
5. f({x}, {y}) is equal to {x}'s proportionality score in this contest.
f({y}, {x}) is equal to {y}'s proportionality score in this contest.
And here's a last-seat compromise example, adapted from the LCR example
I gave earlier:
100: X
100: Y
46: L > C > R
44: R > C > L
10: C > R > L
3 seats.
Let's determine f({XYR}, {XYC}):
The union of these subsets is {XYRC}, so L is eliminated. We now have:
100: X
100: Y
44: R
56: C
Restricted Sainte-Laguë allocation for {XYR}:
By the one-seat rule, we give one seat to each.
This gives a quotient of 100/3 for X and Y, and
44/3 for R.
The proportionality score is thus:
100 - 100/3 (X-voters)
+ 100 - 100/3 (Y-voters)
+ 44 - 44/3 (R-voters)
+ 0 (C-voters)
= 488/3
Now, do {XYC}.
Restricted Sainte-Laguë allocation for {XYC}:
By the one-seat rule, we give one seat to each.
This gives a quotient of 100/3 for X and Y, and
56/3 for C.
The proportionality score is thus:
100 - 100/3 (X-voters)
+ 100 - 100/3 (Y-voters)
+ 0 (R-voters)
+ 56 - 56/3 (C-voters)
= 512/3
So {XYC} wins, as it should.
And an example where the seats aren't all forced by the one-seat rule,
f({XL}, {XC}), again 3 seats:
The union of these subsets is {XLC}, so we have
100: X
46: L
54: C
Restricted Sainte-Laguë allocation for {XL}:
By the one-seat rule, one seat has to go to X and one
has to go to L. Now the quotients are 100/3 for X,
46/3 for L, and 54 for C. Since the allocation is
restricted to {XL}, C can't get any seats. Of the
remaining parties, X has the greatest quotient
and gets the second seat.
The final quotients are 100/5 for X, 46/3 for L, and
54 for C.
The proportionality score is thus:
100 - 100/5 (X-voters)
+ 46 - 46/3 (L-voters)
+ 0 (C-voters)
= 332/3
By the same reasoning, for {XC}, X gets two seats and C gets
one. This gives a proportionality score of 116, which is
348/3 and thus {XC} wins this contest.
Finally, in a 3-seat election, f({XYLC}, {XYRC}) would return 0 on both
sides. The one-seat rule implies that all four parties must get a seat,
but that is impossible as there are only three seats. Therefore the
allocation aborts without allocating any seats, and so the
proportionality score is 0 for every party, giving a total of 0.
To actually get the assembly, just find the party subset that wins
according to the underlying Condorcet method, then do a restricted
Sainte-Laguë allocation based on that subset.
This should work because all possible ways of eliminating subsets of
parties are considered. Thus, in an "L-C-R among minor parties"
scenario, {..., C} will beat either {..., L} or {..., R} pairwise: it
beats {..., L} because both the C-first and R-first voters will be
supported by C; and it beats {..., R} because both the C-first and
L-first voters will be supported by C.
Yes, the method is basically CPO-STV applied to Sainte-Laguë.
A less hackish method might directly consider pairwise relations that
hold true for Sainte-Laguë allocation, but I haven't got there yet. A
better method might also redistribute voters that don't contribute to
getting a seat allocated to the party. I'm not sure that would reduce
the method to a quota-based one, now; perhaps we only need a "floating
quota" for the method to be sufficiently divisor-like to satisfy
population-pair monotonicity, reduce to ordinary party list with enough
voters and seats, etc. On the other hand, I'm not sure that it wouldn't,
either. In any event, in the current method, there's little reason for
voters to vote beyond first rank if the party they vote for as favorite
is guaranteed of getting at least one seat.
It may be possible to solve a variant of this method in less space than
2^(num parties) by changing the proportionality score from sum to
leximax and doing some kind of dynamic programming, because the
allocation step seems to be quite suited to optimal substructure
thinking. On the other hand, the elimination steps might make that
impractical.
The method should be weakly summable (i.e. when the number of parties
are kept constant). For each cell in the matrix, do the elimination
first, then store the counts for each party. These counts can be summed
up between districts, so if n is the number of parties, you have (2^n)^2
cells, each of which stores n numbers in the worst case. And since n is
a constant, so is 2^n.
It's also a relatively simple matter to switch out Sainte-Laguë for any
other divisor method you might desire to use. A slight snag as it is
currently set up: the initial divisor should be 1, so that parties that
don't get any seats don't contribute to the proportionality count at
all. Thus the modified Sainte-Laguë method would have to be adjusted, I
think; unless the /1.4 reduces to a constant and so never changes the
outcome.
More information about the Election-Methods
mailing list