ML Wiki
Machine Learning Wiki - A collection of ML concepts, algorithms, and resources.

Hamilton's Method

Hamilton’s Method

This is a Parliamentary Allocation method, also known as the ‘‘Largest Remainder method’’ with the ‘‘Hare Quota’’.

The task is:

  • given
    • $p_i$ - the number of voters in favor of party $i$
    • $N$ - total number of parties, $i \in { 1, 2, …, N} \equiv P$
    • $n$ - total number of voters
    • the quota of $i$ is $q_i = S \cdot \cfrac{p_i}{n}$. Note that $q_i$ is a read number, not integer
  • allocate $S$ seats in parliament
    • $(s_1, …, s_N)$ s.t. $\sum s_i = S$
    • $s_i$ must be an integer

So $s_i$ should be either $\lfloor q_i \rfloor$ or $\lfloor q_i \rfloor + 1$

  • it’s always integer, so we either round down or up

Rule:

  • initially allocate $\lfloor q_i \rfloor$ seats
  • then order all parties by their decimal part of the quota
  • the party with the highest decimal part gets the seat

Formally,

  • $\forall i, j \in P: s_i = \lfloor q_i \rfloor + 1 \land s_j = \lfloor q_j \rfloor \iff q_i - \lfloor q_i \rfloor \geqslant q_j - \lfloor q_j \rfloor$
  • $i$ gets the additional seat if its decimal part is larger than $j$’s

Example

$S = 10$

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 6373 | 6.373 | 6 | 6 || $P_2$ | 2505 | 2.505 | 2 | 2 || $P_3$ | 602 | 0.602 | 0 | 0 || $P_4$ | 520 | 0.520 | 0 | 0 | There remain 2 places to allocate: $\sum_i s_i = 8, S = 10$

  • we order the parties by the decimal part of their quota:
  • ${\color{blue}{P_3: 0.602, P_4: 0.520}}, P_2: 0.505, P_1: 0.373$
  • so in this case $P_3$ and $P_4$ get the additional seats
  $p_i$ $q_i$ $\lfloor q_i \rfloor$ $s_i$ $P_1$ 6373 6.373 6 6   $P_2$ 2505 2.505 2 2   $P_3$ 602 0.602 0 1   $P_4$ 520 0.520 0 1

It’s not always possible to split the seats

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 6373 | 6.373 | 6 | 6 || $P_2$ | 2512 | 2.512 | 2 | ? || $P_3$ | 603 | 0.603 | 0 | 1 || $P_4$ | 512 | 0.513 | 0 | ? | We have a tie

  • ties are broken arbitrarily

Implementation

Python & Numpy

def hamilton_allocation(ratios, k):
    frac, results = np.modf(k * ratios)
    remainder = int(k - results.sum())
    
    indices = np.argsort(frac)[::-1]
    results[indices[0:remainder]] += 1
 
    return results.astype(int)

ratios here sum up to 1, and k is the total number of seats

Paradoxes

Alabama Paradox

At first we have only 7 positions to allocate: $S = 7$

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 20 | 1.373 | 1 | 2 || $P_2$ | 34 | 2.333 | 2 | 2 || $P_3$ | 48 | 3.294 | 3 | 3 || $\sum$ | 102 | | 6 | 7 | | But suddenly we have an additional seat: $S = 8$

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 20 | 1.569 | 1 | ${\color{red}{\fbox{1}}}$ || $P_2$ | 34 | 2.667 | 2 | 3 || $P_3$ | 48 | 3.765 | 3 | 4 || $\sum$ | 102 | | 6 | 7 | | $P_1$ loses one seat| |- no Monotonicity| |- even with one additional vote $P_1$ cannot regain the seat| | | | | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 21 | 1.631 | 1 | 1 || $P_2$ | 34 | 2.641 | 2 | 3 || $P_3$ | 48 | 3.728 | 3 | 4 || $\sum$ | 103 | | 6 | 7 | | This is called the ‘‘Alabama paradox’’: increasing in the number of seats causes a party to lose a sit

Population Paradox

$S=20$

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 1786 | 9.654 | 9 | 10 || $P_2$ | 1246 | 6.719 | 6 | 7 || $P_3$ | 671 | 3.627 | 3 | 3 || $\sum$ | 3700 | | 18 | 20 | | But assume that we have forgotten about additional 65 votes:

  • 19 votes for $P_1$
  • 40 votes for $P_2$
  • and only 6 votes for $P_3$
  $p_i$ $q_i$ $\lfloor q_i \rfloor$ $s_i$ $P_1$ 1805 9.588 9 ’'’9’’’   $P_2$ 1283 6.815 6 7   $P_3$ 677 3.596 3 ’'’4’’’   $\sum$ 3700   18 20   Even though $P_1$ was winning and received more additional votes than $P_3$, $P_3$ takes one seat from $P_1$

So the outcome is not robust and it is possible to manipulate the result.

Population Transfer Paradox

Shows that Independence to Third Alternatives is not satisfies

$S = 5$

| | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | $s_i$ | $P_1$ | 14 | 2.593 | 2 | 3 || $P_2$ | 10 | 1.667 | 1 | 2 || $P_3$ | 3 | 0.556 | 0 | 0 || $\sum$ | 27 | | 3 | 5 | | Suppose $P_2$ lost one vote, and $P_3$ received this vote:

  • That has an impact on $P_1$| | || | $p_i$ | $q_i$ | $\lfloor q_i \rfloor$ | s_i | $P_1$ | 14 | 2.593 | 2 | ‘'’2’’’ || $P_2$ | 9 | 1.667 | 1 | 2 || $P_3$ | 3 | 0.741 | 0 | 1 || $\sum$ | 27 | | 3 | 5 | | $P_1$ loses one seat, even though its position remained unchanged
  • http://wiki.electorama.com/wiki/Hamilton_method
  • http://wiki.electorama.com/wiki/Largest_remainder_method + the Hare Quote
  • http://wiki.electorama.com/wiki/Alabama_paradox
  • Alabama and Population Paradoxes http://en.wikipedia.org/wiki/Apportionment_paradox

See also

Sources