![](https://habrastorage.org/webt/kp/ix/lk/kpixlkcj3muokuib45c33bef3l0.png)
Привет всем любителям смотреть на бесполезные графики!
Я несколько раз слышал мнение людей, разбирающихся в музыке, о том, что слушатель необъективен к тембру исполнителей.
В том числе утверждается, что на наши предпочтения влияет пол вокалиста. Если очень грубо, то "мальчики при прочих равных больше любят слушать девочек, и наоборот".
Кажется, это одно из таких утверждений, проверка которых на реальных данных совершенно бесполезна в жизни, но страшно интересна.
Если вы придерживаетесь той же точки зрения — добро пожаловать под кат!
Формулировка гипотезы
Итак, есть утверждение, что существует какая-то зависимость между полом основного вокалиста группы и гендерным распределением её поклонников. Утверждение основывалось на наблюдениях русскоязычных любителей музыки, в основном слушающих рок. Значит логичным предположением будет взять русскоязычных слушателей русскоязычных рок-групп, ну и разбавить их чуть-чуть какой-то контрольной группой.
Первая идея
Отлично. Где брать данные? Первой мыслью было посмотреть гендерный состав фанатов на фотографиях концертов соответствующих групп. Идею пришлось забраковать из-за социального фактора — на концерты принято ходить компаниями, в том числе парами. Да-да, все эти шутки про печальных мужей на концерте Стаса Михайлова.
Кстати, Стас Михайлов как исполнитель, которого слушают в основном женщины, — отличная первая контрольная группа. В качестве второго контроля была выбрана группа "Корни". Не спрашивайте меня почему.
Вторая идея
Далее была высказана мысль о том, что приемлемым индикатором может быть гендерный состав сообществ социальной сети "Вконтакте".
И правда
- сообщества там не имеют особых социальных ограничений, вступление в группу чаще всего происходит нажатием одной кнопки
- аудитория в соцсети в основном русскоязычная
- у части пользователей есть бонус в виде анкеты «Любимая музыка», на которой можно проверить дополнительные гипотезы
- у ресурса неплохой публичный API, которым можно пользоваться «из коробки»
- и самое главное, мне давно хотелось этот API «пощупать»
А это значит, что есть план!
- Выбираем какой-то список сообществ музыкальных коллективов
- Подтягиваем пользователей этих сообществ
- Для каждого пользователя вытягиваем его пол и анкету
- Собираем данные вместе и смотрим, что из этого выйдет
Работа с API
У контакта оказалось очень приятное API с вменяемой документацией. Просто бери и тащи.
Если кратко, то алгоритм такой:
- Авторизуемся на vk в браузере
- Идём на https://vk.com/apps?act=manage
- Регаем приложение (лично я выбрал Standalone-приложение, возможно, не надо так)
- Идём в настройки приложения
- Записываем его ID
- Идём по мудрёной ссылке, в тело которой добавляем свой ID
- После редиректа в урле видем acces token, по умолчанию живёт сутки
- Наслаждаемся, но не забываем про уровни доступа и лимиты
- Для деталей читаем документацию
Как-то можно сделать так, чтобы токен за сутки не "протухал", но я не стал этим заморачиваться.
По доступу всё просто — через API ты можешь увидеть ровно, что можешь увидеть в браузере с правами того юзера, из-под которого ты авторизовался.
Например, открытые профили и открытые сообщества видны всегда. А этого и достаточно, на самом деле.
Лимиты на число запросов достаточно жесткие, особо не разгуляешься. Но для маленьких задач вроде нашей пойдёт.
Пошла работа
Вытащить список открытых групп и данные анкеты открытых пользователей оказалось очень просто и быстро.
Первая "подстава". Пользователи сообществ грузятся порциями по 1000 штук (плюс-минус) за раз.
Вторая "подстава". Крупные сообщества состоят из 80-90 тысяч пользователей. Хорошая бигдата. Но с ограничениями API качать её придётся неделями.
В целом, для наших целей большая точность не нужна. Выборку можно "засемплировать": взять 1000 случайных пользователей группы. Если не забывать про доверительные интервалы, то на таких объёмах вполне можно жить.
Выборки по 1000 пользователей для 19 групп качаются примерно за 4 часа, так что обе проблемы решаются одновременно.
Поисковый механизм контакта сначала пытается показать моих друзей в каждой группе, но после офсета в 500 данные можно вполне считать рандомными.
С подбором групп я особо не заморачивался. Взял регулярных участников "чартовой дюжины", добрав женских коллективов для того, чтобы результаты можно было сравнивать.
Результаты
Во-первых, гендерное соотношение всей выборки оказалось смещённым — 55% любителей всех групп оказались представительницами прекрасного пола. Идеальное 50 на 50 меня бы смутило гораздо сильнее.
Мне показалось, что лучше всего картину покажет горизонтальный bar chart с нарисованными усами доверительных интервалов.
Считаем, что генеральная совокупность большая, а дисперсия её неизвестна.
Тогда, можно сказать, что для уровня значимости confidence
h = std_err * scipy.stats.t.interval(confidence, nn-1, loc=0, scale=1)[1]/math.sqrt(nn)
, где
std_err — стандартное отклонение, np.std(data)
nn — размер выборки
Т.к. мы не спасаем ничьи жизни, уровень значимости в 90% (если мы проведём 100 таких экспериментов, мы готовы ошибиться в 10 из них) нас вполне устроит.
![image](https://habrastorage.org/webt/y6/4-/zt/y64-ztxvqnhosykhwaascn_oi8u.png)
Гендерное распределение поклонников тех или иных групп в сообществах "Вконтакте" на случайной выборке примерно в 1000 участников с доверительными интервалами.
По горизонтальной шкале распределение:
отрицательные значения — преобладают девушки
положительные — преобладают юноши
начало координат — соотношение "50 на 50"
Группы отсортированы по полу основного исполнителя (сверху "мужские", снизу "женские", водораздел Корни-Земфира).
Для тех, кто больше любит таблицы:
group_gender: 1 — девушки, 2 — юноши
mean: отрицательные значения — доля девушек больше, положительные — доля юношей больше
![](https://habrastorage.org/webt/z5/ew/2c/z5ew2c5qvxwz6qm5_gqgkriipj4.png)
Что мы можем из всего этого сказать?
Во-первых, оба контроля пройдены. У нас было ощущение, что Михайлова и группу "Корни" больше слушают женщины. Так и вышло, их показатели оказались схожи.
Во-вторых, репрезентативность выборок для наших целей оказалась приемлемой. Явная неопределённость оказалась только у одной группы ("Сплин", "усы" пересекают "ноль"). Возможная неопределённость — тоже только у одной ("Nautilus Pompilius", "усы" пересекли бы "ноль" на более строгом уровне значимости).
В-третьих, зависимость и правда есть. Только противоположная той, которая утверждалась. Все группы с женским вокалом (5 из 5) имеют преимущественно женскую аудиторию. Доля женщин-любителей Сургановой почти вдвое выше доли женщин-любителей Михайлова. Среди "мужских" групп в целом, есть преобладание мужской аудитории, хотя встречаются как коллективы, не имеющие практически никакого полового дисбаланса ("Сплин", "Нау", "Чайф"), так и имеющие преимущественно женскую аудиторию ("Би-2", "Мумий Тролль" и, внезапно, "Пикник"). Интересно.
А что с анкетой?
Анкета "Любимая музыка" в контакте — произвольное текстовое поле, так что там всякое писали. Если честно, сложных закономерностей я вытащить не смог.
Базовая гипотеза "название группы в топе быть должно" в целом подтверждается. Если чуть-чуть поработать с токенами, то можно выделить "расстояние" между родственными группами. Но до пола просто так не дотянуться.
Так что просто полюбуйтесь на топ в виде облаков слов:
![](https://habrastorage.org/webt/ci/mg/pu/cimgpum799iep8wg-opu3b_yqgi.png)
Любители Нау ценят Сплин, Агату Кристи и множество зарубежных групп.
![](https://habrastorage.org/webt/kl/ya/5b/klya5bm8zfdrskwi9emc41eywe4.png)
Поклонники Михайлова немногословны и "неожиданно" ценят шансон
![](https://habrastorage.org/webt/ip/e1/ky/ipe1kytaxzjewudv5wmtb-cukni.png)
Поклонники "Алисы" чаще других указывают списки групп. В топе "Ария" и "Кино", несмотря на сложные отношения между фанатами этих групп.
![](https://habrastorage.org/webt/po/b-/d4/pob-d4tkmc_acogjgaenerojche.png)
Киша указывают меньше участники соответствующей группы. А ещё они любят много иностранных групп. И "Кукрыниксы", что ожидаемо.
![](https://habrastorage.org/webt/oz/j-/hs/ozj-hs8suqkwct8pblmbxh9g2ea.png)
Любители "Сплина" ценят Земфиру и ДДТ.
![](https://habrastorage.org/webt/op/ml/k2/opmlk2zeqqwawzgcwn_fweb2tkg.png)
У фанатов "Пилота" интересна популярность частицы не. "Кукрыниксы", "КиШ" и "Ария" в топе.
![](https://habrastorage.org/webt/ga/wt/xo/gawtxo_z9uysavrnodiwm8ynogc.png)
Любители ДДТ очень солидарны к питерскому року: "Алиса", "Аквариум", "Пикник", все.
![](https://habrastorage.org/webt/fs/if/3r/fsif3rajefl4_3et6sr8isrters.png)
Фанаты "Би-2" любят цифры. Из этого облака узнал о группе "Насквозь".
![](https://habrastorage.org/webt/nq/yj/rp/nqyjrpptemqmnjtocqvdm7optik.png)
Связь любителей Сургановой и Арбениной ожидалась и подтвердилась.
![](https://habrastorage.org/webt/mg/gd/dn/mggddntndc3akb2xzk7ujep2sjw.png)
А вот "снайперы" "оркестр" не жалуют, они больше по Земфире со "Сплинами".
![](https://habrastorage.org/webt/ub/cl/bh/ubclbhejaz0dkpte3fcdsiaiciw.png)
Фанатов Цоя больше тянет слушать англоязычную музыку.
![](https://habrastorage.org/webt/_j/zk/om/_jzkomucrebnowwknoluurbxba4.png)
"Мумий-тролли" неохотнее всех указывают что-то в анкете
![](https://habrastorage.org/webt/cv/dc/u6/cvdcu6z4om3bgiopdkr9bfbdmws.png)
Про отсылки Земфиры к "Radiohead" знают не только музыкальные критики.
![](https://habrastorage.org/webt/5o/o8/ud/5oo8udjxsxzxno0nv0iotgvjinm.png)
Любительницы "Мельницы" отдают должное другим представителям фолка, "Пикник", "Кино" и "Ария" в фаворитах.
![](https://habrastorage.org/webt/2-/fp/gy/2-fpgy0j-ykcfhr0xdxpqh1u8ay.png)
"Арийцы" чаще упоминают других представителей металла.
![](https://habrastorage.org/webt/88/2s/pz/882spzsyiawu_dubfofu6qv612c.png)
Фанаты группы "Корни" обладают какой-то очень альтернативной логикой.
Из конструктивной части на сегодня всё. Исходный код доступен всем желающим.
Если вам хочется ещё что-то посмотреть на этом датасете — пишите в комментариях.
Прошу не воспринимать это "исследование" более серьёзно, чем оно того стоит. Это не более чем утоление любопытства и эксперименты с новыми для меня инструментами.