allocate_seats {nzelect} | R Documentation |
Allocate seats after election
Description
Allocates seats in Parliament after an election using the Sainte-Lague allocation formula
Usage
allocate_seats(votes, parties = names(votes), nseats = 120,
threshold = 0.05, electorate = rep(0, length(votes)))
Arguments
votes |
vector of vote proportions or counts. |
parties |
vector of names of parties. |
nseats |
number of seats to allocate. Note that in mixed systems such as New Zealand's
where |
threshold |
minimum proportion of votes needed to be allocated a seat. |
electorate |
a numeric vector of same length as parties, for use in mixed-member
proportional systems such as New Zealand's. If the ith |
Value
A list with two elements: a data frame seats_df
and a vector
seats_v
, each of which provides information on the number of seats
allocated to each party.
The data frame has four columns: proportionally_allocated
,
electorate_seats
, final
and party
. In New Zealand, the number of
"list MPs" for each party is final - electorate_seats
.
The vector is the same as final
in the data frame, with names equal to party
.
Author(s)
Peter Ellis
References
http://www.elections.org.nz/voting-system/mmp-voting-system/sainte-lague-allocation-formula
See also Wikipedia on the Webster/Sainte-Lague method.
Examples
# From Wikipedia; should return 3, 2, 2:
allocate_seats(c(53000, 24000, 23000), nseats = 7, threshold = 0)
# From 2014 New Zealand election
votes <- c(National = 1131501, Labour = 604535, Green = 257359,
NZFirst = 208300, Cons = 95598, IntMana = 34094,
Maori = 31849, Act = 16689, United = 5286,
Other = 20411)
electorate = c(41, 27, 0,
0, 0, 0,
1, 1, 1,
0)
# Actual result:
allocate_seats(votes, electorate = electorate)
# Result if there were no 5% minimum threshold:
allocate_seats(votes, electorate = electorate, threshold = 0)$seats_v