Электорально-статистическая лаборатория имени К.Ф.Гаусса Предыстория
Мягкое предложение посчитать непосредственно после продолжительной паузы встретило отказ:
vlkamov
2011-12-13 04:40 am UTC
Gnumeric - это ж таблица. 98 тысяч строк - явный перебор.
У меня есть хобби - писать на Перле скрипты решения задач, о которых много говорят, но избегают приводить реальные числа, например
http://vlkamov.livejournal.com/315109.htmlЕсли вы объясните мне, что делать, могу попробовать и ваш случай.
kouprianov
2011-12-15 02:46 pm UTC
Ой, прошу прощения, в этой суматохе пропустил. Спасибо большое за готовность помочь. Я, тем временем, разобрался с R -- мне объяснили, что на самом деле надо было делать и литературы подкинули, так что я эту штуку теперь довольно быстро сосчитал. Охочусь за данными по другим странам теперь -- для сравнения.
Не сомневался. Адресат предпочел помучиться с так и непонятым "статистическим аппаратом", зато от авторитетного "специалиста". Осталось только подобрать "специалиста" нужной ориентации.
kouprianov
2011-12-21 09:56 am UTC
Спокойствие ) Жернова божии мелют не скоро, но верно.
Напрасно Кузнецов и Каганов берут размер участка с потолка. Основная масса участков укладывается в пределы пошире -- от ~20 до ~3000. Поскольку Вы любите и умеете писать скрипты, проверьте Кагановский скрипт для области участков размером от 1 до 3 тыс., количество участков -- 40 тыс. Интересно, сохранится ли пик на 75%. Буду рад видеть картинку и пояснения.
vlkamov
Начнем благословясь
$КОЛИЧЕСТВО_УЧАСТКОВ = 40000;
$СПИСОЧНАЯ_ЧИСЛЕННОСТЬ_ИЗБРАТЕЛЕЙ_НА_УЧА
СТКЕ = 1000;
Так ?
kouprianov
2011-12-21 05:53 pm UTC
Можно ли сделать численность избирателей на участке случайной целочисленной величиной, варьирующей в пределах от 1 до 3 тыс. (N=floor(rand(1000,3000));)? Если ее проще сделать постоянной, то я бы остановился на 2000.
vlkamov
2011-12-22 06:49 am UTC
#!/usr/bin/perl
#gauss.pl
$КОЛИЧЕСТВО_УЧАСТКОВ = 40000;
foreach $i (1..$КОЛИЧЕСТВО_УЧАСТКОВ) {
$СПИСОЧНАЯ_ЧИСЛЕННОСТЬ_ИЗБИРАТЕЛЕЙ_НА_УЧ
АСТКЕ[$i] = 1000 + int(rand(2000));
}
foreach $i (1..$КОЛИЧЕСТВО_УЧАСТКОВ) {
$ВСЕГО_ИЗБИРАТЕЛЕЙ += $СПИСОЧНАЯ_ЧИСЛЕННОСТЬ_ИЗБИРАТЕЛЕЙ_НА_УЧ
АСТКЕ[$i] ;
}
print $ВСЕГО_ИЗБИРАТЕЛЕЙ, "\n";
exit;
Несколько запусков дали такие результаты
80155670
80002734
79993464
79994466
80062967
80198044
80313466
80068173
79978845
80058858
79969562
kouprianov
2011-12-22 08:00 am UTC
Нам не нужно "всего избирателей" (как и общая явка по больнице). Нам нужны явки (t=v/e) по каждому из 40 тыс. участков (каждый участок размером от 1 до 3 тыс. чел. списочного состава избирателей (e), от которого приходит какая-то случайная доля (v)) и гистограмма / частотная таблица по ним.
В каждой итерации от 1-й до 40000-й
Ei должно случайно варьировать от 1000 до 3000
Vi должно случайно варьировать от 0 до Ei
В результате хотелось бы видеть табличку в два столбика (E и V) по 40 тыс. строк каждый, или один столбик T=V/E (но и в нем -- 40 тыс. значений).
Но и это не конец. Эту операцию хорошо бы повторить, скажем, сотню раз, а затем посмотреть, что происходит с "красивыми" явками в диапазоне 0,65--1,0. Бывают ли вообще и "держатся" ли пики на значениях 0,67 0,75 0,8 и т. п. Полагаю, что человеку, "пишущему скрипты", провести все это численное моделирование и соответствующие расчеты несложно (в отличие от всех тех, кто так и не понял статистический аппарат).
http://vlkamov.narod.ru/gauss/gauss1.rupl$КОЛИЧЕСТВО_УЧАСТКОВ = 40000;
foreach $i (1..$КОЛИЧЕСТВО_УЧАСТКОВ) {
$СПИСОЧНАЯ_ЧИСЛЕННОСТЬ_ИЗБИРАТЕЛЕЙ_НА_УЧ
АСТКЕ[$i] = 1000 + int(rand(2000));
}
foreach $i (1..$КОЛИЧЕСТВО_УЧАСТКОВ) {
$КОЛИЧЕСТВО_УЧАСТКОВ_С_ЧИСЛЕННОСТЬЮ[$СПИ
СОЧНАЯ_ЧИСЛЕННОСТЬ_ИЗБИРАТЕЛЕЙ_НА_УЧАСТК
Е[$i]] ++ ;
}
foreach $i (0..5000){
$X = int ($i / 10);
$Y[$X] += $КОЛИЧЕСТВО_УЧАСТКОВ_С_ЧИСЛЕННОСТЬЮ[$i];
}
Вышеприведенным скриптом нарисована Диаграмма 1

X - списочная численность избирателей на участке, Y - к-во участков с данной численностью.
Каждый вертикальный столбец - сумма из 10 отдельных значений.
т.е. 1000..1010, 1011..1020 и т.д. до 2990..3000
Т.е. равномерное распрежделение численностей по участкам дало равномерное же распределение участков по численностям.
Сейчас сделаем два столбика. Но сразу предупреждаю, функция rand дает равномерное распределение. Реальная явка была неравномерна. Кстати, участки нарезали тоже неравномерно.
И почему 40 тысяч, ведь участков было >90 тыс. ?