Analiza Izbora - Dio 1.
September 11, 2018
Uvod
Američki izbori su san snova za sve ljubitelje podataka i statistike. Predizborne ankete, postizborne ankete, exit polls, podjele po rasponu godišta, poštanskom broju, rasi, zaradi. Sve što možete zamisliti vam je na izvolte. Na žalost mi nismo Amerika, najbolje čemu se možemo nadati je da izbori.ba na vrijeme objave rezultate. Amerika ima i maltene dvostranački sistem, tako da već odavno imaju koncept “swing state”, države u kojoj je podjela glasova demokrate-republikanci približna 50-50 tako da su rezultati tih država često neizvjesni i samim time su te države najveća “borilišta”. Njihova statistika dopire do toga da oni čak imaju i swing districts i counties, rezolucija njihova statistike je takva da je moguće do nivoa mjesne zajednice utvrditi ko za koga glasa, pa dobijete i neke nuspojave (recimo gerrymandering).
Mene je kao i mnoge razočarala “analiza” od strane naših političkih analitičara jer se ne mogu sjetiti da sam ikada pročitao neku analizu zasnovanu na podacima (recimo sa anketa ili izbora), već se u svakom članku koji sam pročitao sve oslanja na autorovo lično mišljenje. To mi mnogo smeta jer kao neko čiji je posao da analizira podatke ja ne vjerujem u davanje značaja ljudima koji svoje mišljenje poturaju kao “analizu”. Stoga sam prije par mjeseci odlučio da vidim da li mogu saznati koje su to bosanske “swing općine”, tj na kojim lokacijama su glasači voljni promjeniti svog favorita.
Inicijalna ideja je bila da napravim kartu do nivoa ulice koja bi bila indikator toga koliko je određena ulica voljna promjeniti svog favorita, ali to je nemogući zadatak budući da od 140 Bosanskih općina jako malo njih objavljuje ažurirane podatke, a fizičko skupljanje tih informacija mi ne pada na pamet. Ova analiza se oslanja na dvije predpostavke i jednu varijablu:
- Biračka mjesta mogu služiti kao proxy za glasače - znači umjesto da gledam na nivou općine da li je općina u globalu promjenila svog favorita na nekom nivou, ja gledam da li je na pojedinačnim biračkim mjestima promjenila svog favorita. Za ovo sam se odlučio zbog veće granularnosti, jer sam broj biračkih mjesta nam daje ideju o tome koliko birača živi u toj općini. Imajte na umu da sam svaki nivo za koji se glasa na nekom biračkom mjestu posmatrao posebno, primjera radi za mjesta u FBiH se jedno biračko mjesto vodi kao 5 različitih jer se tu posebno glasa za Kanton, Federalni Parlament, Predstavničku Skupštinu BiH, te bošnjačkog i hrvatskog člana Predsjedništva.
- Biračka mjesta se ne mijenjaju često - Budući da općinske izborne komisije određuju ko glasa na kojem biračkom mjestu, a inercija je jedina sila koja se poštuje u BiH, ne vjerujem da je dolazilo do većih promjena u biračkim mjestima, ovo nije baš tačno, jer su neka biračka mjesta dijeljena na više njih (Na A i B ili je dodan još neki broj na to), ali u većini slučajeva nije bilo promjena od 2006. do 2014.
- Delta - mjerilo promjene. Ovo je termin koji ću koristiti za “promjenjivost” favorita na nekom biračkom mjestu.
BITNA NAPOMENA: Sve što ćete vidjeti je dato as is, ja ne garantujem ni tačnost podataka ni tačnost analize, ovo je usputni projekat inspirisan i financiran od strane lične frustracije manjkom podataka i ozbiljne analize izbora u BiH, te ako uočite bilo kakve greške molim vas da mi se javite radi ispravke istih
Metodologija
Prikupljanje podataka
Mada su podaci u digitalnom formatu (ne mislim na PDF) dostupni na izbori.ba ne postoji način da ih skinete u nekom tabelarnom formatu. Srećom poslije upita na Twitteru mi se javio Damir Dajanović (@bezrabotni na Twitter, extra čovjek), koji je već prije par godina dobio podatke sa prethodnih izbora u obliku Excel tabela. Budući da su nedostajali podaci za općinske izbore za 2008. odlučio sam da analiziram opće izbore od 2006. - 2014.
Prvi problem sa kojim sam se suočio je format podataka, naime tabele su koristile UTF-16LE enkodiranje, te su miješale ćirilicu i latinicu. Ovo je predstavilo noćnu moru jer većina alata ima problema sa neobičnim formatima, tako da mi je trebalo par sedmica da pročistim tabele i ubacim ih u neki iskoristiv format. Ovome treba dodati da su neki podaci ipak nedostajali pa sam bio primoran da napišem program koji će ih skidati sa izbori.ba, na žalost ta web stranica je urađena na takav način da se ne mogu koristiti malo brže skripte (scrapy za python itd.) već su kreirane da reaguju na korisnikove klikove, tako da sam morao koristiti Selenium da isprogramiram skriptu da klika na svaki link i kopira sadržaj, te pravi pauze na svakoj stranici jer inače ne funkcioniše sajt. Uložio sam golem trud da ispravim greške u izvornom materijalu, prvobitno pisanjem skripti koje su provjeravale da li za neka biračka mjesta fale glasovi na određenim nivoima vlasti, potom ručnom provjerom nasumično odabranih podataka sa podacima sa CIK web stranice. Ne mogu garantovati da sam uklonio sve greške, te sam više puta bio primoran da analize počinjem iz početka zbog uočenih nepravilnosti, što je oduzelo dosta vremena, budući da sam ovaj projekat počeo u Martu, dakle prije pola godine.
Analiza
Podatke sam poredao tako da u svakom redu imamo biračko mjesto, naziv stranike, broj glasova itd. Kad se sve sabere imao sam 1,180,052 reda u tabeli. Previše. Budući da za računanje delte su bitni samo pobjedici sam odlučio da izbacim sve redove koji su sadržali nekoga ko je dobio manje od 5% glasova na tom biračkom mjestu.
Ovo je smanjilo tabelu na 282,711 posmatranja. Mnogo bolje. Sljedeći problem koji sam imao su nazivi stranaka. Imena kandidata i stranaka su spojena, mene pojedinačni kandidati nisu zanimali, već samo stranke, tako da sam napravio još jednu kolonu “stranke_skraceno” koja bilježi o kojoj stranci se radi, tako da “SDA.STRANKA.DEMOKRATSKE.AKCIJE” i “SDA - STRANKA DEMOKRATSKE AKCIJE” ne bi slučajno bili shvaćenio kao dvije različite stranke jer im se nazivi ne preklapaju 100%. Ovdje je nastao novi problem, a to su koalicije. Tako da sam tu morao da proguglam ko je u kojoj koaliciji i napravim šifre za svaku, te svaku nabrojim u koloni “stranke_skraceno”.
Jednom kad je to sve bilo spremno je došao trenutak da analiziramo podatke. Algoritam koji sam napravio radi sljedeće:
- Iz tabele izabere određeno biračko mjesto.
- Za svaki nivo vlasti koji se bira iz tog biračkog mjesta uradi sljedeću provjeru:
- Ako postoje podaci za 2006. i 2010. uporedi imena pobjednika. Svako poređenje povećava varijablu ‘test_event’ za 1. To je vrijednost koju koristimo da pratimo broj biračkih mjesta i nivoa vlasti za koji glasaju, kako bi ih kasnije mogli porediti koristeći procente. U slučaju da se razlikuju pobjednici povećava se varijabla ‘delta’ za 1.
- Ovaj proces se ponavlja za 2010. i 2014. te za 2006. i 2014. pod uslovom da ne postoje podaci za 2010. (urađeno zbog promjene u broju i nazivu određenih biračkih mjesta)
- U slučaju da pobjednik iz jedne godine sljedeće godine uđe u koaliciju sa nekim drugim strankama delta vrijednost se ne povećava.
- Proces se ponavlja za svako biračko mjesto unutar općine. Zbir delta i test_event varijabli za ta biračka mjesta se koristi kao delta i test_event vrijednosti za čitavu općinu.
- Koraci od 1 do 3 se ponavljaju za ostale općine u BiH
Primjera radi, biračko mjesto X 2006. glasa za SDA, 2010. za SDP, te 2014. opet za SDP, delta vrijednost tog biračkog mjesta je stoga 1. Da su 2014. promjenili favorita delta bi bila 2. Kako algoritam također gleda koalicije, ako je neko biračko mjesto 2006. glasalo za SNSD, a 2010. za koaliciju SNSD | DNS | SP algoritam to neće računati kao promjenu favorita jer je favorit prisutan u koaliciji.
Kad pokrenemo algoritam dobijemo broj promjena favorita po biračkom mjestu za svaku općinu. Sam broj nije toliko značajan jer se broj biračkih mjesta razlikuje po općinama, recimo Banja Luka ima oko 250, dok Velika Kladuša oko 70, tako da nam je potreban procenta promjene, tj. broj promjena podijeljen sa maximalnim brojem promjena, koji smo pratili prilikom svake provjere da li je došlo do promjene favorita.
Rezultati
Ako pogledamo spisak poredan prema procentu delte na općim izborima možemo vidjeti da su Sarajevske općine najpromjenjivije, s Ilidžom na vrhu sa čak 82% promjena, te je usko prate Novi i Stari Grad. Ako pogledamo prema najnižem broju promjena vidimo sićušne općine Istočni Drvar i Petrovac, te Istočno Novo Sarajevo i Trnovo. Sad, bila bi razumna pretpostavka da samo kažemo “što je veća općina to je veći broj promjena”, da provjerimo da li je ta hipoteza realna možemu napraviti korelaciju između broja mogućih promjena (test_event) i broja uočenih promjena (delta). To nam daje sljedeći grafikon
Naša hipoteza izgleda da je bila ispravna jer ako pogledamo možemo vidjeti da broj biračkih mjesta i procenat promjenjivosti su približni te prate predvidiv trendline (plava linija koja predviđa odnos između te dvije varijable). Interesantno je vidjeti i kako Banja Luka odskače, gdje uprkos jako velikom broju biračkih mjesta preovladava jako velika lojalnost biračkih mjesta prema svojim dugogodišnjim favoritima, slična stvar se može reći i za Tuzlu, Bijeljinu i Mostar, mada su oni mnogo manje lojalni u odnosu na Banja Luku. Tačke ispod plave linije označavaju općine koje su promjenjivije nego što se očekuje, a to su Centar, Novo Sarajevo i Ilidža.
Kao zadnji plot pravimo jednu kartu (joj što volim praviti karte), u kojoj općine bojimo po procentu promjenjivosti.
Diskusija
Šta dalje? Pa planiramo uskoro uspostaviti sajt na kojem ćete moći i sami skinuti ove podatke, te se malo igrati sa gore prikazanom kartom. Također možete na ovom blogu upratiti daljnje analize koje ću raditi kako sa ovim tako i sa drugim podacima, i to će se nastaviti sve do izbora, poslije toga mijenjam temu. Ovo je realno samo jedan začetak nečega sa željom da se statistika i data analysis konačno počnu koristiti u BiH političkoj analizi. Ja sam siguran da su stvari koje sam predstavio u ovom blogu već poznate kako i strankama tako i široj javnosti, ali još uvijek ih nisam vidio izražene na ovaj način. Također bi želio da CIK svoje baze podataka otvori široj javnosti tako što nam omoguće da tabele sa rezultatima izbora skinemo u XLSX ili CSV formatu, po mogućnosti da su svi podaci na latinici i u UTF-8 enkodiranju.
Slobodno se javite sa prijedlozima i idejama.