?

Log in

No account? Create an account
Фальсификация голосования на сайте РОИ: обсуждение - Alexey Kruglov — LiveJournal
June 4th, 2013
09:32

[Link]

Previous Entry Share Next Entry
Фальсификация голосования на сайте РОИ: обсуждение
Тут предполагается выкладывать что нарыто про голосование на сайте РОИ. Ещё сейчас выложу комментами свои личные сообщения про голосование на РОИ. Эту запись предполагается пока подержать под замком, а потом сделать открытой через 1--2 недели где-нибудь,-- чтобы не спугнуть организаторов вброса голосов раньше времени.

UPD 21.06.2013: снял замок с этого сообщения. Потихоньку копаю статистику, чего-нибудь нового более (или, хотя бы, не менее) очевидного, чем аргументы из http://leonwolf.livejournal.com/500500.html пока не нашёл.

Tags: ,

(9 comments | Leave a comment)

Comments
 
From:a_kruglov
Date:June 4th, 2013 05:37 (UTC)
(Link)
Здравствуйте.

Спасибо, что отвечаете на вопросы у меня в ЖЖ.

Ваш последний ответ "A A" я скрыл, потому что "A A" совсем уже скатился к вопросам, по сути, об организации фальсификации. Выглядит, как бутдо он настойчиво хочет выяснить точные границы чувствительности метода. Поэтому лучше его не информировать об этом [...]. Конкретно я ваше сообщение скрыл из-за первого абзаца, где вы пишите, что после 23 мая всё равно видно артефакты. Это может его подтолкнуть изменить параметры вброса. Пусть лучше считает, что |u_i-1|<0,8 -- это достаточно и что его вбросы с 24 мая не видно. Идея, что неполадки сервера мешают смортеть тоже потенциально опасная, хотя с другой стороны она уже была высказана много раз.

Вот ваш текст на случай, если вы потеряли к нему доступ:
===
> В связи с этим я не совсем понимаю, зачем нужны все эти преобразования в данном конкретном случае, если мы просто хотим выделить все эти всплески? И найти список интервалов времени, когда они были?

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

Вы совершенно правильно настойчиво поднимаете вопрос о количественном измерении этого отличия. Но измерение этого отличия - это гораздо более сложная задача. Во-первых, нужно устранить из выборки события, для которых простейшая модель честного голосования не работает заведомо, например, сбои сервера. Во-вторых, добавить в модель естественную скорость изменения лямбды. После этого, возможно, удастся оценить вероятность появления наблюдаемой статистики и получить численный ответ на вопрос о подтасованности того или иного голосования. Это всё большая работа, которую вы, я надеюсь, проделаете, и расскажете нам, насколько всё плохо в процентах. Но для качественного ответа на вопрос о честности приведенных данных по голосованию приведенных графиков более чем достаточно. По ним можно сказать, что, с одной стороны, простейшая модель честного голосования адекватна голосованию по Навальному, так как s колеблется вокруг единицы почти везде, за исключением редких экстраординарных событий, причина которых находится вне обсуждаемой модели но разумно объяснима. А с другой стороны, что простейшая модель честного голосования сильно неадекватна голосованию по промилле почти везде, и единственная разумная причина этому, которую можно придумать, с учетом адекватности модели данным по Навальному - это что данные подтасованы.
===

Мне кажется, тут не содержится ничего, кроме того, что 1) уже говорилось, и 2) не стоит сообщать "A A". Извините за скрытие сообщения, надеюсь, вы понимаете.

У меня есть идея применить EM алгоритм для классификации 10-минутных интервалось по лямбдам. Так, думаю, можно будет учесть и изменение лямбды, и неполадки сервера. Ещё я обнаружил, что в размере столбиков есть предпочтение числам 10, 20, 30, но есть и промежуточные. Т.е., похоже, решение о размере столбиков принимал человек. При этом разницы между выходными и рабочими я на глаз не заметил. "A A" всё писал с одно и того же домашнего IP: и в пятницу днём, и в субботу утром. По времени его комменты были с ~13:30 до ~3:00.
(Replies frozen) (Thread)
From:a_kruglov
Date:June 4th, 2013 06:12 (UTC)
(Link)
Здравствуйте.

[Вопрос, думаю ли я, что "A A" -- реализатор вбросов.]

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

[О наблюдаемости вбросов после 23 мая.]

