Пила Чурова своими руками, или как провести честные выборы

Аватар пользователя promedol

На данном ресурсе (примечание Promedol-a - им. в виду habr, а не aftershock конечно же) с завидной регулярностью появляются статьи о выборах в России. Если тезисно передавать их суть, то получается что-то вроде:

  • Выборы в России фальсифицированы, и это аксиома, совершенно неоспоримый факт.
  • Признаки фальсификации — характерные «пики» на графиках около «круглых» чисел процентов явки либо голосов. Или некруглых, вроде «Пика Володина» на 62,2%.
  • А ещё признаки фальсификации — это отсутствие «колокола» на графиках, характерного для нормального распределения.

Примечательно, что любые попытки указать авторам статей на, откровенно говоря, спорность отдельных гипотез вызывают яростное минусование, слив кармы и выдавливание из дискуссии.

Поэтому, для проверки этих утверждений мы проведём свои, максимально честные выборы!

Сам себе Чуров

Честно говоря, я до сих пор не понимаю обоснованности утверждения, что выборы должны подчиняться закону нормального распределения. Уже даже учитывая большое количество весьма специфичных избирательных участков, типа воинских частей. Но пусть! Пусть будут максимально честные и транспарентные сферические выборы в вакууме. Строго по Гауссу.

Итак, весь процесс электорального волеизъявления будет имитировать один простой скрипт.

Знакомьтесь, ЧАС (Честная Автономная Система) Выборы 2018!

 
 
# -*- coding: utf-8 -*-

import random
import csv

def vote(num_tiks, min_voters, max_voters, vote_result):
    for i in range(0, num_tiks):

        # Формируем избирательный участок
        voters_list = random.randrange(min_voters, max_voters, 1)

        # Задаём целевую явку, пусть будет 67%
        mu = int(voters_list*0.67)
        sigma = int(mu * 0.25)

        # Голосуем
        voters_voted = int(random.gauss(mu, sigma))
        if voters_voted > voters_list:
            voters_voted = voters_list
        if voters_voted < 0:
            voters_voted = 0

        # Считаем явку
        turnout = round(100*voters_voted/voters_list, 1)
        if turnout in vote_result:
            vote_result[turnout][0] += 1
            vote_result[turnout][1] += voters_voted
            continue

        vote_result[turnout] = [1, voters_voted]

voted_total = {}

# День Выборов настал, все взяли в руки бюллетни!
vote(10000, 10, 100, voted_total)
vote(15000, 101, 500, voted_total)
vote(30000, 501, 1000, voted_total)
vote(20000, 1001, 2000, voted_total)
vote(10000, 2001, 3000, voted_total)

# Сохраняем результаты в итоговый протокол
with open('voted_total_tiks.csv', 'w') as csv_tiks_file:
    csv_writer = csv.writer(csv_tiks_file)
    for turnout_step in voted_total:
        csv_writer.writerow([turnout_step,
                             voted_total[turnout_step][0],
                             voted_total[turnout_step][1]])

Небольшие пояснения

Структура избирательных участков и общее количество их в целом имитирует реальную ситуацию. Наибольшее количество избирателей голосует на участках размером от 500 до 3000 человек. Участки размером больше 3000 избирателей по закону существовать не могут. Средняя явка выбрана в 67 процентов — это официальные данные явки последних выборов Президента РФ. Шаг явки выбираем 0,1%.

В остальном код прекрасно объясняет сам себя, это же Python.

Результаты

Мне было лень заморачиваться с графиками в питоне, поэтому результаты выгружаю в csv и обрабатываю в LibreOffice Calc.

Вот он, итоговый протокол за подписью главы моего карманного ЦИК:

 

Налицо характерные признаки «фальсификации» и «вбросов ради выполнения задания по явке». Обратите внимание на эти кошмарные пики на 50, 60, 75%, и на 67 тоже.

Исходный код программы опубликован под лицензией WTFPL.

Всем спасибо за внимание.

UPD1: пользователь Andy_U в комментариях посоветовал сигму считать по формуле:

sigma = math.sqrt(voters_list*0.67*(1-0.67))

Результат получается вот такой:

График (в отличие от предыдущего) становится совершенно не похожим на реальный график явки, который мы можем наблюдать, например, вот в этой статье о фальсификациях. Тем не менее, пики и тут никуда не делись.

Авторство: 
Копия чужих материалов
Комментарий автора: 

Статья моего друга, хабраюзера Shaltay, была удалена вскоре после публикации, а сам он был забанен с формулировкой "провоцирование политических дискуссий", хе-хе.

Публикуется на Aftershock с безоговорочного разрешения вышеуказанного моего друга в продолжение моего предыдущего материала.

Комментарии

Аватар пользователя Artem_01
Artem_01(12 лет 1 месяц)

Вроде разбирали всю эту историю с пиками ещё 6 лет назад...

https://0neofthese.livejournal.com/645.html

Аватар пользователя LvKiller
LvKiller(9 лет 9 месяцев)

Если честно, то все эти "изыскания" гроша ломаного не стоят. На самом деле все гораздо проще. Когда ты, приходя на выборы, видишь перед собой двоих: Страшилу Мудрого и, совсем наоборот, М@дилу Страшного, то даже вопроса не возникает за кого голосовать. Отсюда и числа - >80% и < 20... А "колокола" получаются в случае, когда баллотируются два Страшных... или два Мудрых. То есть, когда населению пофиг на них обоих - настолько они одинаковые.

Комментарий администрации:  
*** отключен (маты, гнилой жаргон) ***
Аватар пользователя лпх
лпх(9 лет 12 месяцев)

А ещё многому населению "влом" ходить на выборы, тем более если на них нет любимого наваляльного коньдидата.
Могли бы уж онлайн-голосовалку через госуслуги или соцсети прикрутить к электронному концлагерю "цифровому травительству".
И чтоб результаты были как-то обезличенно видны всем желающим в динамике.

Комментарий администрации:  
*** отключен (неполживец и веган-радикал) ***
Аватар пользователя Argentum
Argentum(10 лет 6 месяцев)

Надо выбросить маленькие участки, смотреть только такие, например, где более 500 избирателей.

По идее, тогда пиков не должно быть.

Страницы