Putin kontra Python: aktywiści szukają fałszerstw wyborczych
W Rosji niedawno odbyło się referendum w kwestii zmian w konstytucji. Wyniki, co być może nie jest szczególnym zaskoczeniem, okazały się bardzo korzystne dla obecnie urzędującego prezydenta federacji, ponieważ pozwalają one na znaczące przedłużenie jego urzędowania. Rolę tę pełni, z przerwami, już od 1999 roku Władimir Putin.
08.07.2020 14:42
Wyniki referendum są podważane na arenie międzynarodowej i w kraju, a jako poszlaki przedstawiane są wnioski obserwatorów. Doczekano się jednak także znacznie bardziej szczegółowego opracowania, skonfrontowanego z publikacjami naukowymi.
Wyniki jako informacja publiczna
Surowe wyniki z okręgów wyborczych zostały udostępnione w internecie. Są to dane na których pracowała Komisja Wyborcza (Центральная избирательная комиссия). Dokonano ich wizualizacji za pomocą biblioteki NumPy. Jak pisze Арсений Хахалин (Arseny Khakhalin), asystent pracujący w Bard College, wizualizacja pokazuje klastry punktów danych w skupiskach charakterystycznych dla oszustw wyborczych.
Im wyższe poparcie dla pytań referendalnych, tym bardziej wyniki zmierzają do równych wartości procentowych, co w większej skali jest nierealistyczne. Ponadto, istnieją skupiska, w których bardzo wysoka frekwencja przekłada się na bardzo wysokie poparcie. Opracowanie statystyczne nieprawidłowości wyborczych (Klimek, Yegorov et al., 2012) dostarcza wytłumaczenia dla takich zjawisk. Układ bimodalny wskazuje na dosypywanie głosów lub dostarczanie kart wyborczych wyłącznie wybranym osobom (w zależności od trybu głosowania).
Statystyki wyborcze z innych państw, uwzględniające także głosowania na kontrowersyjne tematy oraz silną polaryzację wyborców, dostarczają mniej regularny rozrzut wyników niż głosowania podawane w wątpliwość. W przypadku referendum z lipca 2020, zastanawiająco regularny rozrzut pojawił się ponownie.
Fałszowanie wyników to trudne zadanie
Jest to, swoją drogą, kolejny dowód na to, że całkowite fałszowanie wyborów jest trudne. Nie da się "po prostu ogłosić wyników" bez liczenia, trudno jest zmyślić dane w sposób niewidoczny w statystykach i niemal niemożliwe jest takie dosypanie kart z głosami, by nikt nie zauważył (podczas wrzucania i podczas liczenia). Widać też bardzo wyraźnie, jak ważny jest dostęp do surowych danych, opublikowanych w otwartym i łatwym do przeszukiwania i oprogramowania formacie.
Dzięki takiej dostępności danych (gdzie obecna jest odpowiednia treść i forma) możliwy jest cyfrowy aktywizm i kontrola obywatelska. Surowe dane są możliwe do obrobienia i wizualizacji ze pomocą ogólnodostępnych narzędzi. Użyta biblioteka NumPy jest tak popularna, że znajduje się w repozytoriach pakietów większości dystrybucji Linuksa. Jest także, oczywiście, dostępna przez instalator pip, co zapewnia jej dostępność na przeróżnych dystrybucjach samego Pythona (w wersjach 2 i 3). Biblioteka wizualizacji Matplotlib jest pakowana do RPM/DEB znacznie rzadziej, ale również jest dostęna w pip (wymaga numpy, pyparse i cycler).
Python jest wieloplatformowy i łatwo rozpocząć z nim pracę. Są dostępne instalatory dla systemu Windows, większość Linuksów a także macOS zawiera Pythona od razu, domyślnie (wiele narzędzi systemowych jest napisanych właśnie w pythonie, np. yum). Python działa też bezproblemowo w WSL, więc jeżeli instalacja środowiska Pythona w Windows wygląda "nienaturalnie" i w czyimś odczuciu zbyt mocno ingeruje w system, nie pasując do niego za bardzo, można użyć też takiej drogi. Po odblokowaniu WSL, zainstalowaniu któregoś z Linuksów przez Microsoft Store można cieszyć się Linuksowym Pythonem pod Windows. Instalacja serwera X11 umożliwi także natywne wyświetlanie grafik. X serwer jest też wbudowany w WSL2, ale nie jest jeszcze szczególnie rozpowszechniony.
Nie tylko MATLAB
NumPy jest coraz częściej używany w obliczeniach naukowo-technicznych. Naturalnie, nie wyprze on na wielu polach legendarnego MATLAB-a, ale rosnąca liczba materiałów naukowych i źródeł doktoratów (np. w inżynierii materiałowej) wskazuje użyteczność Pythona i NumPy. Pozwala to nie wytaczać ciężkich dział za każdym razem, gdy trzeba coś policzyć. Doskonałym opracowaniem wprowadzającym do obliczeń naukowych z wykorzystaniem Pythona jest, dostępny w rozległych fragmentach na GitHubie, Python Data Science Handbook. Zawiera on także szereg przykładów do samodzielnego rozwiązania.