Sequential proportional approval voting: Difference between revisions

Added code example. This is useful as it can be harder to follow the 'pure math' example provided.
mNo edit summary
(Added code example. This is useful as it can be harder to follow the 'pure math' example provided.)
Line 11:
It is however a much computationally simpler algorithm than (and can be considered a sequential form of) [[proportional approval voting]], permitting votes to be counted either by hand or by computer, rather than requiring a computer to determine the outcome of all but the simplest elections.<ref name="AzizGaspers2014">{{Cite book|title=Proceedings of the 2015 International Conference on Autonomous Agents & Multiagent Systems: May, 4 - 8, 2015, Istanbul, Turkey|date=2015|publisher=ACM|editor-last=International Foundation for Autonomous Agents and Multiagent Systems|location=New York, NY|chapter=Computational Aspects of Multi-Winner Approval Voting |chapterurl=https://arxiv.org/pdf/1407.3247v1.pdf |pages=107–115 |isbn=978-1-4503-3413-6}}</ref>
 
== NotesExample Code==
‎<syntaxhighlight lang="python" line>
SPAV's [[Party list case|party list case]] is [[D'Hondt]], because its reweighting is based on D'Hondt's divisors.<ref name="Janson 2016">{{cite arXiv | last=Janson | first=Svante | title=Phragmén's and Thiele's election methods | date=2016-11-27 | eprint=1611.08826|class=math.HO}}</ref>
import pandas
ballots = [
{"Red": 1, "Green": 0, "Yellow": 0, "Blue": 1},
{"Red": 0, "Green": 1, "Yellow": 0, "Blue": 1},
{"Red": 1, "Green": 0, "Yellow": 1, "Blue": 0},
{"Red": 1, "Green": 0, "Yellow": 1, "Blue": 1},
{"Red": 0, "Green": 1, "Yellow": 0, "Blue": 1},
{"Red": 1, "Green": 0, "Yellow": 1, "Blue": 1},
{"Red": 1, "Green": 1, "Yellow": 0, "Blue": 1},
{"Red": 0, "Green": 1, "Yellow": 0, "Blue": 1},
{"Red": 1, "Green": 0, "Yellow": 0, "Blue": 1},
]
seats = 4
seated = []
max_score = 1
#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)
</syntaxhighlight>
 
Red 6.0
In the same way that [[Approval voting]] is considered by almost nobody to be worse than [[FPTP]], though some question the magnitude of the improvement, many find SPAV to be unambiguously better than [[SNTV]]. This is because it satisfies a stronger [[Weak forms of PSC|weak form of PSC]], which allows solid coalitions to gain proportional representation with less need for coordinated strategy. This makes it less likely to result in anomalous results (i.e. less likely that a minority wins a majority of seats using [[Vote management|vote management]], for example). If every voter bullet votes, SPAV becomes SNTV.
Green 4.0
Yellow 3.0
Blue 8.0
dtype: float64
['Blue']
Red 3.5
Green 2.0
Yellow 2.0
Blue 4.0
dtype: float64
['Blue', 'Red']
Red 2.166667
Green 1.833333
Yellow 1.166667
Blue 3.166667
dtype: float64
['Blue', 'Red', 'Green']
Red 2.083333
Green 1.250000
Yellow 1.166667
Blue 2.583333
dtype: float64
['Blue', 'Red', 'Green', 'Yellow']
 
==Notes==
SPAV's [[Party list case|party list case]] is [[D'Hondt]], because its reweighting is based on D'Hondt's divisors.<ref name="Janson 2016">{{cite arXiv | last=Janson | first=Svante | title=Phragmén's and Thiele's election methods | date=2016-11-27 | eprint=1611.08826|class=math.HO}}</ref>
 
In the same way that [[Approval voting]] is considered by almost nobody to be worse than [[FPTP]], though some question the magnitude of the improvement, many find SPAV to be unambiguously better than [[SNTV]]. This is because it satisfies a stronger [[Weak forms of PSC|weak form of PSC]], which allows solid coalitions to gain proportional representation with less need for coordinated strategy. This makes it less likely to result in anomalous results (i.e. less likely that a minority wins a majority of seats using [[Vote management|vote management]], for example). If every voter bullet votes, SPAV becomes SNTV.
 
==See also==
29

edits