В прошлой статье я разбирал 24 миллиона оценок из нашего приложения Rate Me (люди ставят фотографиям друг друга от 1 до 10) и показал четыре вещи: провал на девятке, мужчины занижают мужчин, страны оценивают по-разному, за сессию оценщик устаёт. В комментариях и закладках чаще всего спрашивали про возраст. Сегодня - про него, плюс один миф, который я сам считал правдой.

Сразу дисклеймер, как и в прошлый раз: это данные о поведении оценивающих, а не о том, кто «красивее». Дата рождения у нас самозаявленная, поэтому в срезах только пары, где возраст известен с обеих сторон и лежит в диапазоне 16-80. Значение 5 - положение ползунка по умолчанию, оно занимает четверть всех оценок и тянет средние вниз одинаково для всех групп, на сравнения между группами это не влияет.

1. Возраст оцениваемого: пик в 18-24 и дальше только вниз

Средняя оценка по возрасту оцениваемого
Средняя оценка по возрасту оцениваемого

Во всех четырёх парах «кто кого оценивает» максимум приходится на 18-24, а дальше средняя монотонно падает:

  • Мужчины о женщинах: 6,75 (18-24) → 6,49 (25-34) → 6,17 (35-44) → 6,04 (45-54) → 5,52 (55+). Это 6,5 млн оценок в первой ячейке - самый массивный срез датасета.

  • Женщины о мужчинах: 6,73 → 6,59 → 6,05 → 6,08 → 4,88 для 55+.

  • Женщины о женщинах: 6,51 → 6,31 → 6,02 → 5,92 → 5,22.

  • Мужчины о мужчинах: 5,71 → 5,51 → 5,28 → 4,80 → 4,35. Это самая низкая ячейка во всём датасете.

Два наблюдения. Первое: разрыв между «18-24» и «55+» - от 1,2 до 1,9 балла, это больше, чем гендерный эффект из прошлой статьи (1,14). Возраст оцениваемого - сильнейший фактор после того, кто именно оценивает. Второе: мужчины к мужчинам не просто строги, они строги по нарастающей - каждая следующая возрастная группа получает от них меньше.

Важно: в ячейках 55+ данных на порядок меньше (от 17 до 66 тысяч оценок против миллионов), но это всё ещё десятки тысяч, а не десятки, поэтому направление надёжное.

2. Разница в возрасте: мужчины и женщины ведут себя по-разному

Здесь интереснее всего. Возьмём не абсолютный возраст, а разницу «оценивающий минус оцениваемый» и посмотрим, как меняется оценка.

Оценка в зависимости от разницы в возрасте
Оценка в зависимости от разницы в возрасте

Мужчины о женщинах - монотонно: чем старше мужчина относительно женщины, тем щедрее. Мужчина на 10+ лет моложе ставит 5,91, ровесник - 6,54, на 10+ лет старше - 6,81. Никакого пика на ровесниках: кривая просто растёт.

Женщины о мужчинах - совсем другая форма. Пик на ровесниках (6,71), и спад в обе стороны. Причём асимметричный: женщина на 3-10 лет старше мужчины ставит 6,61, на 10+ старше - 6,43; а женщина на 10+ лет моложе мужчины - 5,64. Молодые женщины - самые строгие судьи мужчин, которые заметно старше их.

Однополые пары повторяют форму «пик на ровесниках»: женщины о женщинах 6,08 → 6,41 → 6,56 → 6,57 → 6,47; мужчины о мужчинах 4,98 → 5,40 → 5,52 → 5,46 → 5,98. Самая жёсткая ячейка всего датасета: молодой мужчина оценивает мужчину на 10+ лет старше - 4,98.

Не берусь объяснять это психологией, данных для этого недостаточно. Но форма кривых устойчивая и держится на всём 12-летнем массиве.

3. Взаимности нет

Гипотеза, которую я считал очевидной: щедрые оценщики получают в ответ более высокие оценки. Механик взаимности в приложении нет, но казалось, что через поведение это как-то проявится.

Взаимности нет
Взаимности нет

Взял 5 207 пользователей, у которых есть и ≥100 выставленных, и ≥100 полученных оценок, и посчитал корреляцию между их средней выставленной и средней полученной. Результат: -0,046. По сути ноль. Разбивка по бакетам плоская: у тех, кто ставит в среднем 3-4, полученная средняя 6,54; у тех, кто ставит 9+ - 6,59. Между ними всё в коридоре 6,40-6,62.

То есть «карма» в оценках не работает: сколько ты ставишь другим, никак не связано с тем, сколько ставят тебе. Логично, если подумать: оценивают тебя не те, кого оценивал ты, а случайные люди из ленты.

Что не вошло

Проверил и отбросил три среза, которые выглядели многообещающе:

  • час суток и день недели - разброс 0,15 и 0,06 балла соответственно, и это ещё в UTC без поправки на часовые пояса;

  • «номер фото»: четвёртое и далее фото получают на 0,3 ниже - но слоты 4-6 открываются только на высоких уровнях, это другая аудитория, а не эффект порядка. Классический отбор, а не находка.

Как считалось

Postgres на проде, полный массив, без сэмплирования. Возраст - age(rating.created, user.date_of_birth) на момент оценки, для обеих сторон. Страновых срезов здесь нет, порог по числу оценивающих (грабля из прошлой статьи) поэтому не понадобился. Все SQL - обычные GROUP BY с CASE по бакетам, самый долгий запрос (взаимность, два агрегата и join) - около четырёх минут.

Данные - из Rate Me (rateme.lv), отвечу на вопросы в комментариях.