Чемпионы по округлению. Выборы 2018

Mar 21, 2018 22:16

По той же методике, что и в записи о выборах 2016 г., сравнил ожидаемое и действительное число участков с практически целыми процентами явки в регионах России. Отклонение количества этих участков от ожидаемого с высокой вероятностью характеризует недобросовестный подсчет голосов и внесение в протоколы чисел, подсчитанных на калькуляторе, хотя, ( Read more... )

Leave a comment

tov_y April 2 2018, 07:55:05 UTC
Хабаровский кр. - круглое число выданных бюллетеней, Тыва и Тюменская обл. - целый процент результата власти.
Только я тут подумал… А нифига все эти характеристики не гауссовы. Всё-таки, чтобы дотянуть биномиальное распределение до нормального на хвостах, нужны выборки чудовищных объёмов. Так что, хотя качественно картина фальсификаций сохраняется, но количественно уровни значимости, полученные что по Пирсону, что по Гауссу, недостоверны.
P.S. С картами - не ко мне. Я их не умею читать и поэтому не люблю.

Reply

vsvor April 2 2018, 10:02:01 UTC
Тогда и проще, и правильнее считать сумму хвоста биномиального распределения. Для 329 из 1609 сумма будет 10^(-35), а из аппроксимации нормальным ~10^(-43).

Reply

tov_y April 2 2018, 10:22:26 UTC
Как Вы вероятность вычислили? Прямым суммированием или нашли библиотеку, которая умеет неполную бета-функцию при таких жутких аргументах?
UPD: И действительно, 10^-35, но это ещё поди посчитай :(

Reply

vsvor April 2 2018, 10:45:13 UTC
Суммированием. В питоне длинная арифметика легко подключается.

import mpmath as mp
import math
from math import factorial as fact

def bin_sum(n,k):
mp.dps = n
p = mp.mpf(0.1)
q = mp.mpf(0.9)
s = mp.mpf(0.0)
for i in range(k,n+1):
s = s + p**i*q**(n-i)*fact(n)/fact(i)/fact(n-i)

return s

Reply

tov_y April 2 2018, 11:17:58 UTC
Хорошо, когда машина вот прямо так умеет считать факториал…
Но жутковато - такая и человечество поработить может ;)

function BinomialProbGE(Successes, Attempts: NativeInt; Probability: Double): Double;
var R, V: Double; i: NativeInt;
begin
R := Ln(1/Probability - 1); V := Attempts*Ln(Probability); Result := 0;
for i:=Attempts downto Successes do begin
Result := Result + Exp(V);
V := V + R - Ln((Attempts+1)/i-1);
end;
end;

Reply

vsvor April 2 2018, 11:23:27 UTC
Да уж, вспомнил, как лет 15 назад с учениками считали длинные биномиальные коэффициенты на турбо паскале. :)

Reply

tov_y April 2 2018, 11:26:48 UTC
Да, есть такое развлечение - охотиться за простыми множителями в записи факториалов числителя и знаменателя, добиваясь полного взаимного уничтожения. Но здесь у нас цепочка слагаемых, так что при переходе к следующему просто на одно целое делим, на другое - множим.

Reply

vsvor April 2 2018, 11:37:10 UTC
Хороший способ. Вот так машины и развращают человечество: мой код через интерпретатор работает меньше секунды, несмотря на чудовищный объем лишних вычислений.

Reply


Leave a comment

Up