среда, 24 октября 2012 г.

МММ - продолжение расследования

Для начала немного ссылок:

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

Сначала, построим математическую модель.
В обычной ситуации избиратель голосует за i-го кандидата с вероятностью pi.
В ситуации, когда есть голосование по спискам, вероятность получения кандидатом голоса трансформируется в a * pi + (1-a) * qi (qi здесь близко к 1 для кандидатов из списка, и близко к 0 для остальных)

То есть, мы имеем дело с обычной смесью распределений. И известный EM-алгоритм позволяет разделить эту смесь на части.

Алгоритм достаточно несложно реализуется. На выходе имеем ~17900 МММ-голосов (в среднем 40.6 голосов на человека) и ~63800 нормальных голосов (в среднем 26.55 голоса на человека). Удивительным образом алгоритм восстанавливает список МММ. А также даёт очищенные вероятности голосов за разных кандидатов.

Сравнение же полученных результатов с официальными итогами выборов хочется оставить на лёгкой развлечение читателю :)

Upd: не могу не поделиться новыми гистограммами распределения голосов после очистки МММ-ов. Система координат всё та же - процент голосов отданных за i-го в упорядоченном списке кандидата. Сверху чистые голоса, снизу МММ-голоса.

понедельник, 22 октября 2012 г.

А был ли вброс от МММ на выборах КС ?

2 гистограммы
  1. верхняя - распределение голосов при учёте всех избирателей
  2. нижняя - распределение голосов если выкинуть МММ-ов

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

На мой взгляд, видно, что организованное голосование было и чистка идентификаторов помогает его частично нивелировать (хоть и не полностью)

понедельник, 31 августа 2009 г.

Теория вероятности на практике

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

#!/usr/bin/env python
import random

class Coin(object):
def __hash__(self):
self.__dict__.setdefault("hashvalue", random.randint(0, 1))
return self.hashvalue

def __eq__(self, o):
return True


def Experiment(seriesLength):
expCount = 1000
p = 0
for eindex in xrange(expCount):
p += len(set(Coin() for _ in xrange(seriesLength)))
return 1.0 * p / expCount

if __name__ == "__main__":
for c in xrange(15):
print "%s:\t%.5f" % (c, Experiment(c))

понедельник, 13 апреля 2009 г.

понедельник, 16 марта 2009 г.

понедельник, 2 марта 2009 г.

трехмерные проекции на фасадах зданий

первая запись

От первой записи в блоге традиционно ждут ответа на вопрос: "о чем же будет этот блог". Я пока и сам не могу ответить на этот вопрос, но однозначно ответ появится здесь рано или поздно :)