Reweighted range voting: Difference between revisions
mNo edit summary |
(Some light copyediting of User:Fsargent's work (and earlier work), and noting that the example User:Fsargent isn't (yet) clear to me, but I haven't tried too hard to interpret it.) |
||
Line 1:
[[File:RRV Procedure.svg|thumb|RRV Procedure]]
'''Reweighted
==Procedure==
Line 35:
# For the final seat available, the two highest-scoring candidates remaining runoff, with the candidate preferred (scored higher) by more reweighted ballots winning the final seat.
==Example
Below is some example code, written in [[W:Python (programming language)|Python]] and posted by [[User:Fsargent]]:
<syntaxhighlight lang="python" line>▼
▲<syntaxhighlight lang="python" line="">
import pandas
Line 73 ⟶ 75:
print(seated)
</syntaxhighlight>
<syntaxhighlight lang="" line>▼
Additionally, here's some sample data posted by [[User:Fsargent]]:
▲<syntaxhighlight lang="python" line="">
Red 18.0
Green 10.0
Line 98 ⟶ 102:
dtype: float64
['Red', 'Yellow', 'Blue', 'Green']
</syntaxhighlight>It is unclear to [[User:RobLa]] what this example is supposed to show, but he may look more carefully at the example later.
==Related
If [[Ballot#Approval ballot|approval ballots]] are used,
[[Category:Cardinal voting methods]]
|
Revision as of 08:54, 12 April 2022
Reweighted score voting, also possibly referred to as "reweighted range voting" and "proportional score voting", is a multi-member score voting system. It a natural extension of the Webster or Jefferson Method to a Multi-Member System. If two-level score (i.e. "approval voting") ballots are used then it reduces to sequential proportional approval voting ("SPAV").
Procedure
Each voter submits a ballot which, for each candidate, indicates a numeric score which is less than or equal to some maximum number MAX.
Each ballot is given an initial "weight" of 1.
- The highest scoring candidate wins the first seat.
- When a candidate wins, all ballots supporting that candidate are then reweighted, resulting in reduced vote weight going forward for voters who have successfully helped to elect a candidate. This reweighting happens in proportion to the amount of support given in order to ensure that all voters have an equitable amount of influence on the election
- Reweighted ballot = 1/(1+SUM/MAX), where SUM is the sum of the scores that ballot gives to the winners-so-far
- The remaining candidate with the highest total reweighted score wins, and the process is repeated until all available seats have been filled.
See Reweighted Range Voting for more details (some of the wording on this page is taken from there).
Reweighting variations
One variation is to use the reweighting formula 1/(1 + SUM/MAX). This variant reduces to D'Hondt when voters vote on party lines.
Another variant is to use the reweighting formula 0.5/(0.5 + SUM/MAX), or equivalently, 1/(1 + 2*SUM/MAX). This variant reduces to Sainte-Laguë when voters vote on party lines.
There is an infinite number of variants that all use the following formula: K/(K + SUM/MAX) where ½≤K≤1. The two above formulas are special cases for when K equals 1 and ½.
Method variations
A 5-STAR variation in which a final runoff is performed for the last seat available has been proposed in order to incentivize voters to more honestly express their preference order and degree of support.
Each voter submits a ballot in which candidates are scored from 0 (worst) to 5 (best.)
Each ballot is given an initial "weight" of 1.
- The highest scoring candidate wins the first seat.
- When a candidate wins, all ballots supporting that candidate are then reweighted, resulting in reduced vote weight going forward for voters who have successfully helped to elect a candidate. This reweighting happens in proportion to the amount of support given in order to ensure that all voters have an equitable amount of influence on the election
- Reweighted ballot = 1/(1+2*SUM/5), where SUM is the sum of the scores that ballot gives to the winners-so-far
- The remaining candidate with the highest total reweighted score wins each seat available- up until the final seat up for election.
- For the final seat available, the two highest-scoring candidates remaining runoff, with the candidate preferred (scored higher) by more reweighted ballots winning the final seat.
Example code
Below is some example code, written in Python and posted by User:Fsargent:
import pandas
ballots = [
{"Red": 5, "Green": 0, "Yellow": 3, "Blue": 5},
{"Red": 5, "Green": 0, "Yellow": 0, "Blue": 4},
{"Red": 0, "Green": 5, "Yellow": 0, "Blue": 1},
{"Red": 1, "Green": 2, "Yellow": 4, "Blue": 3},
{"Red": 1, "Green": 0, "Yellow": 2, "Blue": 0},
{"Red": 1, "Green": 3, "Yellow": 0, "Blue": 1},
{"Red": 0, "Green": 0, "Yellow": 5, "Blue": 0},
{"Red": 5, "Green": 0, "Yellow": 0, "Blue": 4},
]
seats = 4
seated = []
max_score = max(max(ballot.values()) for ballot in ballots)
#reweight
def reweight(ballot):
seated_scores = [
ballot[candidate] for candidate in ballot if candidate in seated
]
weight = 1/(1+sum(seated_scores)/max_score)
return {candidate: weight*ballot[candidate] for candidate in ballot}
def nextRound(ballots):
reweightedBallots = [reweight(ballot) for ballot in ballots]
winner = pandas.DataFrame(reweightedBallots).sum().drop(seated).idxmax()
print(pandas.DataFrame(reweightedBallots).sum())
seated.append(winner)
return reweightedBallots
while len(seated) < seats:
nextRound(ballots)
print(seated)
Additionally, here's some sample data posted by User:Fsargent:
Red 18.0
Green 10.0
Yellow 14.0
Blue 18.0
dtype: float64
['Red']
Red 10.000000
Green 9.166667
Yellow 11.500000
Blue 10.833333
dtype: float64
['Red', 'Yellow']
Red 8.881410
Green 8.500000
Yellow 6.903846
Blue 9.256410
dtype: float64
['Red', 'Yellow', 'Blue']
Red 6.684219
Green 7.078755
Yellow 6.121795
Blue 6.947497
dtype: float64
['Red', 'Yellow', 'Blue', 'Green']
It is unclear to User:RobLa what this example is supposed to show, but he may look more carefully at the example later.
Related systems
If approval ballots are used, this method reduces to sequential proportional approval voting ("SPAV"). An arguably more natural extension of "SPAV" to score ballots is single distributed vote. These systems are very similar.