Asi se nenajde nikdo, komu by se líbil výsledek letošních voleb, protože ať povolební vyjednávání dopadnou jakkoliv, bude to s největší pravděpodobností znamenat jenom zdržení na cestě, kterou Česká republika kráčí, ať už má vést kamkoliv. Zajímalo mě, jak se hlasy voličů přepočítávají na poslanecká křesla, což je poměrně přehledně popsáno na stránkách ČSÚ. Na serveru Volby.cz jsou potom k dispozici nejen souhrnné výsledky prezentované v médiích, ale i kompletní volební výsledky do posledního hlasu, na základě kterých se dá odpovědět na různé otázky co by, kdyby.
Algoritmizace d'Hondtovy metody s dosazením konkrétních čísel vypadá takto:
<?php $kraje = array("Praha", "Středočeský", "Jihočeský", "Plzeňský", "Karlovarský", "Ústecký", "Liberecký", "Královéhradecký", "Pardubický", "Vysočina", "Jihomoravský", "Olomoucký", "Zlínský", "Moravskoslezský"); $mandaty = array(25, 23, 13, 11, 5, 14, 8, 11, 10, 10, 23, 12, 12, 23); // celkový počet mandátů v jednotlivých krajích $hlasy = array( // počet hlasů v jednotlivých krajích "ODS" => array(317224, 243012, 123804, 105391, 49189, 130365, 83647, 111466, 91113, 76393, 186779, 101151, 101376, 171565), "ČSSD" => array(152962, 190607, 102833, 91606, 44887, 132895, 63181, 89204, 90268, 97568, 200619, 118334, 106481, 247382), "SZ" => array(60384, 37219, 19924, 17090, 9206, 22616, 20646, 19819, 17148, 13514, 37771, 18398, 16224, 26528), "KSČM" => array(51925, 79964, 45099, 40578, 20323, 60175, 24823, 34093, 33956, 40480, 83687, 49026, 35998, 85201), "KDU-ČSL" => array(31820, 30207, 27630, 16338, 4723, 8365, 9131, 19893, 24023, 33587, 67865, 27609, 41663, 43852), ); foreach ($kraje as $kraj => $kraj_text) { // postupně pro všechny kraje $podil = array(); for ($i=1; $i <= $mandaty[$kraj]; $i++) { // vypočte se podíl hlasů pro jednotlivé strany foreach ($hlasy as $strana => $val) { $podil["$strana:$i"] = $val[$kraj] / $i; } } arsort($podil); for ($i=1; $i <= $mandaty[$kraj]; $i++) { // křesla se přiřadí stranám podle hodnoty podílů $kresel[preg_replace('~:[0-9]+$~', '', key($podil))]++; next($podil); } } ?>
ODS | 81 |
---|---|
ČSSD | 74 |
KSČM | 26 |
KDU-ČSL | 13 |
SZ | 6 |
V první řadě mě zajímalo, jak by výsledky dopadly v případě, že by se mandáty nerozdělovaly po krajích, ale celorepublikově, což by poměrnému způsobu zastoupení odpovídalo podle mě lépe. V tom případě by poměrně přesvědčivě vyhrála pravice poměrem 104:96 křesel:
<?php $celkem = array( // řazeno podle čísla strany "ODS" => 1892475, "ČSSD" => 1728827, "SZ" => 336487, "KSČM" => 685328, "KDU-ČSL" => 386706, ); $podil = array(); foreach ($celkem as $strana => $hlasy) { for ($i=1; $i <= 200; $i++) { $podil["$strana:$i"] = $hlasy / $i; } } arsort($podil); $kresel = array(); for ($i=1; $i <= 200; $i++) { $kresel[preg_replace('~:[0-9]+$~', '', key($podil))]++; next($podil); } ?>
ODS | 76 | -5 |
---|---|---|
ČSSD | 69 | -5 |
KSČM | 27 | +1 |
KDU-ČSL | 15 | +2 |
SZ | 13 | +7 |
Co kdybychom měli jen jednu levicovou a jednu pravicovou stranu (přesněji řečeno jednu spolupracující s komunisty a druhou ne)? Opět poměrně přesvědčivý výsledek 105:95 ve prospěch pravice.
<?php $hlasy2 = array(); foreach ($kraje as $kraj => $kraj_text) { $hlasy2["pravice"][$kraj] = $hlasy["ODS"][$kraj] + $hlasy["SZ"][$kraj] + $hlasy["KDU-ČSL"][$kraj]; $hlasy2["levice"][$kraj] = $hlasy["ČSSD"][$kraj] + $hlasy["KSČM"][$kraj]; } ?>
Do tohoto výsledku by se navíc daly započítat i menší strany, což by pravici ještě posílilo.
Dále mě zajímalo, jak těsně výsledky vlastně dopadly, neboli kolik nejméně voličů mohlo rozhodnout o jiném složení sněmovny. Vyšlo mi, že stačilo, kdyby v Jihočeském kraji přišlo o 337 voličů ČSSD více (což by se celorepublikově projevilo ziskem 0.006 % hlasů) a levice by získala 101 křesel. K vítězství pravice by bylo zapotřebí nejméně 1127 hlasů pro KDU-ČSL v Moravskoslezském kraji. Při takto komplikovaném systému přepočtu křesel je skutečně důležitý každý hlas.
<?php foreach ($kraje as $kraj => $kraj_text) { $podil = array(); for ($i=1; $i <= $mandaty[$kraj]; $i++) { foreach ($hlasy as $strana => $val) { $podil["$strana:$i"] = $val[$kraj] / $i; } } arsort($podil); for ($i=1; $i <= $mandaty[$kraj]; $i++) { $posledni = key($podil); next($podil); } $min = null; while ($val = current($podil)) { $key = key($podil); $i = preg_replace('~^.*:~', '', $key); if (preg_match('~^(ČSSD|KSČM)~', $key) xor preg_match('~^(ČSSD|KSČM)~', $posledni)) { // kolik hlasů by bylo zapotřebí na sesazení strany, která dostala poslední mandát if (!isset($min) || ($podil[$posledni] - $val) * $i < $min) { $min = ($podil[$posledni] - $val) * $i; $min_key = $key; } } next($podil); } echo "$kraj_text\t$min\t$min_key\n"; } ?>
Paradoxní také je, že i kdyby k volbám přišel stejný počet lidí a všichni zůstali na stejné straně barikády, výsledek voleb by také mohl být zásadně jiný. 337 hlasů, které ČSSD chyběly v Jihočeském kraji, by ve stejném kraji klidně mohli postrádat komunisté, které by to o křeslo nepřipravilo. Podobných případů je samozřejmě celá řada na obě strany.
Mnoho lidí si také stěžuje na pětiprocentní hranici, kterou když strana celorepublikově nedosáhne, tak se z dalšího počítání vylučuje. Převládající názor je, že tato hranice znevýhodňuje malé strany, skutečnost je ale jiná – při rozdělení do krajů jsou malé strany znevýhodněny samy od sebe a tato hranice tak omezuje spíše regionální strany, které by v několika málo krajích křeslo získaly, na celorepublikové úrovni by toho ale nejspíš moc nesvedly.
Při zrušení této hranice by došlo k jediné změně – v Praze by místo ODS získali jedno křeslo Evropští demokraté, rozložení sil by zůstalo stejné.
<?php $hlasy = array( // počet hlasů v jednotlivých krajích "SZR" => array(2039, 2998, 1444, 1783, 967, 1771, 1437, 1770, 1447, 1028, 1698, 1627, 1405, 3414), "ČHNJ" => array(0, 0, 0, 0, 0, 216, 0, 0, 0, 0, 0, 0, 0, 0), "BPS" => array(1073, 1559, 417, 356, 207, 452, 305, 380, 323, 293, 589, 183, 335, 425), "LiRA" => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0), "PaS" => array(937, 1992, 694, 1084, 404, 1387, 460, 688, 637, 724, 1015, 1073, 617, 1044), "NEZ" => array(1763, 3990, 2402, 2184, 441, 2887, 2053, 1652, 2381, 976, 2850, 3295, 1966, 4190), "ČP" => array(23, 82, 0, 0, 0, 124, 0, 0, 0, 0, 45, 41, 38, 42), "KČ" => array(1083, 989, 559, 604, 206, 418, 294, 593, 260, 314, 821, 337, 395, 420), "ODS" => array(317224, 243012, 123804, 105391, 49189, 130365, 83647, 111466, 91113, 76393, 186779, 101151, 101376, 171565), "ČSSD" => array(152962, 190607, 102833, 91606, 44887, 132895, 63181, 89204, 90268, 97568, 200619, 118334, 106481, 247382), "SNK ED" => array(23386, 13055, 6570, 5912, 2312, 5372, 4304, 9126, 6641, 5525, 7343, 3821, 6390, 11967), "US-DEU" => array(1638, 1854, 1008, 973, 725, 1234, 753, 1431, 936, 931, 1495, 764, 1089, 1626), "HOB" => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1375), "PB" => array(2052, 2420, 1393, 1339, 846, 1367, 1139, 1712, 1104, 1110, 2426, 1094, 929, 1451), "4 VIZE" => array(313, 474, 234, 233, 121, 218, 257, 224, 191, 155, 201, 186, 116, 186), "ČSNS2005" => array(552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0), "M" => array(0, 0, 377, 0, 0, 0, 0, 0, 445, 622, 4677, 2650, 2289, 1492), "SZ" => array(60384, 37219, 19924, 17090, 9206, 22616, 20646, 19819, 17148, 13514, 37771, 18398, 16224, 26528), "H.S." => array(857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), "KSČM" => array(51925, 79964, 45099, 40578, 20323, 60175, 24823, 34093, 33956, 40480, 83687, 49026, 35998, 85201), "Koal_ČR" => array(554, 1132, 421, 560, 259, 580, 474, 603, 718, 614, 522, 598, 296, 809), "NS" => array(973, 1257, 524, 495, 532, 861, 568, 641, 368, 344, 542, 478, 282, 1476), "FiS" => array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 574, 0, 0, 0), "KDU-ČSL" => array(31820, 30207, 27630, 16338, 4723, 8365, 9131, 19893, 24023, 33587, 67865, 27609, 41663, 43852), "NEZ/DEM" => array(2665, 5723, 1486, 1912, 1296, 2821, 1538, 2056, 1582, 1403, 5171, 2636, 1592, 4827), "SRŠ" => array(2272, 1513, 568, 611, 473, 612, 500, 580, 380, 416, 1026, 548, 452, 928), ); ?>
Při celorepublikovém sčítání by výsledek byl mnohem zajímavější – 107 pravice, 93 levice:
<?php $celkem = array( "SZR" => 24828, "ČHNJ" => 216, "BPS" => 6897, "LiRA" => 253, "PaS" => 12756, "NEZ" => 33030, "ČP" => 395, "KČ" => 7293, "ODS" => 1892475, "ČSSD" => 1728827, "SNK ED" => 111724, "US-DEU" => 16457, "HOB" => 1375, "PB" => 20382, "4 VIZE" => 3109, "ČSNS2005" => 1387, "M" => 12552, "SZ" => 336487, "H.S." => 857, "KSČM" => 685328, "Koal_ČR" => 8140, "NS" => 9341, "FiS" => 574, "KDU-ČSL" => 386706, "NEZ/DEM" => 36708, "SRŠ" => 10879, ); ?>
ODS | 73 |
---|---|
ČSSD | 67 |
KSČM | 26 |
KDU-ČSL | 15 |
SZ | 13 |
SNKED | 4 |
NEZ/DEM | 1 |
NEZ | 1 |
Žádný systém asi nebude z každého úhlu pohledu spravedlivý. I v Americe vládne prezident, který dostal méně hlasů než jeho protivník. Ale mám pocit, že současný systém, především fakt rozdělení po krajích, vede k větší náhodnosti (a tím i nespravedlnosti) výsledků.
Diskuse je zrušena z důvodu spamu.