Ага. Судя по графику разности голосов за Навального и промилле, левые голоса идут примерно в тех же масштабах и после 24 мая. А из разглядывания приростов в числовом виде понятно, что они стали набрасывать просто меньшими порциями и чаще. Особенно это ночью хорошо видно, когда фоновых настоящих голосов мало.

Про набор статистики -- тут желательно, чтобы метод вброса они поменьше меняли. Новая инфа может спровоцировать их менять.

Слабой стороной их метода является то, что у них, похоже, либо есть вброс в интервале, либо нет. Т.е. они не включают его плавно. У меня кроме ещё была идея такая: брать n значений подряд, скажем, 6. Сортировать их, и брать m минимальных. По ним методом максимального правдоподобия, например, восстанавливать λ. Потом построить графики от времени для разных m, и сравнить. Это задача решаемая -- ФР для m-й по величине из n с.в. можно найти из ФР для этой с.в., мне кажется. Это относительно наглядный метод, но на него всплески от рекламы должны плохо влиять -- он им будет резать фронты и записывать во вброс. Я собираюсь сначала заняться другой идеей, о которой я писал.

[Утверждение, что скринить коммент смысла нет, т.к. о нём всё равно должно было прийти оповещение на почту.]

Я понадеялся, что внешним пользователям не ходят уведомления по почте. Так ли это я не знаю. Сейчас вот подумал, что ответ может валять у него в Inbox в LJ -- вроде, это по умолчанию включено. Хотя, когда я сам удаляю смаперские комменты, они и в Inbox в LJ удаляются тоже, там остаётся "Deleted comment".

[Про статистику размеров ступенек.]

Я вот это как раз и сделал -- я же писал, что ступеньки в 10, 20, 30 встречаются несколько чаще остальных. Я не говорю, что другие не встречаются, просто они реже. 10 вообще хорошо видно, 30 тоже хорошо, но немного хуже, 20 видно не всегда, но если бин потолще и ограничение на disp (см. ниже) послабее, что-то виднеется. Ещё после 30...35 завал -- таких сильно меньше, но я учитывал только такие столбики, у которых слабый честный фон (я фон вычитал, но с ростом фона больше его дисперсия). Фальшак у них суммируется с настоящими данными, я думаю. Про это у меня, вроде, никаких аргументов особых нет, просто думаю, что так им естественнее делать.

[Мысли про выделение ступенек.]

Вот как я выделял фальшивые столбики, чтобы смотреть статистику их размеров:
cst=(cv+ppv-2*pv)**2 /3./(cv+ppv+1)
slope_st = (cv-ppv)**2/(cv+ppv+1)
disp = (cv+ppv)/2.
d = pv - (cv+ppv)/2.

if(d>0 && cst>5 && slope_st<2.5 && disp<=2) cst=d; else cst=0
Тут cv, pv, ppv -- три последовательных прироста с одинаковыми интервалами времени по 10 минут. cst -- размер столбика. Числами 5 и 2 можно поиграть, ещё размером бина для cst тоже.

[Про почти одновременные ступеньки в голосованиях по разным инициативам]

Вы, случайно, не знаете, данные по другим инициативам кроме машин и промилле можно выкачать с этого сайта, откуда скриншот? Я у них сразу не нашёл такой возможности.

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

... (не влезло в один коммент)
(Replies frozen) (Parent) (Thread)
From:a_kruglov
Date:June 4th, 2013 06:12 (UTC)
(Link)
... (окончание)

[О ступеньке, разбитой пополам]

Я их (пар) нашёл потом довольно много, разглядывая числа приростов (в alcho.dat у меня). 24, 25, 26 апреля есть такое. 4 мая идут 10 и 20 подряд на фоне 0...1. 21 мая тоже есть. 22 мая идёт много тацих пар подряд, но интервал между ними колеблется -- из-за этого я думаю, что это не вброс разбился между интервалами, а два одномоментных вброса в соседних интервалах: потому что так много раз подряд при переменном интервале не должно само разбиваться.

Ещё я не совсем понимаю что с периодом обновления данных на сайте. Он 5 минут или 10 минут? 5-минутные данные были бы лучше.
(Replies frozen) (Parent) (Thread)
From:a_kruglov
Date:June 4th, 2013 06:16 (UTC)
(Link)
Здравствуйте.

Я сейчас постараюсь коротко написать.

1. [...] Я хочу сделать подзамочный пост [...], засунуть всё это туда и продолжить там. Чтобы можно было потом все эти обсуждения легко открыть где-нибудь через неделю-другую, когда будет побольше статистики, уже не опасно спугнуть и ближе к 100000. А то получается какая-то писанина в стол. [...]

