apportionment/README.md

39 wiersze
1.9 KiB
Markdown
Czysty Zwykły widok Historia

2019-06-14 14:21:41 +00:00
# A Python implementation of common apportionment methods
This is a collection of common apportionment methods. Apportionment has two main applications:
2019-06-15 09:24:22 +00:00
to assign a fixed number of [parliamentary seats to parties](https://en.wikipedia.org/wiki/Party-list_proportional_representation) (proportionally to their vote count), and to assign
[representatives in a senate to states](https://en.wikipedia.org/wiki/United_States_congressional_apportionment) (proportionally to their population count).
A recommendable overview of apportionment methods can be found in the book "Fair Representation" by Balinski and Young [2].
2019-06-14 14:21:41 +00:00
2019-06-15 09:24:22 +00:00
The following apportionment methods are implemented:
2019-06-14 14:21:41 +00:00
* the largest remainder method (or Hamilton method)
* the class of divisor methods including
- D'Hondt (or Jefferson)
2019-06-14 14:33:31 +00:00
- Sainte-Laguë (or Webster)
2019-06-14 14:21:41 +00:00
- Huntington-Hill
- Adams
2019-06-15 09:24:22 +00:00
* the quota method [1]
2019-06-14 14:21:41 +00:00
2019-09-01 15:17:43 +00:00
This module supports Python >= 2.7 and uses [gmpy2](https://gmpy2.readthedocs.io/) if available.
2019-06-14 14:21:41 +00:00
## How-to
The following example calculates the seat distribution of Austrian representatives in the
2019-06-14 14:26:37 +00:00
European Parliament based on the D'Hondt method and the [2019 election results](https://www.bmi.gv.at/412/Europawahlen/Europawahl_2019). Parties that received less than 4% are excluded from obtaining seats and are thus excluded in the calculation.
2019-06-14 14:21:41 +00:00
```python
import apportionment
2019-09-09 10:12:05 +00:00
parties = ['OEVP', 'SPOE', 'FPOE', 'GRUENE', 'NEOS']
votes = [1305956, 903151, 650114, 532193, 319024]
2019-09-01 10:47:45 +00:00
seats = 18
2019-09-09 10:12:05 +00:00
apportionment.method("dhondt", votes, seats, parties, verbose=True)
2019-06-14 14:21:41 +00:00
```
2019-06-14 14:33:31 +00:00
Another example can be found in [example.py](example.py).
2019-06-14 14:21:41 +00:00
## References
[1] Balinski, M. L., & Young, H. P. (1975). The quota method of apportionment. The American Mathematical Monthly, 82(7), 701-730.
2019-06-15 09:24:22 +00:00
[2] Balinski, M. L., & Young, H. P. (1982). Fair Representation: Meeting the Ideal of One Man, One Vote. Yale University Press, 1982. (There is a second edition from 2001 by Brookings Institution Press.)