Malá analýza výsledkov referenda

Jano Suchal
Feb 10, 2015 · 4 min read

Čo spraví programátor, keď uvidí výsledky referenda? Porozmýšľa, potom zoberie výsledky druhého kola prezidentských volieb a nakreslí si tabuľku. Takúto.

Image for post
Image for post
Riadky sú možnosti hlasovania v prezidentských voľbach, stĺpce sú referendové možnosti. Čísla sú verejne dostupné výsledky.

Prečo? Lebo keby niekto vedel vyplniť tie prázdne políčka, tak vie odpovedať na celkom zaujímavé otázky. Napríklad:

  • Ako hlasovali v referende Kiskovi priaznivci?
  • Je tam nejaký rozdiel oproti Ficovcom?
  • Koho volili za prezidenta Chromíkovci? (stĺpec — homoadopcie nie)
  • Koľko ľudí si radšej spravilo pekný víkend a nešlo hlasovať ani raz?

Otázka za sto bodov znie:

Ako tie prázdne políčka vyplniť, aby súčty čo najlepšie sedeli?”

No, napríklad takto:

Image for post
Image for post
Chyba označuje rozdiel súčtu buniek od reálneho počtu.

Vyzerá, že to celkom pasuje a nič mi už nebráni robiť unáhlené závery. Stačí tabuľku normalizovať po riadkoch a je jasné, že:

Image for post
Image for post
  • 75% Kiskovcov a 70% Ficovcov nešlo hlasovať do referenda.
  • 28% Ficovcov hlasovalo proti adopciám homosexuálnymi pármi.

Keď to znormalizujem po stĺpcoch tak:

Image for post
Image for post
Dúhoví sú prvý stĺpec.
  • 28% Chromíkovcov volilo Fica, 34% Kisku.
  • 28% dúhových sú Kiskovci.

A mohol by som pokračovať, keby toto celé nemalo jeden zásadný háčik: Tie čísla sú strašne nepresné a vlastne neviete odkiaľ som ich zobral. Ďalšie čítanie je len pre náročných.


Ak ste dávali na strednej škole pozor na matematike, tak iste viete, že vyriešiť rovnicu, kde je 9 neznámych (buniek tabuľky) a máte len 6 rovníc (výsledky referenda a volieb) je problém. Resp. nie je to žiadny problém, lebo to má nekonečne veľa riešení. To znamená, že ak dám akékoľvek číslo hocikde do tej tabuľky, tak viem nájsť ostatné čísla tabuľky tak, aby sedeli počty. A to je ten problém.

Čo s tým?

Prvá vec je, že tie rovnice majú ešte jednu podmienku. Všetky bunky musia byť nezáporné čísla. Otázka znie, či nám toto nejako zásadne obmedzí to nekonečno riešení a bude sa s tým niečo dať urobiť.

Kedže som ako programátor tvor lenivý a analyticky sa mi to riešiť nechce, tak použijem metódu Monte Carlo. Táto sofistikovane nazvaná metóda nie je nič iné ako blbé náhodné skúšanie možností a zapisovanie si výsledkov. Ok, idem skúšať výpĺňať tú (kontingenčnú) tabuľku náhodne, ale hneď mám problém. Všetky možnosti sa mi skúšať nechce lebo väčšina z nich budú blbosti, ktorým nebudú pasovať súčty.

Prvý nápad je náhodne inicializovať tabuľku a pozrieť, ktorú bunku treba upraviť, aby sa chyba v sumách zmenila čo najviac. Ukazuje sa, že je dobré použiť strednú kvadratickú chybu, aby som mal chyby v stĺpcoch a riadkoch približne rovnako veľké. Táto sofistikovaná metóda sa volá gradientový zostup a je plná derivácii. Naštastie derivácia nie je nič strašné, len odpočítanie dvoch čísel. Toto opakujem až kým sa to neustáli alebo chyba nie je dostatočne malá.

Ok, kedže to náhodne inicializujem, tak je dobré to pustiť tak 100.000 krát nech vidím kde sa hýbu jednotlivé premenné. Za pár sekúnd mám výsledok a kreslím si to v Rku.

Riešenia pre jednotlivé bunky môžu nadobúdať takéto hodnoty.

Image for post
Image for post
Tabuľka možných riešení kontingenčnej tabuľky hľadaných gradientovou metódou.

Toto znamená, že tá tabuľka má síce veľa riešení, ale približne vidím, kde sa hýbu a aké sú rozdiely medzi riadkami. Úplne na zahodenie to nevyzerá. Tie čísla v tabuľke v úvode článku sú priemerné hodnoty.

Nasledujú normalizované verzie riešení tabuľky, ale interpretáciu nechávam na diskusiu.

Image for post
Image for post
Po riadkoch normalizované hodnoty riešení kontingenčnej tabuľky.[%]
Image for post
Image for post
Po stĺpcoch normalizované hodnoty riešení kontingenčnej tabuľky.[%]

Poznámky pod čiarou

  • Z letmého pohľadu na histogramy je zrejmé, že tie rozdiely v priemeroch nebudú signifikantné a usudzovať sa z toho dá veľmi málo.
  • Histogramy reprezentujú hodnoty riešení kontingenčnej tabuľky, do ktorých najčastejšie dokonverguje gradientový algoritmus. Nie nutne všetky možné riešenia.
  • Na tento problém existujú aj sofistikovanejšie metódy. Klúčové slovo je ecological inference.
  • Počet voličov sa medzi voľbou prezidenta a referendom trochu zmenil, ale je tak malý, že ho zámerne ignorujem.
  • Pravdepodobnosť, že som sa pri tejto analýze nikde nepomýlil je asi 1%.

Zdrojáky:

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store