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

Аватар пользователя 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 с безоговорочного разрешения вышеуказанного моего друга в продолжение моего предыдущего материала.

Комментарии

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

Удивлен, что такие статьи удаляются на Хабре вместе с авторами.  Вполне нормальная статья, ИМХО, для обсуждения.

Или там инакомыслие напрочь уничтожается по заказу негласных "спонсоров"? 

Аватар пользователя Нехороший
Нехороший(5 лет 4 месяца)

Там демократический форум, за любое отклонение от линии партии полагается расстрел на месте.

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

Не знаю.  У нас вроде вполне себе тоталитарный ресурс, но и Овца ходит-бродит, и куча тому подобного народу.  То есть за саму по себе оппозиционность, если она способна внятно изъясняться и аргументировать, у нас не отчисляют.

А вот у "демократов", похоже, иные стандарты.

Аватар пользователя Мюскаден
Мюскаден(4 года 8 месяцев)

У нас вроде вполне себе тоталитарный ресурс, но и Овца ходит-бродит, и куча тому подобного народу.  То есть за саму по себе оппозиционность, если она способна внятно изъясняться и аргументировать, у нас не отчисляют.

Ой ли... За оппозиционность не уверен, а вот за просто так - сплошь и рядом. У самого 5 глухих банов накопилось, знаю что говорю.

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

Речь не об индивидуальных банах, а об отчислении.

Аватар пользователя Мюскаден
Мюскаден(4 года 8 месяцев)

Речь не об индивидуальных банах, а об отчислении.

Угу. Именно о них. У меня таковых 5. И все из-за чьей-то вожжи под хвостом (даже не обязательно Вашей)

Аватар пользователя Дядя Иштван2
Дядя Иштван2(3 года 8 месяцев)

Тебя 5 раз с АШ выкидывали? Я твои слова понял именно так.

Аватар пользователя Ким Лит
Ким Лит(6 лет 1 месяц)

Демократия же! Отличается особой нетерпимостью к инакомыслию. Все должны быть демократами и иметь свою точку зрения (утвержденную главными демократами).

Аватар пользователя Спасибо
Спасибо(7 лет 4 месяца)

Демократия -- это власть "демократов". Всё остальное -- тоталитаризм и ересь, и подлежит демократизации..

Аватар пользователя Старикашка
Старикашка(7 лет 2 месяца)

У "демократов"  вполне себе "нормальный" ресурс (то и другое слово вполне сознательно в кавычкахsmiley) У оных, как говАривал Н.С.Хрущев(не к ночи помЯнутый) свои стандарты адекватностиsmiley Так что, как говорится,- пусть ихwink

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

Именно за то что способна ясно изьясняться, за это и забанили оппозициб.

Аватар пользователя Тхе Кат
Тхе Кат(5 лет 7 месяцев)

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

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

В принципе, из Канемана со всей очевидностью следует вывод что нормальное распределение к человеку слабо применимо. О чем прекрасно знают те же трейдеры - имеются ввиду "толстые хвосты". Давно хотел изложить в отдельном псто.

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

значит пора излагать

Аватар пользователя alekam
alekam(7 лет 1 неделя)

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

Аватар пользователя alekam
alekam(7 лет 1 неделя)

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

Аватар пользователя И-23
И-23(6 лет 6 дней)

…оно используется для программирования аудитории.

Аватар пользователя Ахура Мазда
Ахура Мазда(5 лет 11 месяцев)

Ну слава тебе Господи! У еще одного прозрение наступило, что такое хабр и его отпочки, по типу гиктаймс, по сути.

Аватар пользователя XeSSo
XeSSo(6 лет 4 месяца)

Линия хабрапартии должна быть непоколебима! Никаких дискуссий!

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

Скорее там любят бороться с любой политотой. Хотя в случае с этой статьей очевидный перегиб.

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

что-то никто там с постами либеральной направленности не борется

Аватар пользователя shadanakar
shadanakar(4 года 5 месяцев)

