Стаття

Моделюємо вибори

Мой пост о российских выборах в блоге "Компьютерры-онлайн" (вот он на сайте КТ, а вот - здесь, на моем сайте) вызвал достаточно серьезное обсуждение и там, и там. Меня более всего озаботило утверждение, что описываемые мной эффекты являются просто математическими феноменами, и ни о каки...

Мій пост про російські вибори в блозі «Комп'ютерри-онлайн» (ось він на сайті КТ, а ось — тут, на моєму сайті) викликав достатньо серйозне обговорення і там, і там. Мене найбільше стурбувало твердження, що описувані мною ефекти є просто математичними феноменами, і ні про які фальсифікації не свідчать. Тут я описую результати моделювання випадкового розподілу голосів, що дозволяють спростувати ці твердження.
Спочатку про ті твердження, які мене схвилювали. Користувач bjaka_max, що доволі активно взяв участь в обговоренні на сайті КТ, повідомив, що за моє твердження, що розподіл дільниць за кількістю голосів, відданих за достатньо популярну партію, має прагнути до нормального, мали б соромитися ті, хто викладав у мене математику. «Але кількість виборців різна і кількість тих, хто проголосував за партію, не можна сказати, що не залежить від числа виборців. А потім ми ділимо випадкову величину на іншу, яка залежить від першої. Чи буде розподіл нормальним? Ні, звичайно, розподіл буде логнормальним» — пише цей користувач. Окрім іншого, він наполягає, що за звинувачення комісій у фальсифікаціях я маю нести відповідальність за наклеп. Пізніше він, схоже, перестав наполягати на тому, що розподіл має бути саме логнормальним, але продовжив висміювати мене за твердження, що він має прагнути до нормального.
Користувач bjaka_max навіть виклав у коментарях щось, що є якоюсь програмою, і помістив посилання на графіки. Він описує те, що він виклав, так: «діаграма з опенофісівського калька, берете результат роботи програми, вносите як стовпець і будуєте по ньому діаграму». На жаль, у мене немає названого ПЗ, і, що, мабуть, навіть більш суттєво, цих інструкцій для мене недостатньо.
На Bartachos`і користувач protopostokolo попросив мене прокоментувати відповідність наведених мною картинок і тих, які поміщені тут і на наступних сторінках якогось «ЗаНевського літописця». Літописець (будемо називати його так) пише, що згенерував результати, що імітують результати ЦВК, за допомогою датчика випадкових чисел. Він стверджує, що при моделюванні дільниць, що відрізняються за явкою, результат найсильнішої партії закономірно зростає зі зростанням явки. Ось, подивіться на взяту у нього картинку.
[IMG_1]
Розподіл відсотків від списочного складу залежно від явки виборців (взято звідси)
Ну так, ніби ці картинки віддалено нагадують те, що ми побачили за результатами виборів. Літописець пише: «Жодних висновків я робити не буду, і не буду вигадувати жодних пояснень. Нехай цим математики займаються. Нехай вони спробують пояснити, яким чином розподіл списочного складу виборців навіть в ідеалізованій моделі впливає на зростання відданих голосів за партію-лідера. ... А чи будуть ці математики «партійними», «опозиційними» чи «незалежними» (не лише від партійних уподобань, а навіть від таблиці множення) — це не так важливо...»
Я відразу не повірив процитованим твердженням, але не став поспішати їх спростовувати. Коли йдеться про моделі, вони часто демонструють контрінтуїтивну поведінку. А раптом справді такі ефекти мають місце, а я до цього не додумався? Тому для початку я зробив модель. На жаль, програмуванням не володію, і тому скористався своєю улюбленою Statistic`ою.
Для початку я зробив таблицю з 10 тисяч рядків. Перший стовпець цієї таблиці (Elec) я заповнив випадковими числами в діапазоні від 0 до 1 (для цього ввів у стовпець формулу «=Rnd(1)»). Ґрунтуючись на цих випадкових числах, я визначив, за кого голосує виборець, якому відповідає цей рядок. Для цього я ввів у другий стовпець (названий Party) формулу «=(Elec<=0,49)*1+(Elec>0,49)*(Elec<=0,68)*2+(Elec>0,68)*(Elec<=0,81)*3+(Elec>0,81)*(Elec<=0,93)*4+(Elec>0,93)*(Elec<=0,96)*5+(Elec>0,96)*6». Ця формула працює так. Якщо значення випадкового числа не перевищує 0,49, виконується та логічна умова, результат перевірки якої множиться на одиницю. Якщо значення Elec лежить у діапазоні від 0,49 до 0,68, то в стовпець Party піде значення 2 і т.д. Кодам відповідають російські партії, а частка, що припадає на них, визначається тими відсотками, які вони набрали за даними виборчкому. Коди такі: 1 — PZiV(49%); 2 — KPRF(19%); 3 — SP(13%); 4 — LDPR(12%); 5 — Yabl(3%); 6 — other(4%).
Далі я змоделював 1000 дільниць, що відрізняються за явкою. Як і вказав Літописець, я задав нормальний розподіл дільниць за явкою. Для цього за допомогою формули «=0,6+RndNormal(0;1)» я отримав нормальний розподіл навколо величини 0,6 (60% явки). Вийшло ось що.
[IMG_2]
Розподіл 1000 дільниць за явкою на них, використане при моделюванні
Потім для кожного стовпця, що відповідає дільниці, я задав функцію, при якій на ній «голосує» відповідна явці частка з десяти тисяч виборців. Наприклад, якщо на дільниці голосує 60% виборців, функція стовпця така: «=(Rnd(1)<0,6)*Party». Цей механізм призводить до того, що ймовірність потрапляння виборця на дільницю не залежить від того, за яку партію він голосує: у кожній клітинці обчислюється випадкове число (від 0 до 1), яке порівнюється з пороговим значенням.
Ну а далі зовсім просто. Залишилося підрахувати, скільки голосів на кожній дільниці віддано за кожну партію. Нижче — розподіл кількості голосів, відданих за умовну партію, названу PZiV, якій відповідало 49% голосів у загальному пулі виборців.
[IMG_3]
Розподіл 1000 дільниць за кількістю голосів, отриманих партією, за яку голосує 49% виборців
Ці дані — моя відповідь для bjaka_max. Якщо ймовірність приходу на дільницю виборця не пов'язана з тим, за яку партію він голосує, розподіл прагне до нормального. До речі, саме це я відразу вказав у своїй статті. Щоправда, там я це вказав умоглядно, виходячи зі свого розуміння статистики. А зараз я показав, що модель, побудована на зазначених припущеннях, породжує саме такий розподіл, як я і припускав.
А як відсоток голосів за партію-лідера пов'язаний з відсотком явки? Теж саме так, як я і припускав.
[IMG_4]
Залежність відсотка голосів, отриманих партією, за яку голосувало в середньому 49% виборців, від явки на дільницях
Чим вища явка, тим ближче результат до середнього (закон великих чисел позначається). Але в тому випадку, якщо явка збільшується не за рахунок прихильників якоїсь однієї партії, вона не зміщує в якомусь певному напрямку частку голосів, отриману кожною партією. Я так і знав.
Ну от, а це вікно показує неспроможність висновків Літописця. А чому у нього вийшло інакше? Не знаю, треба дивитися, як він задавав формули. Моя версія така. Літописець писав: «Суто гіпотетично будемо вважати, що в нашому віртуальному світі є три нерівнозначні за популярністю партії: партія 1, з числом прихильників у 7 відсотків, партія 2, з числом прихильників у 23 відсотки, партія 3, за яку голосують всі інші». Я припускаю, що Літописець використовував алгоритм, при якому на дільницю спочатку приходять послідовники першої партії, потім — другої, і лише після них — третьої. А висновки, зроблені в попередньому пості, все-таки, як видається, підтверджуються... Мабуть, треба на всякий випадок уточнити, що я зробив їх далеко не першим. Після публікації моєї першої статті прочитав інші, більш якісні джерела матеріалу на цю тему: у «Троїцькому варіанті», «Esquire», чудовий ресурс з українських виборів. Ні на який пріоритет не претендую, але все ж радий, якщо вніс лепту в популяризацію такого підходу.
P.S. За посиланням читача В.П. знайшов тут: https://komelsky.livejournal.com/182941.html чудову фотографію. Відтворюю. Дивно: я теж чомусь більше вірю Гауссу, ніж Чурову чи Ківаловому...
[IMG_5]