2. После 24 мая (или даже раньше) они сделали-таки автоматический вброс. Доказательство -- суммарный суточный профиль приростов с 26 мая. Я брал только полные сутки: 28 и 29 мая исключены, последний неполный день тоже.
http://s019.radikal.ru/i644/1306/9b/ec6ad40c3797.png
Они включают свою машинку теперь каждый день в 12:30. Если смотреть отледбно по дням, это тоже видно. До этого, вроде, начинали в разное время. В часть дней профиль довольно точно прямоугольный. На картинке k=0.36.

3. Теперь, похоже, у них вбросы каждый 10-минутный интервал днём. Ночью, похоже, нет. Так что те две мои идеи не сработают (хотя в одной из них я продвинулся, но для старых вбросов она работает не лучше, чем то, что было, а для таких новых работать нормально и не должна.) Зато есть новая хорошая с усреднением профилей -- это улучшает временное разрешение. Можно, например, ещё s_i поусреднять. Бины сделать потолще. Поискать ВЧ корреляции между фальшивыми голосами и голосами за Навального, посмотреть как это различается днём и ночью.
(Replies frozen) (Parent) (Thread)
From:a_kruglov
Date:June 4th, 2013 06:25 (UTC)
(Link)
Добавлю теперь ещё, что у "A A" в его видео на YouTube обнаружилось одно старое анти-ЕР видео. Это небольшой аргумент против того, что он реализатор вбросов. Есть ещё более слабый аргумент в другую сторону: его комменты были в то же время, как и вбросы, т.е. они оба сидят по ночам. Но программист из РОИ всё равно мог читать ответы на его вопросы, так что по сути никакой разницы нет, он это или не он.

Ещё добавление: значение k=0.30 сейчас мне кажется более точным. И то, и другое значение получено на глаз, но второе несколько более точным способом.

Edited at 2013-06-04 06:26 am (UTC)
(Deleted comment)
From:a_kruglov
Date:June 5th, 2013 06:01 (UTC)
(Link)
Ссылки я брал из ЖЖ leonwolf. Они ещё есть в Makefile в том архиве, в котором вы брали файлы. Если у вас есть make и wget, *.csv файлы могут автоматически при их отсутствии скачиваться по команде "make имя-файла". Если есть ещё и awk, то файлы *.dat могут ещё и автоматически пересчитываться аналогичным способом.

Про то, что фальсификационную машинку включают только автоматически и ровно в 12:30 я уже не так уверен: 31 мая её включили заметно раньше. Но всё равно фронт включения в некоторые дни выглядит слишком резко, чтобы быть естественным. Надо посчитать более объёмную и точную статистику моментов включения, а не на глаз определять.

Удобно пользоваться оценкой, что 0.30 от голосов за машины идут и за промилле. Это (на глаз) подтверждается значениями приростов между часовыми пиками до 23 мая + ночными приростами после 23 мая.

Ещё хороший аргумент за фальсификации после 23 мая, что часовые ступеньки исчезли, а скорость роста голосов за промилле не изменилась.

Ещё попробовал усреднять s по нескольким суткам и строить суточный профиль. Получается не так нагладно, как при усреднении самих приростов.
(Deleted comment)
From:a_kruglov
Date:June 8th, 2013 21:23 (UTC)
(Link)
Я тоже поковырялся с разными корреляциями -- ковариациями -- регрессиями.

Исходно идея была такая: по графику разности голосов видно, что общее число голосов за сутки за одну и другую инициативу довольно точно совпадает. При этом по ночным приростам, когда нет вбросов, видно, что только 30% голосующих за машины голосуют и за промилле. За ночь набирается отставание, которое днем гасится вбросами + ещё набрасывается, выходит, допольнительно 70% от голосов за машины, чтобы получилось одинаково. Вот меня и интересовал вопрос с какой задержкой они добрасывают оставшиеся 70% голосов, и вообще по какому принципу они выбирают когда сколько набрасывать. В идеале хотелось получить какую-то картинку, где было бы хорошо видно, что вот 30% перешедших от Навального, а вот 70% наброшенных.