На техническом форуме норма бан за разведение политсрача. Объяснять надеюсь почему не надо. Никакой конспирологии. Вот когда на форуме котолюбов или мамочек разворачивается политдискуссия это безо всяких пил однозначно проплаченая акция.

Аватар пользователя serverny
serverny(5 лет 3 месяца)

Только вот политсрач в другую сторону администрацией поддерживается и поощряется, что разрушает вашу стройную теорию.

Аватар пользователя promedol
promedol(5 лет 7 месяцев)

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

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

Впрочем, я об этом уже написал.

Комментарий администрации:  
*** Я умнее и приношу больше пользы, чем пять человек (с) ***
Аватар пользователя skadlig
skadlig(3 года 7 месяцев)

Хосспади, сколько раз я пытался объяснять разным умнодуркам (то есть у чела вроде высшее, даже мехмат, ой, тут, в Екате, это матмех, но учился он на своем "матмехе" в начале 2000-х) - что 1) там не Гаусс, и быть там Гаусса не может 2) нужно крайне аккуратно работать с числами с плавающей точкой 3) для тех, кто в курсе, нужно делать fuzzing и whitening, чтоб преодолеть 2) - все бесполезно. Просто не понимают, что "теоремы из учебника" имеют ограниченную область применимости, да и какие там нафиг теоремы - смутные названия формул в голове и тотальный гуглинг, вообще, не понимают, что они неучи и учили их тоже неучи...

Комментарий администрации:  
*** Отключен (лидер бан-рейтинга, систематические оскорбления и срач в стиле "Советский человек - гнида и сволочь" ***
Аватар пользователя nictrace
nictrace(9 лет 7 месяцев)

даже если мы будем плевать с балкона в безветренную погоду  - будет Гаусс wink

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

Фейгенбаум с вами не согласился бы..

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

Это следствие массовости образования. Качество при стремлении к валу неизбежно падает. Второй прчиной является засилие статистической парадигмы познания. Так вышло, что большинство методтческих материалов до сих пор составлены именно через эти "розовые очки". Про негауссову статистику не рассказывают, на условиях применимости теорий и непротиворечивости рассуждений не настаивают.. Результат закономерен!

В науке уже давно сменились целые эпохи, но высшая школа все поет про три сигмы.. 

Аватар пользователя И-23
И-23(6 лет 6 дней)

Не так плох «гуглинг», как наличие отсутствия культуры верификации найденного.

Ну и соблазн подмены самостоятельного мышления поиском, как максимум — минимальной адаптацией готового шаблона — страшная вещь.

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

Это одна из тех вещей, которой научили меня на первом курсе. Не все что напоминает по виду знакомую функцию ей является. Особенно на ограниченном участке. Человеку свойственно присваивать новым объектам знакомое поведение. Нужно к каждой задаче с чистого листа подходить.

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

не совсем понял, эта модель предполагает наличие одного кандидата?

Аватар пользователя promedol
promedol(5 лет 7 месяцев)

Она считает только явку (turnout), без учёта того, за кого отдан голос.

Комментарий администрации:  
*** Я умнее и приношу больше пользы, чем пять человек (с) ***
Аватар пользователя 666
666(7 лет 7 месяцев)

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

Аватар пользователя connectu
connectu(7 лет 6 месяцев)

В кладовку бы..

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

Хабар либеральная помойка потому что ИТ'шники. А ИТ'шники почти все либерализмом головного мозга больны. 

Аватар пользователя И-23
И-23(6 лет 6 дней)
Аватар пользователя Rashad_rus
Rashad_rus(9 лет 7 месяцев)

А ИТ'шники почти все либерализмом головного мозга больны.

Тут Вы не правы. Скрипт-кидисы и начинающие программеры - это скорее анархисты, хакеры и безопасники - это скорее ультра-левые и ультра-правые, серьезные программеры, работающие в команде и сетевики - больше социалисты, программеры-одиночки и аутсорсеры - капиталисты, а вот менеджеры-IT - это именно либерасты.

А Вы - почти всем повесили тег либераст, не хорошо!

Аватар пользователя Many
Many(4 года 1 месяц)

А Вы - почти всем повесили тег либераст, не хорошо!

А ваши утверждения ничем от его не отличаются. Вы тоже повесили на случайно выбранные условные группы программистов ярлыки, которые вам показались правильными, а по факту и ваши слова, и слова того кому вы ответили одного уровня фантазии.

Комментарий администрации:  
*** Ради красного словца, придумал внука-сорванца! ***
Аватар пользователя maxvlad
maxvlad(9 лет 8 месяцев)

У Рашада присутствуют два слова - скорее и больше. Единственное безапелляционное утверждение - про IT-менеджеров. Но тут я должен признать, что общался только с одним чётко выраженным IT-менеджером - и вот он был либераст ;)

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

