В последнее время появляется все больше и больше аналитических обзоров результатов выборов, которые рассматривают их с точки зрения законов статистики и направлены, как правило, на изучение необычных явлений, сигнализирующих о возможных фальсификациях (см. "Гаусс против Чурова" и т.п. публикации). Думается, только что завершившиеся выборы президента США (подсчет голосов еще продолжается, причем беспрецедентно длительное время) дадут дополнительный толчок развитию этой "электоральной математике".
Постановка задачи
Так получилось, что, начиная с 5 ноября, я стал следить за промежуточными результатами подсчета голосов в штате Джорджия. Тогда было посчитано 95% голосов, соотношение было 49.6/49.1 в пользу Трампа, т.е. он был впереди на полпроцента. Исключительно из демонстрационных соображений (а я делаю разный образовательный контент и читаю лекции студентам), я решил оценить вероятность того, что штат "перевернется", т.е. окончательный результат будет в пользу Байдена. Собственно, 5-го ноября я начал стримить свои расчеты, но потом отвлекся и прекратил эфир, зато запись с исходными данными осталась. Когда я начал писать эту статью, в 9 утра ЕТ 6-го ноября, было посчитано 99% бюллетеней, соотношение голосов на этот момент вы видите на заставке, а текущие результаты вы можете сами посмотреть на сайте CNN, откуда я и беру данные. К слову, на момент публикации этой статьи, через двое суток, т.е. 9 утра ЕТ 8-го ноября, окончательных результатов все еще не было, а на табло по-прежнему отображались 99%, но с еще более убедительным результатом в пользу Байдена.
Естественной моделью, которую я решил взять за основу, была модель независимых испытаний, т.е. классическая схема Бернулли. Проводя аналогию между выбором каждого из оставшихся 100 тыс. избирателей (за Трампа - за Байдена) и 100-тысячекратным бросанием монеты (орел - решка), я собираюсь оценить упомянутую вероятность победы Байдена в Джорджии. Недействительные бюллетени и голоса в поддержку других кандидатов учитывать не будем. Трампа в России любят больше, поэтому давайте условимся считать голос за него успехом (х=1), а голос против - неудачей (х=0). Сразу хочу сказать, что в этой статье мне не хочется обсуждать политику и делать какие-либо выводы о фальсификациях и т.п., а посвятить ее зарисовке моделирования схемы Бернулли в Mathcad Express.
Схема Бернулли: модель Монте-Карло
Итак, давайте считать, что голос каждого избирателя в Джорджии похож на бросание монеты, благо вероятность успеха (за Трампа) или неудачи (за Байдена), если судить по посчитанным 95% бюллетеней, практически равны. Давайте, следуя методам Монте-Карло, сгенерируем вектор х из N=1000 случайных чисел, каждое из которых (0 или1) добавляется в выборку с равной 50%-й вероятностью:
В предпоследней строке выведены первые несколько компонент вектора х, а в последней - выборочное среднее (которое близко к математическому ожиданию 0.5).
Это пока "модель поведения одного избирателя". А если мы хотим добавить еще одного, т.е. промоделировать двукратное бросание монеты, то можно генерировать не одно, а два псевдослучайных числа: х1 и х2, а судить о выпадении того или иного количества успехов и неудач мы можем, просто вычисляя сумму этих чисел х=х1+х2. Например, вот так будут выглядеть векторы х1, х2 и х для N=10 двукратных бросаний:
Для того чтобы автоматизировать расчет частоты выпадения, к примеру, двух успехов (1+1), надо просто подсчитать количество двоек в векторе х. Сделать это можно при помощи условного оператора if, который доступен в бесплатном Mathcad Express.
Многократное бросание монеты в Mathcad Express можно организовать проще, без привлечения переменных х1 и х2, сразу считая х при помощи той же встроенной функции rbinom(N,M,p)
, где M-число бросаний, а p=0.5 - вероятность успеха:
Моделируем выборы
Теперь все готово для решения основной задачи. Мы можем запросто смоделировать поведение М=250000 избирателей в штате Джорджия и посчитать искомую оценку вероятности, т.е. среднюю частоту событий x<A. Данные на начало дня 05.11 на сайте CNN выглядели так
За Трампа было подано T=2 429 783 голоса, а за Байдена B=2 406 774, т.е. соответственно 50.24% и 49.76% соответственно (прочие голоса, ни за Трампа, ни за Байдена не считаем). Т.е. всего на тот момент было посчитано около 5 млн голосов, т.е. 95% бюллетеней. Поэтому можно считать, что осталось посчитать оставшиеся 5%, т.е. примерно 250 000 бюллетеней. Разрыв между Трампом и Байденом составлял 2 429 783 - 2 406 774 = 23 009. Иными словами, нам надо оценить вероятность того, что число успехов на выборке по М=250 000 бросаниям монеты будет на 23 тыс. меньше, нежели неудач. В наших обозначениях, надо установить с какой вероятностью х не превысит А = 250 000 / 2 - 11 500 (тогда разрыв между 125+11.5 тыс. и 125-11.5 тыс. будет как раз не меньше 23 тыс.).
Если взять объем выборки N=10 млн испытаний, то генератор псевдослучайных чисел Mathcad не дает ни одного случая x<A, т.е. оцениваемая вероятность победы Байдена (если верна модель Бернулли) получается ничтожной.
Если снизить (ради любопытства) А в 10 раз и попробовать посчитать среднюю частоту события x<A/10, то из миллиона испытаний оно выпадет всего 1-2 раза:
Аналитические оценки
Модель Бернулли хороша тем, что для нее известны аналитические формулы вычисления подобных вероятностей. В частности, рассматриваемую задачу можно решить при помощи интегральной теоремы Муавра-Лапласа, которая дает тот же порядок вероятности (одна миллионная для условия x<A/10):
Но об аналитических формулах для схемы Бернулли в следующей статье. А эту я завершаю в час ночи 09.11.2020 по московскому времени (соответствует 15 часам ET 08.11 в США). А читатель сам может оценить вероятность исхода, который в итоге реализуется, по скриншоту с сайта CNN. На нем цифры 99% показывают нам и всему миру, что "последнюю милю" никак не удается пройти, и несчастный 1 процент бюллетеней в Джорджии стоит насмерть и до последнего сопротивляется расчетам.