Привет всем любителям смотреть на бесполезные графики!


Я несколько раз слышал мнение людей, разбирающихся в музыке, о том, что слушатель необъективен к тембру исполнителей.


В том числе утверждается, что на наши предпочтения влияет пол вокалиста. Если очень грубо, то "мальчики при прочих равных больше любят слушать девочек, и наоборот".


Кажется, это одно из таких утверждений, проверка которых на реальных данных совершенно бесполезна в жизни, но страшно интересна.


Если вы придерживаетесь той же точки зрения — добро пожаловать под кат!


Формулировка гипотезы


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


Первая идея


Отлично. Где брать данные? Первой мыслью было посмотреть гендерный состав фанатов на фотографиях концертов соответствующих групп. Идею пришлось забраковать из-за социального фактора — на концерты принято ходить компаниями, в том числе парами. Да-да, все эти шутки про печальных мужей на концерте Стаса Михайлова.


Кстати, Стас Михайлов как исполнитель, которого слушают в основном женщины, — отличная первая контрольная группа. В качестве второго контроля была выбрана группа "Корни". Не спрашивайте меня почему.


Вторая идея


Далее была высказана мысль о том, что приемлемым индикатором может быть гендерный состав сообществ социальной сети "Вконтакте".


И правда


  • сообщества там не имеют особых социальных ограничений, вступление в группу чаще всего происходит нажатием одной кнопки
  • аудитория в соцсети в основном русскоязычная
  • у части пользователей есть бонус в виде анкеты «Любимая музыка», на которой можно проверить дополнительные гипотезы
  • у ресурса неплохой публичный API, которым можно пользоваться «из коробки»
  • и самое главное, мне давно хотелось этот API «пощупать»

А это значит, что есть план!


  1. Выбираем какой-то список сообществ музыкальных коллективов
  2. Подтягиваем пользователей этих сообществ
  3. Для каждого пользователя вытягиваем его пол и анкету
  4. Собираем данные вместе и смотрим, что из этого выйдет

Работа с API


У контакта оказалось очень приятное API с вменяемой документацией. Просто бери и тащи.
Если кратко, то алгоритм такой:


  1. Авторизуемся на vk в браузере
  2. Идём на https://vk.com/apps?act=manage
  3. Регаем приложение (лично я выбрал Standalone-приложение, возможно, не надо так)
  4. Идём в настройки приложения
  5. Записываем его ID
  6. Идём по мудрёной ссылке, в тело которой добавляем свой ID
  7. После редиректа в урле видем acces token, по умолчанию живёт сутки
  8. Наслаждаемся, но не забываем про уровни доступа и лимиты
  9. Для деталей читаем документацию

Как-то можно сделать так, чтобы токен за сутки не "протухал", но я не стал этим заморачиваться.
По доступу всё просто — через 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

Гендерное распределение поклонников тех или иных групп в сообществах "Вконтакте" на случайной выборке примерно в 1000 участников с доверительными интервалами.
По горизонтальной шкале распределение:
отрицательные значения — преобладают девушки
положительные — преобладают юноши
начало координат — соотношение "50 на 50"
Группы отсортированы по полу основного исполнителя (сверху "мужские", снизу "женские", водораздел Корни-Земфира).


Для тех, кто больше любит таблицы:


group_gender: 1 — девушки, 2 — юноши


mean: отрицательные значения — доля девушек больше, положительные — доля юношей больше




Что мы можем из всего этого сказать?


Во-первых, оба контроля пройдены. У нас было ощущение, что Михайлова и группу "Корни" больше слушают женщины. Так и вышло, их показатели оказались схожи.


Во-вторых, репрезентативность выборок для наших целей оказалась приемлемой. Явная неопределённость оказалась только у одной группы ("Сплин", "усы" пересекают "ноль"). Возможная неопределённость — тоже только у одной ("Nautilus Pompilius", "усы" пересекли бы "ноль" на более строгом уровне значимости).


В-третьих, зависимость и правда есть. Только противоположная той, которая утверждалась. Все группы с женским вокалом (5 из 5) имеют преимущественно женскую аудиторию. Доля женщин-любителей Сургановой почти вдвое выше доли женщин-любителей Михайлова. Среди "мужских" групп в целом, есть преобладание мужской аудитории, хотя встречаются как коллективы, не имеющие практически никакого полового дисбаланса ("Сплин", "Нау", "Чайф"), так и имеющие преимущественно женскую аудиторию ("Би-2", "Мумий Тролль" и, внезапно, "Пикник"). Интересно.


А что с анкетой?


Анкета "Любимая музыка" в контакте — произвольное текстовое поле, так что там всякое писали. Если честно, сложных закономерностей я вытащить не смог.


Базовая гипотеза "название группы в топе быть должно" в целом подтверждается. Если чуть-чуть поработать с токенами, то можно выделить "расстояние" между родственными группами. Но до пола просто так не дотянуться.


Так что просто полюбуйтесь на топ в виде облаков слов:


Много картинок

Любители Нау ценят Сплин, Агату Кристи и множество зарубежных групп.



Поклонники Михайлова немногословны и "неожиданно" ценят шансон



Поклонники "Алисы" чаще других указывают списки групп. В топе "Ария" и "Кино", несмотря на сложные отношения между фанатами этих групп.



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



Любители "Сплина" ценят Земфиру и ДДТ.



У фанатов "Пилота" интересна популярность частицы не. "Кукрыниксы", "КиШ" и "Ария" в топе.



Любители ДДТ очень солидарны к питерскому року: "Алиса", "Аквариум", "Пикник", все.



Фанаты "Би-2" любят цифры. Из этого облака узнал о группе "Насквозь".



Связь любителей Сургановой и Арбениной ожидалась и подтвердилась.



А вот "снайперы" "оркестр" не жалуют, они больше по Земфире со "Сплинами".



Фанатов Цоя больше тянет слушать англоязычную музыку.



"Мумий-тролли" неохотнее всех указывают что-то в анкете



Про отсылки Земфиры к "Radiohead" знают не только музыкальные критики.



Любительницы "Мельницы" отдают должное другим представителям фолка, "Пикник", "Кино" и "Ария" в фаворитах.



"Арийцы" чаще упоминают других представителей металла.



Фанаты группы "Корни" обладают какой-то очень альтернативной логикой.


Из конструктивной части на сегодня всё. Исходный код доступен всем желающим.


Если вам хочется ещё что-то посмотреть на этом датасете — пишите в комментариях.


Прошу не воспринимать это "исследование" более серьёзно, чем оно того стоит. Это не более чем утоление любопытства и эксперименты с новыми для меня инструментами.