last changed 09/28/2026
Belgiun has eleven Constituencies which each run an independent election. Each election has a single contest, in which the voter chooses one party. There is a common set of parties across the country, and the set of parties running in each constituency is a subset. Each constituency is allocated some number of seats using d’Hondt proportional allocation, and the election decides how many seats are awarded to each party.
Within each constituency, each party is reported to have gotten nvotes(party). A party must get a minimum number of votes (5%) for it to be awarded any seats, called the threshold. For each party, nvotes(party) is divided by a divisor that are consecutive integers, denoted party/1, party/2, party/3 … These are called scores or candidates. The seats are awarded to the highest scores, and once a candidate has been awarded a seat, the next divisor is used for that party.
We will use the Belgium 2024 election as our example thoughout. Here are the winning seats for Anvers, plus the next 6 non-winning scores:
DhondtContest 'Anvers' winning seats
seat party/divisor, nvotes, score,
( 1) N-VA/1 , 368877, 368877,
( 2) VLAAMS BELANG/1 , 249826, 249826,
( 3) N-VA/2 , 368877, 184438,
( 4) Vooruit/1 , 127973, 127973,
( 5) CD&V/1 , 125894, 125894,
( 6) PVDA/1 , 125257, 125257,
( 7) VLAAMS BELANG/2 , 249826, 124913,
( 8) N-VA/3 , 368877, 122959,
( 9) N-VA/4 , 368877, 92219,
(10) GROEN/1 , 90370, 90370,
(11) VLAAMS BELANG/3 , 249826, 83275,
(12) N-VA/5 , 368877, 73775,
(13) open vld/1 , 70890, 70890,
(14) Vooruit/2 , 127973, 63986,
(15) CD&V/2 , 125894, 62947,
(16) PVDA/2 , 125257, 62628,
(17) VLAAMS BELANG/4 , 249826, 62456,
(18) N-VA/6 , 368877, 61479,
(19) N-VA/7 , 368877, 52696,
(20) VLAAMS BELANG/5 , 249826, 49965,
(21) N-VA/8 , 368877, 46109,
(22) GROEN/2 , 90370, 45185,
(23) Vooruit/3 , 127973, 42657,
(24) CD&V/3 , 125894, 41964,
PVDA/3 , 125257, 41752,
VLAAMS BELANG/6 , 249826, 41637,
N-VA/9 , 368877, 40986,
N-VA/10 , 368877, 36887,
VLAAMS BELANG/7 , 249826, 35689,
open vld/2 , 70890, 35445,
Another way to summarize the results:
party Round: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2 BELG.UNIE-BUB*: 1686 | 843 | 562 | 421 | 337 | 281 | 240 | 210 | 187 |
4 CD&V : 125894 (5) | 62947 (15) | 41964 (24) | 31473 | 25178 | 20982 | 17984 | 15736 | 13988 |
7 DierAnimal*: 10341 | 5170 | 3447 | 2585 | 2068 | 1723 | 1477 | 1292 | 1149 |
10 GROEN : 90370 (10) | 45185 (22) | 30123 | 22592 | 18074 | 15061 | 12910 | 11296 | 10041 |
15 N-VA : 368877 (1) | 184438 (3) | 122959 (8) | 92219 (9) | 73775 (12) | 61479 (18) | 52696 (19) | 46109 (21) | 40986 |
19 PVDA : 125257 (6) | 62628 (16) | 41752 | 31314 | 25051 | 20876 | 17893 | 15657 | 13917 |
21 Partij BLANCO*: 7221 | 3610 | 2407 | 1805 | 1444 | 1203 | 1031 | 902 | 802 |
24 VLAAMS BELANG : 249826 (2) | 124913 (7) | 83275 (11) | 62456 (17) | 49965 (20) | 41637 | 35689 | 31228 | 27758 |
25 Volt Europa*: 4213 | 2106 | 1404 | 1053 | 842 | 702 | 601 | 526 | 468 |
26 Voor U*: 8639 | 4319 | 2879 | 2159 | 1727 | 1439 | 1234 | 1079 | 959 |
28 Vooruit : 127973 (4) | 63986 (14) | 42657 (23) | 31993 | 25594 | 21328 | 18281 | 15996 | 14219 |
30 open vld : 70890 (13) | 35445 | 23630 | 17722 | 14178 | 11815 | 10127 | 8861 | 7876 |
* failed threshold
To fit the d’Hondt into the SHANGRLA framework, we create a set of assertions which proves the reported results within a given risk limit. We have three kinds of assertions:
DH assertion tests that a winning candidate’s score is higher than a losing candidate’s score. It suffices to create a DH assertion between each party’s lowest winning score and every other party’s highest losing score.
Below Threshold assertion is generated for every party with less than the threshold number of votes.
Above Threshold assertion is generated for every party with more than the threshold number of votes.
Each assertion has a margin and an upper bound that depend on the winning and losing totalVotes and the divisor of the winning and losing candidate. For DH assertions this is:
val lw = loserDivisor/winnerDivisor
val margin = (winnerTotalVotes * lw - loserTotalVotes)/Nc
val upper = (lw + 1)/2
Because DH assorters’ upper bounds vary widely, we look for the assorter with the smallest noerror term instead of margin:
val noerror = 1.0 / (2.0 - margin / upper) // clca assort value when no error
This is because for CLCA audits, the test statistic T depends on margin / upper, not just margin.
If we approximate µ_i = .5 and use a constant bet of λc, then the payoff when there is no error
val payoff ~= (1 + λc (noerror − .5)
After n noerror samples:
val T_n = (1 + λc (noerror − .5))^n
From which we approximate n as
val estSampleSize =~ ln(1/alpha) / ln(payoff)
The dependence on the winning and losing candidate divisors means that an assertion’s estSampleSize isnt a simple function of the difference in scores.
It suffices to create a DH assertion between each party’s lowest winning score and every other party’s highest losing score.
We can expand noerror as
val lw = loserDivisor/winnerDivisor
val noerror = (lw + 1)/2 / ((lw + 1) - (winnerTotalVotes * lw - loserTotalVotes)/Nc)
1 / mo
Consider the DH assertion Dh(winParty/dw, loseParty/dl)
fun g(partyVote: Int): Double {
return if (partyVote == winner) 1.0 / winnerDivisor
else if (partyVote == loser) -1.0 / loserDivisor
else 0.0
}
// h transforms from [-1.0 / loserDivisor, 1.0 / winnerDivisor] to [0, upper]
fun h(partyVote: Int): Double {
return c * g(partyVote) + 0.5
}
val upperg = 1.0 / winnerDivisor // upper bound of g = 1/d(WA) = 1/lastSeatWon (highest loser) val lowerg = -1.0 / loserDivisor // lower bound of g = -1/d(WB) = -1/firstSeatLost (lowest winner)
Candidate A “blocks” Candidate B if A loses => B loses. For example, for candidates in the same party, P/d1 blocks P/d2 if d1 < d2.
TODO
If a constituency limits the number of ballots to less than is needed to prove all assertions, then some of the assertions will fail to reach the risk limit.
Failed assertions divide the seats into 3 groups.
Yellow seats: Seats that have a failing assertion.
Green seats: Seats above the yellow are definite winners. Each is either blocked by a seat of the same party below it, or if it is the lowest winning candidate, has a non-failing assertion for every other candidate, which confirms its winning status.
Red seats: Seats below the yellow are definite losers. Each is either blocked by a seat of the same party above it, or if it is the highest losing candidate, has a non-failing assertion for every other candidate, which confirms its losing status.
Switching to FlandresEast as the example constituency, which has a single failing assertion. This needs 3567 samples to prove it, but we only have 800, and the risk limit is 0.51, instead of the target 0.05 :
Failures
name, winningSeat, noerror, estMvrs, samplesUsed, risk
Vooruit/3-CD&V/3, 20, 0.5004, 3567, 800, 0.5112,
winning seats
seat winner-round nvotes, score, scoreDiff, maxRisk, maxAssertion
( 1) VLAAMS BELANG/1 , 234888, 234888, , 0.000,
( 2) N-VA/1 , 231470, 231470, 3418, 0.000,
( 3) Vooruit/1 , 127758, 127758, 103712, 0.000,
( 4) CD&V/1 , 125871, 125871, 1887, 0.000,
( 5) open vld/1 , 119200, 119200, 6671, 0.000,
( 6) VLAAMS BELANG/2 , 234888, 117444, 1756, 0.000,
( 7) N-VA/2 , 231470, 115735, 1709, 0.000,
( 8) GROEN/1 , 103722, 103722, 12013, 0.000,
( 9) VLAAMS BELANG/3 , 234888, 78296, 25426, 0.000,
(10) N-VA/3 , 231470, 77156, 1140, 0.000,
(11) PVDA/1 , 75942, 75942, 1214, 0.000,
(12) Vooruit/2 , 127758, 63879, 12063, 0.000,
(13) CD&V/2 , 125871, 62935, 944, 0.000,
(14) open vld/2 , 119200, 59600, 3335, 0.000,
(15) VLAAMS BELANG/4 , 234888, 58722, 878, 0.000,
(16) N-VA/4 , 231470, 57867, 855, 0.000,
(17) GROEN/2 , 103722, 51861, 6006, 0.000,
(18) VLAAMS BELANG/5 , 234888, 46977, 4884, 0.001,
(19) N-VA/5 , 231470, 46294, 683, 0.003,
**(20) Vooruit/3 , 127758, 42586, 3708, 0.511, Vooruit/3-CD&V/3 **
** CD&V/3 , 125871, 41957, 629, 0.511, Vooruit/3-CD&V/3 **
open vld/3 , 119200, 39733, 2224, 0.047,
VLAAMS BELANG/6 , 234888, 39148, 585, 0.007,
N-VA/6 , 231470, 38578, 570, 0.003,
PVDA/2 , 75942, 37971, 607, 0.019,
GROEN/3 , 103722, 34574, 3397, 0.000,
The two scores demarked by ** are “in play”; the one above are green, and the ones below are red, which we can visualize as:
FlandreWest winning seats: 24=5, 15=5, 28=3, 4=2, 30=2, 10=2, 19=1
| Vlaams | N-VA | Vooruit | CD&V | openVld | Groen | PVDA | |
|---|---|---|---|---|---|---|---|
| 1 | G | G | G | G | G | G | G |
| 2 | G | G | G | G | G | G | |
| 3 | G | G | Y | ||||
| 4 | G | G | |||||
| 5 | G | G | |||||
| 1 | |||||||
| 2 | R | ||||||
| 3 | Y | R | R | R | |||
| 4 | R | R | R | R | R | ||
| 5 | R | R | R | R | R | ||
| 6 | R | R | R | R | R | R | R |
| 7 | R | R | R | R | R | R | R |
When some assertions fail, we can calculate for each party the possible range of seats that might be awarded.
For the seats that are in play, form the “reported yellow set” as the set of winning candidates in the yellow seats. This set has n unique candidates when there are n yellow seats.
The number of seats that a party might lose is bounded by the number of candidates it has in the reported yellow set.
For each failed assertion, add the losing candidate to the “hopeful candidate” set. This set has k unique candidates when there are k failed assertions.
The number of seats that a party might gain is bounded by the number of candidates it has in the hopeful candidate set.
These are conservative estimates, further work may be able to tighten these bounds. For example, it may be possible to prove that a winning candidate in the yellow seats must still win a seat at a lower rank.
If a party gets fewer votes than the threshold, its candidates are removed from the competition for seats. A BT (Below Threshold) assertion is added to verify this within the risk limit.
If the BT assertion does not have enough samples to verify, we generate an “alternate contest” in which the party’s candidates compete for seats anyway. This create an alternative seat assignment. This widens the possible seat assignments, called the “Party Seat Ranges”.
When there are multiple BT assertion failures, generate the 2^n combinations, generate an alternate contest for each combination, and feed each alternative seat assignment into the Party Seat Range algorithm.
TODO. same as BT?
When there are both DH and Threshold failures, simply merge the seat ranges.
//////////////////
Let Candidate(p, d) be the dth candidate of Party p An assertion DH_A,B(w, l) tests Candidate(A, w) as winner against Candidate(B, l) as loser.
Initialize
uncertainWinnerSet = Set<Candidate>
uncertainLoserSet = Set<Candidate>
Create orgAssertions = assertions for the apparent outcome, as in Proposition 1.
Find unacceptable assertions and create orgFailures = findFailures(orgAssertions)
If there are no failures, then you are done.
failures = orgFailures
assertionsIn = orgAssertions
assertionsOut = emptyList<Assertion>
done = false
// Generate relaxed assertions, put them in assertionsOut
while (!done) {
newAssertions = step4(assertionsIn, assertionsOut, failures)
if (newAssertions.isEmpty)
done = true
else
failures = findFailures(newAssertions)
if (failures.isEmpty)
done = true
else
assertionsIn = newAssertions}
}
// Create Party Ranges
// Initialize PartyRange(min, reported, max) for each party in the contest
partyRanges = Map<Int, PartyRange>
// The number of seats that a party might lose is bounded by the number of unique candidates it has in the uncertainWinnerSet.
uncertainWinnerSet.forEach { candidate ->
val partyRange: PartyRange = partyMap[candidate.partyId]!!
partyRange.minSeats--
}
// The number of seats that a party might gain is bounded by the number of unique candidates it has in the uncertainLoserSet.
uncertainLoserSet.forEach { candidate ->
val partyRange: PartyRange = partyMap[candidate.partyId]!!
partyRange.maxSeats++
}
// RETURN relaxed assertions and corresponding bounds return assertionsOut, partyRanges
fun step4(assertionsIn: List<Assertion>, assertionsOut: List<Assertion>, failures: List<Assertion>) {
assertionsNew = emptyList<Assertion>
foreach assertion in assertionsIn:
if (!failures.contain(assertion))
assertionsOut.add(assertion)
else
winner = assertion.winnerCandidate
loser = assertion.loserCandidate
// If w > 1, add DH_A,B (w − 1, l) to the assertion set
if (winner.divisor > 1) assertionsNew.add( DH_A,B (w − 1, l))
// If l < |B| add DHA,B (w, l + 1)
if (loser.divisor < loser.party.macCandidates) assertionsNew.add( DH_A,B (w, l + 1))
uncertainWinnerSet.add(winner)
uncertainLoserSet.add(loser)
return assertionsNew }
For all unacceptable DH assertions failedAssertion = DHA,B (w, l)
a) Remove DHA,B (w, l) from the assertion set, b) If w > 1, add DH_A,B (w − 1, l) to the assertion set, c) If l < |B| (i.e. if B has any other losers), add DHA,B (w, l + 1) to the assertion set, d) add failedAssertion.winner to uncertainWinnerSet, and failedAssertion.loser to uncertainLoserSet
If new assertions are generated, run step4
//////////////////////
( 1) MR/1 , 179296, 179296, , 0.000,
( 2) PS/1 , 137443, 137443, 41853, 0.000,
( 3) LES ENGAGÉS/1 , 103711, 103711, 33732, 0.000,
( 4) PTB/1 , 91188, 91188, 12523, 0.000,
( 5) MR/2 , 179296, 89648, 1540, 0.000,
( 6) PS/2 , 137443, 68721, 20927, 0.000,
( 7) MR/3 , 179296, 59765, 8956, 0.000,
( 8) LES ENGAGÉS/2 , 103711, 51855, 7910, 0.000,
( 9) ECOLO/1 , 49936, 49936, 1919, 0.000,
(10) PS/3 , 137443, 45814, 4122, 0.000,
(11) PTB/2 , 91188, 45594, 220, 0.000,
(12) MR/4 , 179296, 44824, 770, 0.000,
(13) MR/5 , 179296, 35859, 8965, 0.050,
(14) LES ENGAGÉS/3 , 103711, 34570, 1289, 0.724, LES ENGAGÉS/3-PS/4
PS/4 , 137443, 34360, 210, 0.724, LES ENGAGÉS/3-PS/4
PTB/3 , 91188, 30396, 3964, 0.004,
MR/6 , 179296, 29882, 514, 0.000,
PS/5 , 137443, 27488, 2394, 0.000,
LES ENGAGÉS/4 , 103711, 25927, 1561, 0.000,
MR/7 , 179296, 25613, 314, 0.000,
0 MR #14 5 seats 1 PS #16 3–4 seats 2 LES ENGAGÉS #12 2–3 seats 3 PTB #19 2 seats 4 N-VA #15 0 seats 5 DéFI #8 0 seats 6 ECOLO #9 1 seat 7 COLLECTIF CITOYEN #6 0 seats 8 BELG.UNIE-BUB #2 0 seats 9 BLANCO #21 0 seats 10 CHEZ NOUS #5 0 seats 11 RMC #22 0 seats
party 14 quotient 5 = MR/5
may rank as low as 15th
own 5 = MR/5 row 13 #16 ≤ 4 = PS/4 row 15 #12 ≤ 3 = LES ENGAGÉS/3 o row 14 #19 ≤ 2 = PTB/2 row 11 #8 ≤ 0 = DéFI/0 ?? #9 ≤ 1 = BLANCO ?? #5 ≤ 0 = CHEZ NOUS ??
|seat| MR | PS | LES ENGA | PTB | ECOLO | N-VA | DéFI | COLLECTI | BELG.UNI | BLANCO | CHEZ NOU | RMC |
|----|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|
| 1 | G | G | G | G | G | | | | | | | |
| 2 | G | G | G | G | | | | | | | | |
| 3 | G | G | Y[1] | | | | | | | | | |
| 4 | G | | | | | | | | | | | |
| 5 | G | | | | | | | | | | | |
| 6 | | | | | | | | | | | | |
| 1 | | | | | | R | R | R | R | R | R | R |
| 2 | | | | | R | R | R | R | R | R | R | R |
| 3 | | | | R | R | R | R | R | R | R | R | R |
| 4 | | Y[1] | R | R | R | R | R | R | R | R | R | R |
| 5 | | R | R | R | R | R | R | R | R | R | R | R |
| 6 | R | R | R | R | R | R | R | R | R | R | R | R |
| 7 | R | R | R | R | R | R | R | R | R | R | R | R |
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | field | value | description | | ———- | ——————– | ————————————————— | | id | 6 | contest identifier | | name | Liège | contest name | | npop | 685695 | Npop size (for diluted margin) | | voteMargin | 210 | (winner-loser) votes (smallest assertion) | | margin | 0.001222603830177249 | voteMargin / population size (smallest assertion) | | payoff | 1.000505 | payoff factor for each mvr that agrees with the cvr | | estMvrs | 5914 | estimated number of mvrs needed | | haveMvrs | 640 | number of mvrs that were sampled for this contest | | mvrsExtra | 0 | (haveMvrs-estMvrs) | | mvrLimit | 640 | limit on number of mvrs to audit; set by auditor | | estRisk | 0.723989429460763 | estimated risk | | fail | 1 | number of contested assertions | | NCand | 12 | number of candidates | | nseats | 14 | nseats to win |
DhondtContest ‘Liège’ (6) DHONDT voteForN=1 votes={14=179296, 16=137443, 12=103711, 19=91188, 9=49936, 5=21877, 8=13816, 15=10840, 21=10656, 6=8289, 22=3361, 2=1502} undervotes=53780, winners=[14, 16, 12, 19, 9] Nc=685695 Nphantoms=0 Nu=53780 sumVotes=631915 nseats=14 winnerSeats={14=5, 16=3, 12=3, 19=2, 15=0, 8=0, 9=1, 6=0, 2=0, 21=0, 5=0, 22=0} belowMin=[15, 8, 6, 2, 21, 5, 22] threshold=0.05 minVotes=31596 Npop=685695 hasStyle=true minAssertion= fw=34570.3 fl=34360.8 fw-fl=210 dilutedMargin=0.001223 noerror=0.5003
| party Round: 1 | 2 | 3 | 4 | 5 | 6 |
| 2 BELG.UNIE-BUB*: 1502 | 751 | 500 | 375 | 300 | 250 |
| 21 BLANCO*: 10656 | 5328 | 3552 | 2664 | 2131 | 1776 |
| 5 CHEZ NOUS*: 21877 | 10938 | 7292 | 5469 | 4375 | 3646 |
| 6 COLLECTIF CITOYEN*: 8289 | 4144 | 2763 | 2072 | 1657 | 1381 |
| 8 DéFI*: 13816 | 6908 | 4605 | 3454 | 2763 | 2302 |
| 9 ECOLO : 49936 (9) | 24968 | 16645 | 12484 | 9987 | 8322 |
| 12 LES ENGAGÉS : 103711 (3) | 51855 (8) | 34570 (14) | 25927 | 20742 | 17285 |
| 14 MR : 179296 (1) | 89648 (5) | 59765 (7) | 44824 (12) | 35859 (13) | 29882 |
| 15 N-VA*: 10840 | 5420 | 3613 | 2710 | 2168 | 1806 |
| 16 PS : 137443 (2) | 68721 (6) | 45814 (10) | 34360 | 27488 | 22907 |
| 19 PTB : 91188 (4) | 45594 (11) | 30396 | 22797 | 18237 | 15198 |
| 22 RMC*: 3361 | 1680 | 1120 | 840 | 672 | 560 |
Relaxed Assertions (experimental)—————————————— Original Seat Ordering seat winner-round nvotes, score, scoreDiff, maxRisk, maxAssertion ( 1) MR/1 , 179296, 179296, , 0.000, ( 2) PS/1 , 137443, 137443, 41853, 0.000, ( 3) LES ENGAGÉS/1 , 103711, 103711, 33732, 0.000, ( 4) PTB/1 , 91188, 91188, 12523, 0.000, ( 5) MR/2 , 179296, 89648, 1540, 0.000, ( 6) PS/2 , 137443, 68721, 20927, 0.000, ( 7) MR/3 , 179296, 59765, 8956, 0.000, ( 8) LES ENGAGÉS/2 , 103711, 51855, 7910, 0.000, ( 9) ECOLO/1 , 49936, 49936, 1919, 0.000, (10) PS/3 , 137443, 45814, 4122, 0.000, (11) PTB/2 , 91188, 45594, 220, 0.000, (12) MR/4 , 179296, 44824, 770, 0.000, (13) MR/5 , 179296, 35859, 8965, 0.050, (14) LES ENGAGÉS/3 , 103711, 34570, 1289, 0.724, LES ENGAGÉS/3-PS/4 PS/4 , 137443, 34360, 210, 0.724, LES ENGAGÉS/3-PS/4 PTB/3 , 91188, 30396, 3964, 0.004, MR/6 , 179296, 29882, 514, 0.000, PS/5 , 137443, 27488, 2394, 0.000, LES ENGAGÉS/4 , 103711, 25927, 1561, 0.000, MR/7 , 179296, 25613, 314, 0.000,
Failures name, winningSeat, noerror, estMvrs, samplesUsed, risk LES ENGAGÉS/3-PS/4, 14, 0.5003, 5914, 640, 0.7240, 5914,
Table 5 yellowWinners: [(LES ENGAGÉS/3, 1)] yellowLosers: [(PS/4, 1)] Liège: {14=5, 16=3, 12=3, 19=2, 9=1, 15=0, 8=0, 6=0, 2=0, 21=0, 5=0, 22=0}
| seat | MR | PS | LES ENGA | PTB | ECOLO | N-VA | DéFI | COLLECTI | BELG.UNI | BLANCO | CHEZ NOU | RMC |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | G | G | G | G | G | |||||||
| 2 | G | G | G | G | ||||||||
| 3 | G | G | Y[1] | |||||||||
| 4 | G | |||||||||||
| 5 | G | |||||||||||
| 6 | ||||||||||||
| 1 | R | R | R | R | R | R | R | |||||
| 2 | R | R | R | R | R | R | R | R | ||||
| 3 | R | R | R | R | R | R | R | R | R | |||
| 4 | Y[1] | R | R | R | R | R | R | R | R | R | R | |
| 5 | R | R | R | R | R | R | R | R | R | R | R | |
| 6 | R | R | R | R | R | R | R | R | R | R | R | R |
| 7 | R | R | R | R | R | R | R | R | R | R | R | R |
Party Seat Ranges (Liège) ContestId=6 | party | min | reported | max | |—————————|—–|———-|—–| | MR (14) | 5 | 5 | 5 | | PS (16) | 3 | 3 | 4 | | LES ENGAGÉS (12) | 2 | 3 | 3 | | PTB (19) | 2 | 2 | 2 | | ECOLO ( 9) | 1 | 1 | 1 | | N-VA (15) | 0 | 0 | 0 | | DéFI ( 8) | 0 | 0 | 0 | | COLLECTIF CITOYEN ( 6) | 0 | 0 | 0 | | BELG.UNIE-BUB ( 2) | 0 | 0 | 0 | | BLANCO (21) | 0 | 0 | 0 | | CHEZ NOUS ( 5) | 0 | 0 | 0 | | RMC (22) | 0 | 0 | 0 |
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
‘Anvers’ (1) DHONDT voteForN=1 votes={15=368877, 24=249826, 28=127973, 4=125894, 19=125257, 10=90370, 30=70890, 7=10341, 26=8639, 21=7221, 25=4213, 2=1686} undervotes=44400, winners=[24, 30, 19, 28, 15, 10, 4] Nc=1235587 Nphantoms=0 Nu=44400 sumVotes=1191187 nseats=24 winnerSeats={24=5, 30=1, 25=0, 19=2, 28=3, 15=8, 10=2, 4=3, 26=0, 7=0, 21=0, 2=0} belowMin=[25, 26, 7, 21, 2] threshold=0.05 minVotes=59560 Relaxed Assertion Report (experimental)————————————- Original Seat Ordering seat winner-round nvotes, score, scoreDiff, maxRisk, maxAssertion ( 1) N-VA/1 , 368877, 368877, , 0.000, ( 2) VLAAMS BELANG/1 , 249826, 249826, 119051, 0.000, ( 3) N-VA/2 , 368877, 184438, 65388, 0.000, ( 4) Vooruit/1 , 127973, 127973, 56465, 0.000, ( 5) CD&V/1 , 125894, 125894, 2079, 0.000, ( 6) PVDA/1 , 125257, 125257, 637, 0.000, ( 7) VLAAMS BELANG/2 , 249826, 124913, 344, 0.000, ( 8) N-VA/3 , 368877, 122959, 1954, 0.000, ( 9) N-VA/4 , 368877, 92219, 30740, 0.000, (10) GROEN/1 , 90370, 90370, 1849, 0.000, (11) VLAAMS BELANG/3 , 249826, 83275, 7095, 0.000, (12) N-VA/5 , 368877, 73775, 9500, 0.000, (13) open vld/1 , 70890, 70890, 2885, 0.000, (14) Vooruit/2 , 127973, 63986, 6904, 0.000, (15) CD&V/2 , 125894, 62947, 1039, 0.000, (16) PVDA/2 , 125257, 62628, 319, 0.000, (17) VLAAMS BELANG/4 , 249826, 62456, 172, 0.000, (18) N-VA/6 , 368877, 61479, 977, 0.000, (19) N-VA/7 , 368877, 52696, 8783, 0.000, (20) VLAAMS BELANG/5 , 249826, 49965, 2731, 0.000, (21) N-VA/8 , 368877, 46109, 3856, 0.000, (22) GROEN/2 , 90370, 45185, 924, 0.002, (23) Vooruit/3 , 127973, 42657, 2528, 0.136, Vooruit/3-PVDA/3 (24) CD&V/3 , 125894, 41964, 693, 0.626, CD&V/3-PVDA/3 PVDA/3 , 125257, 41752, 212, 0.626, CD&V/3-PVDA/3 VLAAMS BELANG/6 , 249826, 41637, 115, 0.383, CD&V/3-VLAAMS BELANG/6 N-VA/9 , 368877, 40986, 651, 0.039, N-VA/10 , 368877, 36887, 4099, 0.000, VLAAMS BELANG/7 , 249826, 35689, 1198, 0.000, open vld/2 , 70890, 35445, 244, 0.000,
Failures name, winningSeat, noerror, estMvrs, samplesUsed, risk CD&V/3-VLAAMS BELANG/6, 24, 0.5003, 5866, 1884, 0.3826, 5866, Vooruit/3-PVDA/3, 23, 0.5006, 2828, 1884, 0.1359, 2828, CD&V/3-PVDA/3, 24, 0.5001, 12016, 1884, 0.6264, 12016,
Table 5 yellowWinners: [(CD&V/3, 1), (Vooruit/3, 2), (CD&V/3, 3)] yellowLosers: [(VLAAMS BELANG/6, 1), (PVDA/3, 2), (PVDA/3, 3)] Anvers: {15=8, 24=5, 28=3, 4=3, 19=2, 10=2, 30=1, 25=0, 26=0, 7=0, 21=0, 2=0}
| seat | N-VA | VLAAMS B | Vooruit | CD&V | PVDA | GROEN | open vld | Volt Eur | Voor U | DierAnim | Partij B | BELG.UNI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | G | G | G | G | G | G | G | |||||
| 2 | G | G | G | G | G | G | ||||||
| 3 | G | G | Y[2] | Y[1, 3] | ||||||||
| 4 | G | G | ||||||||||
| 5 | G | G | ||||||||||
| 6 | G | |||||||||||
| 7 | G | |||||||||||
| 8 | G | |||||||||||
| 9 | ||||||||||||
| 1 | R | R | R | R | R | |||||||
| 2 | R | R | R | R | R | R | ||||||
| 3 | Y[2, 3] | R | R | R | R | R | R | R | ||||
| 4 | R | R | R | R | R | R | R | R | R | R | ||
| 5 | R | R | R | R | R | R | R | R | R | R | ||
| 6 | Y[1] | R | R | R | R | R | R | R | R | R | R | |
| 7 | R | R | R | R | R | R | R | R | R | R | R | |
| 8 | R | R | R | R | R | R | R | R | R | R | R | |
| 9 | R | R | R | R | R | R | R | R | R | R | R | R |
| 10 | R | R | R | R | R | R | R | R | R | R | R | R |
Party Seat Ranges (Anvers) ContestId=1 | party | min | reported | max | |—————————|—–|———-|—–| | N-VA (15) | 8 | 8 | 8 | | VLAAMS BELANG (24) | 5 | 5 | 6 | | PVDA (19) | 2 | 2 | 3 | | Vooruit (28) | 2 | 3 | 3 | | CD&V ( 4) | 2 | 3 | 3 | | GROEN (10) | 2 | 2 | 2 | | open vld (30) | 1 | 1 | 1 | | Volt Europa (25) | 0 | 0 | 0 | | Voor U (26) | 0 | 0 | 0 | | DierAnimal ( 7) | 0 | 0 | 0 | | Partij BLANCO (21) | 0 | 0 | 0 | | BELG.UNIE-BUB ( 2) | 0 | 0 | 0 |