Для этого всего лучше исползовать не коэффициент корреляции, который Cov[x,y]/sqrt(Dx*Dy), а коэффициент пропорциональности из линейной регрессии k=Cov[x,y]/Dx -- это k, который получается, если аппроксимировать y=k*x+b+шум. У нас x -- голоса за машины, y -- голоса за промилле. Я строил зависимость k от задержки y от x. Получилось вот что: при задержке 0 k=1 очень точно (k=1,00129). Это совершенно нетривиальный факт: например, если строить регрессию в обратную сторону: машины от промилле, то получается k=0,7 при задержке 0 (у промилле и дисперсия больше).

Чтобы получить k=1,00 пришлось сначала допереть до двух вещей. 1) Надо рассматривать только часть данных, где есть наброс. А то, если брать и ночные, и дневные данные и пытаться описывать их вместе, получается бред. Так что я брал только часть суток от 13:12 (это 0,55 от суток) до полуночи и начиная с 26 мая. 2) Надо аккуратно везде удалять данные, которые не за 10 минут или которые отсутствуют. У меня сначала это делалось не всегда корректно, из-за этого сначала получалось неправильно.

То, что k=1, даёт некоторую информацию о методе вброса. Эта гипотеза сначала возникла из рассматривания графиков приростов машин за час и фальшивых приростов промиле за час (это из приростов промилле вычесть 30% от приростов машин) -- у них максимумы и минимумы часто соосветствуют с задержкой от 0...10 минут и ещё есть сдвиг по вертикали. Так что, видимо, алгоритм примерно такой: вбрасывается (разница между приростами голосов за машины и за промилле) + (сдвиг, регулируемый руками) + рандом. Такое аддитивное вхождение голосов за машины в голоса за промилле при задержке 0, как раз может объяснить k=1 при задержке 0. Ещё такой аглоритм объяснил бы и то, почему часто получаются такие ровные прямые зубцы на графике разности голосов за эти две инициативы: если сдвиг не трогать целый день, зубцы будут прямыми (линейными).

Картинки как-нибудь в другой раз нарисую, а пока ещё поковыряюсь. Например, можно попытаться выковырять статистику их аддитивного рандома. Или график сдвига построить. Или понять как должны влиять настоящие голоса от Навального, которые приходят на промилле с задержкой в 10 минут, на график k от задержки. Или посчитать все те же вещи для ночного периода без вбросов и сравнить.

P.S.: нет, всё-таки такая реконструкция алгоритма не всё объясняет. Она не объясняет откуда берётся повышенная k (она чуть меньше 1) при задержке промилле на 10 минут от машин. И ещё забыл сказать, что на графике k виден небольшой пик при задержке около 1,16...1,33 часа. Хотя это может быть и не пиком, а наоборот провалом на задержках до часа. На авторегрессионной кривой для промилле тоже видно этот пик (в данных начиная с 26 мая!), а на такой же кривой для машин его, естественно, нет.

Edited at 2013-06-08 09:57 pm (UTC)
From:a_kruglov
Date:June 12th, 2013 22:43 (UTC)
(Link)
Про k=1.00 я с нулями, похоже, погорячился. В том смысле, что такое количество нулей получилось случайно. Для проверки точности k я попробовал исключать некоторые дни, и результат при этом меняется: например, если исключить 30 мая, получается k=1,08 для сдвига 0, и k переходит через значение 1 при сдвиге около 20 минут. Т.е. точность k -- порядка 0,1, и утверждать, что k=1,00 при сдвиге именно 0, а не каком-нибудь другом, нельзя.

Ещё у них новшество: последние дни (с 9 июня по середину 11 июня) разность голосов не дрейфует в течение дня, а меняется довольно слабо при том, что 10 июня сами голоса быстро росли. И видно, что приросты голосов за промилле довольно точно повторяют приросты за машины. Зафитил эту задержку (для самих голосов, а не приростов), вышло 19 минут при разнице в 15001 голос, среднеквадратичная невязка 11 голосов.
From:a_kruglov
Date:June 13th, 2013 06:07 (UTC)
(Link)
Картинки:
10-минутные приросты голосов, по горизонтали сутки с 0 апреля:

Видно как 10 июня (t=71...72) голосование за промилле повторяет график голосования за машины. Фронт всплеска голосов отстаёт совсем немного.

Суммарные голоса. красный -- за машины, сдвинутый вниз на 15000 голосов, зелёный -- за промилле, синий -- опять за машины, сдвинутый вниз на 15001,0 и вправо на 18,6 минут.

Видно, что суммарные голоса за промилле совпадают довольно точно с задержанными и сдвинутыми голосами за машины.
Powered by LiveJournal.com