ну вот я программист широкого профиля, в небольшой команде, и социалист)

Аватар пользователя бывший
бывший(7 лет 5 месяцев)

программеры-одиночки и аутсорсеры - капиталисты

Про программеров-одиночек - соглашусь (когда видишь, как создается прибавочная стоимость на всех этапах и сколько каждый этап требует труда, по другому начинаешь относиться к требованиям всеобщего равенства).

А в среднем, я думаю, больше влияет возраст. Молодёжь, понятно, кренится влево, те, что постарше - вправо. Поскольку молодёжи в IT больше и в тырнетиках она активнее - создается впечатление об упоротости ITшников как класса.

Комментарий администрации:  
*** Уличен в наглой дезинформации ***
Аватар пользователя mentat
mentat(9 лет 9 месяцев)

Сисадмины и эникейщики обычно верные про-путинцы или с небольшим социалистическим уклоном. Девопсов же хрен поймешь.

Аватар пользователя IS-80
IS-80(4 года 4 месяца)

У девопсов сама профессия подразумевает конъюнктурность и соглашательство.laugh

Комментарий администрации:  
*** Отключен (систематические немотивированные оскорбления, срач) ***
Аватар пользователя Weard
Weard(3 года 10 месяцев)

вы не правы. На хабре либеральное засилье не потому, что айтишники, а потому, что молодые, в основном. Такие динозавры, как я - редкость.

Комментарий администрации:  
*** Отключен (лидер бан-рейтинга, провокатор) ***
Аватар пользователя rst0
rst0(9 лет 8 месяцев)

хабр помойка, а вот с остальным не соглашусь

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

Ну я же написал "почти". Мне знакомы и нормальные ИТшники, но мало их smiley

Аватар пользователя mls
mls(5 лет 3 месяца)

Из всего вышесказанного понятно только то, что явку задали заранее.

Это не модель процесса голосования.

Аватар пользователя Axx Yeti
Axx Yeti(5 лет 2 месяца)

"Из всего вышесказанного понятно только то, что явку задали заранее", - что это меняет?

Аватар пользователя mls
mls(5 лет 3 месяца)
if voters_voted > voters_list:
            voters_voted = voters_list

Статистические "выкидыши" на одиночном графике объясняются вышеприведенным участком кода.

Что меняет? Вторая часть моего комментария уже ответила на Ваш вопрос - это не модель процесса выборов. Если на официальных онлайн-картинках мы видели что-то похожее, то это значит, что эти "данные" генерировались подобным кодом.

Вообще, не в обиду  товарищу автора, но с таким "кодом" я бы на хабр не полез.

Сори, не внимателен. Не вы автор, поэтому правлю текст комментария. 

Аватар пользователя promedol
promedol(5 лет 7 месяцев)
if voters_voted > voters_list:
            voters_voted = voters_list

Чувак.

Я, конечно, не так хорошо постиг Python, как мой друг Shaltay, но даже мне понятно, что в этом случае, когда количество проголосовавших равно количеству избирателей, явка будет составлять 100%, и на пик, например, на 50% это ну никак не повлияет.

Комментарий администрации:  
*** Я умнее и приношу больше пользы, чем пять человек (с) ***

Страницы