Tutorial 7: Introduction to compensatory systems¶
In this tutorial we will learn how to define compensatory systems, used to level seats according to a second criterion.
Scotland - Scottish Parliament (Highlands and Islands)¶
A voter must cast two ballots:
First vote: an individual candidate will be chosen for a one-seat constituency, like in UK - General election (Caerfyrddin), winners will be elected by
first-past-the-post.Second vote: in order to improve the proportionality at a party level, a second part vote is performed for a region, comprised by several constituencies. The seats will be allocated using the
highest averagesmethod withd'Hondt divisors, resuming the already allocate seats.
We will use only the Highlands and Islands region: 8 constituencies and 7 additional members.
Define the constituencies (first vote). Independent candidates can only win 1 seat.
1name: Scottish Parliament - 2011 2type: group 3method: first_past_the_post 4divisions: 5 6- name: Highlands and Islands 7 type: group 8 divisions: 9 - name: mp_highlands_islands 10 type: group 11 divisions: 12 - name: Argyll & Bute 13 candidates: 14 - {alliance: SNP, name: Michael William Russell, votes: 13390} 15 - {alliance: Conservative, name: Jamie McGrigor, votes: 4847} 16 - {alliance: Labour, name: Mick Rice, votes: 4041} 17 - {alliance: Liberal Democrat, name: Alison Hay, votes: 3220} 18 # independent 19 - {max_seats: 1, name: George Doyle, votes: 542} 20 - {alliance: Liberal Party (The), name: George Alexander White, votes: 436} 21 - name: Caithness, Sutherland & Ross 22 - name: Inverness & Nairn 23 - name: Moray 24 - name: Na h-Eileanan an Iar 25 - name: Orkney Islands 26 - name: Shetland Islands 27 - name: Skye, Lochaber & Badenoch
Add a compensatory district for the Highlands and Islands region:
1name: Scottish Parliament - 2011 2type: group 3method: first_past_the_post 4divisions: 5 6- name: Highlands and Islands 7 type: group 8 divisions: 9 # regional additional member district 10 - name: am_highlands_islands 11 type: compensatory 12 mode: additional_member 13 seats: 7 14 method: highest_averages 15 method_params: 16 divisor_f: dhondt 17 first_vote: "alliance[mp_highlands_islands:-1]" 18 skip_initial_seats: yes 19 candidates: 20 - {name: SNP, votes: 85082} 21 - {name: Labour, votes: 25884} 22 - {name: Conservative, votes: 20843} 23 - {name: Liberal Democrat, votes: 21729} 24 - {name: Green, votes: 9076} 25 - {name: Scottish Christian Party, votes: 3541} 26 - {name: UK Independence Party, votes: 3372} 27 - {name: All Scotland Pensioners Party, votes: 2770} 28 - {name: Ban Bankers Bonuses, votes: 1764} 29 - {name: Liberal Party (The), votes: 1696} 30 - {name: Socialist Labour Party, votes: 1406} 31 - {name: British National Party, votes: 1134} 32 - {name: Scottish Socialist Party, votes: 509} 33 - {name: Solidarity, votes: 204} 34 # one-seat constituencies 35 - name: mp_highlands_islands 36 type: group 37 divisions: 38 - name: Argyll & Bute 39 - name: Caithness, Sutherland & Ross 40 - name: Inverness & Nairn 41 - name: Moray 42 - name: Na h-Eileanan an Iar 43 - name: Orkney Islands 44 - name: Shetland Islands 45 - name: Skye, Lochaber & Badenoch
The
addtional_memberadapter will resume a previous allocation using a different method. Settingskip_initial_seatsto true, only the new allocated seats will be included in the node result.The first vote is taken from leaf nodes from
mp_highlands_islands, and transformed to taken the alliance as identifier.
New Zealand - General Elections¶
The system is really similar to the Scotland’s one, but there are some differences:
There is only one compensatory district for all the country.
The compensatory district will not resume the previous allocation. A big number of seats are assigned so that the disproportionality will be absorbed. The seats won by constituencies will be subtracted from the result.
For a party to participate in the compensatory allocation, it must reach a 5% of the formal votes. That won’t apply to parties that won at least 1 constituency.
1name: New Zealand General Elections - 2014
2method: first_past_the_post
3type: group
4divisions:
5# mixed member district
6- name: compensatory district
7 type: compensatory
8 mode: mixed member
9 method: highest_averages
10 method_params:
11 divisor_f: sainte_lague
12 seats: 120
13 exclude: votes < 5%
14 include: electorate vote.alliance_seats >= 1 => alliance
15 first_vote: alliance[electorate vote:-1]
16 skip_initial_seats: yes
17 candidates:
18 ...
19# constituencies
20- name: electorate vote
21 type: group
22 aggregate: true
23 divisions:
24 ...
The mixed_member adapter allocates again using the second vote, and it subtract the seats won by the first allocation.
Well… as you can see, this is escalating. Take some rest and bring a fresh change of clothes, because we are travelling to Northern Europe, home to complex compensatory systems. Things could happen…