In the upper apportionment, the seats for each party are computed with a highest averages method. This determines how many of all seats each party deserves due to the total of all their votes (that is the sum of the votes for all regional lists of that party). Analogical, the same highest averages method is used to determine how many of all seats each region deserves.

upper_apportionment(
  votes_matrix,
  district_seats,
  use_list_votes = TRUE,
  method = "round"
)

Arguments

votes_matrix

Vote count matrix with votes by party in rows and votes by district in columns

district_seats

Vector defining the number of seats per district. Must be the same length as ncol(votes_matrix). Values are name-matched to votes_matrix if both are named. If the number of seats per district should be assigned according to the number of votes (not the general use case), a single number for the total number of seats can be used.

use_list_votes

By default (TRUE) it's assumed that each voter in a district has as many votes as there are seats in a district. Thus, votes are weighted according to the number of available district seats with weight_list_votes(). Set to FALSE if votes_matrix shows the number of voters (e.g. they can only cast one vote for one party).

method

Apportion method that defines how seats are assigned, see proporz(). Default is the Saintë-Lague/Webster method.

Value

A named list with district seats (for votes_matrix columns) and party seats (for rows).

Note

The results from the upper apportionment are final results for the number of the seats of one party (and analogically for the number of the seats of one region) within the whole voting area, the lower apportionment will only determine where (which regions) the party seats are allocated. Thus, after the upper apportionment is done, the final strength of a party/region within the parliament is definite.

Examples

votes_matrix = matrix(c(123,912,312,45,714,255,815,414,215), nrow = 3)
district_seats = c(7,5,8)

upper_apportionment(votes_matrix, district_seats)
#> $district
#> [1] 7 5 8
#> 
#> $party
#> [1]  5 11  4
#>