Блог о статистике и анализе данных в социологических и маркетинговых исследованиях

Эксперименты

Анализируй это: оценки игр на Metacritic

Оригинал опубликован на Habr.com.

Привет, мир Хабр!

В этом посте я хотел бы поделиться своим опытом сбора и анализа базы игр сайта Metacritic.com, рассказать о том, что получилось, и что ещё в планах. Надеюсь, что материал найдёт своего читателя, а возможный фидбек укажет слабые места и потенциальные направления для дальнейшего анализа.

Предыстория

Многие из нас весной-летом этого года получили в своё распоряжение несколько свободных часов в день – работа на дому, спад деловой активности и другие причины всем известны. Своё свободное время я решил обратить на пользу – подтянуть R, которым не пользовался с университетских времён, а заодно и попрактиковаться на реальных данных (грош цена сертификатам без реальных проектов).

Почему я выбрал именно эту базу? Потому, что люблю игры. А ещё, потому что в июне случился скандал вокруг игры The Last of Us. Part II, которая получила практически полное признание критиков, и была крайне негативно воспринята частью игрового сообщества.

Мне было интересно найти ответ на два вопроса:

  1. Насколько соответствуют друг другу оценки прессы и игроков?
  2. Существует ли значимая динамика в а) оценках прессы; б) оценках игроков; в) разности оценок?

Интересно – значит, надо делать.


Первая попытка. Относительный успех

Искать ответы я решил на metacrtitic.com – это крупный сайт, который агрегирует оценки игровых изданий и даёт возможность оценивать игры (и не только их) пользователям (важное замечание: для того, чтобы поставить оценку игре, совсем не обязательно подтверждать владение ею). Казалось, задача будет простой: «Пропарси метакритик и пощупай базу руками!»

Сказано – сделано. Наверное, для аудитории Хабра это не будет секретом: сегодня для того, чтобы написать работающий (!= хороший) код – вовсе не обязательно быть программистом. По крайней мере, я вполне уверовал в это, решая свою задачу.

Вооружившись гуглом, stackoverflow и тем, что смогу усвоить на DataCamp, я за день собрал базу из ~16 тыс. строк, где для каждой записи сохранил название, платформу, пользовательскую оценку, оценку критиков и дату релиза, и тут же построил по ней два графика, которые затем выложил на одну из российских площадок игровой и околоигровой тематики.

Первые результаты

image

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

Вторая попытка. Интересное только начинается

Полагаю, что для аудитории Хабра это не будет секретом: самонадеянность – плохо, а написать работающий (!= хороший) код – задача не из простых, какими бы полезными не были stackoverflow, гугл и гайды «парсить страницы в интернете легко, нужно всего лишь…»

Первые получившиеся графики я опубликовал 24 и 25 июня, и следующую неделю с трудом мог думать о чём-то, кроме сбора большего количества информации.

Однако код, который я написал, вёл себя совершенно ужасно. Он:

  1. Работал медленно (и это было очевидно);
  2. Собирал дубликаты некоторых записей и напрочь игнорировал другие (и это не было очевидно, потому что после составления базы ссылок на страницы с играми я вычищал из них дубликаты, а когда число строк идёт на десятки тысяч невозможно с уверенностью сказать, не пропустил ли ты чего).

Обнаружить вторую проблему в итоге помогла та самая The Last of Us. Part 2, которую я никак не мог найти в собранной базе – и спустя пару-тройку итераций удалось прийти к коду, который бы работал правильно.

Решение первой проблемы может показаться тривиальным любому, кто зарабатывает программированием – но я не отношусь к их числу, поэтому предлагаю просто усмехнуться вместе со мной (откровенно говоря, это был настоящий «Aha!»-момент, хотя сама проблема просто смешная).

История не сохранила код, но у меня остался скриншот – можете оценить под спойлером (осторожно, возможен приступ испанского стыда).

В конечном счёте обе проблемы удалось решить. Код парсера выложен на GitHub. Уверен, что в нём есть ещё много спорных моментов, но теперь он, кажется, работает (что определённо добавляет мне очков к ЧСВ).

Амбулаторная карта пациента или описание базы Metacritic.com

Финальный список страниц с играми, которые необходимо было пропарсить, был составлен первого июля и включал в себя 96 719 записей – ссылок на страницу игры на Metacritic.com (я собирал базу ссылок из алфавитного указателя для каждой доступной платформы, поэтому одна и та же игра может встречаться в базе для каждой отдельной платформы; справедливости ради надо отметить, что оценки в этих случаях также независимы).

> length(all_platforms)
[96719]

Это интересно: на самом деле, пригодных для работы записей в этой базе получилось 96 718. Metacritic хранит в алфавитном списке для PC игру под названием *** (да, это три астериска – и нет, это не цензура), однако ссылка в этом списке ведёт на страницу PC-игр, а не на существующую страницу игры. Добавлять её «руками» не вижу особого смысла – у игры нет ни пользовательской оценки, ни оценки критиков; следовательно, и пользы для анализа нет практически никакой (с учётом размера базы, разумеется).

Из 96 718 оставшихся строк 213 ссылок ведут на страницу 404 или «ругаются» на 500 ошибку сервера – эти страницы пропускаются при сборе и обновлении базы.

> length(all_platforms) - nrow(base_df)
[1] 213

Как разделены эти игры по платформам? Давайте посмотрим на топ:

По числу игр PC весьма ожидаемо оказывается на первом месте, а вот затем довольно неожиданно (для меня) следует iOS, обгоняя все консоли нынешнего поколения. Кроме того, даже без отдельной разбивки по годам видно, что число игр увеличивается с каждым следующим поколением.

Посмотрим на количество игр по времени релиза – в разрезе года, полугодия и месяца выхода игры:

В 2019 явно видна просадка по сравнению с 2018 – возможно, база Metacritic ещё будет пополняться, но пока разница довольно заметная. Будет интересно взглянуть на итоги 2020 года.

Кроме ожидаемого увеличения количества игр год к году, видно и то, что второе полугодие пользуется несколько большей популярностью – явно читается стратегия выпуска игр к новогодним праздникам (вернее, выпуска с определённым «лагом» — выход в октябре-ноябре чтобы игра успела собрать прессу и рекомендации). Сказать об успешности такой стратегии на основе данных метакритика нельзя – нужно смотреть на данные продаж, но такое последовательное поведение издателей заставляет верить в её эффективность.
В первом полугодии столь явных пиков нет – всё-таки, рождественские / новогодние праздники – наиболее универсальные торжества в мире, чётко ассоциирующиеся с подарками.

Это интересно: в базе метакритика лишь у 18 игр нет полной даты релиза. 17 из них – игры на PC, ещё одна – на Wii U. Для четырёх из них указан год, ещё у одной статус «TBA 2011», остальные – TBA или TBA – Early Access. Неплохо для такой внушительной базы!
Среди оставшихся 96 505 записей оценки критиков есть у 25 943 (26.9%), оценки пользователей у 29 129 (30.2%) и обе оценки есть у 20 739 (21.5%) игр.

Здесь важно остановиться и осмыслить: лишь около 1/5 игр в базе metacrtitic.com оценена и критиками, и пользователями. Да, это более 20 тысяч строк – и всё же, лишь пятая часть. Важно и то, что это не случайная выборка из базы всех игр на metacritic.com (а сама база metacritic.com, вероятно, не является случайной выборкой для всех видеоигр вообще). У меня есть лишь предположения о том, чем могут отличаться неоценённые игры от игр с оценками (скажем, маркетинговыми бюджетами), но я решил не искать надёжный способ исключит эти искажения и генерализировать выводы с меньшей неслучайной подвыборки на генеральную совокупность. Поэтому, с этого момента речь будет идти лишь об играх, у которых есть обе оценки – как metascore, так и пользовательский рейтинг.

Информация о числе записей, % оценённых игр (серый лейбл с числом между названием платформы и баром – он же изображается цветной заливкой) в графическом представлении.

Мне также было интересно посмотреть на долю эксклюзивов на каждой платформе. Здесь снова в лидерах PC и iOS – PC явно ввиду особенностей платформы (разработчик ничем не обязан платформодержателю – потому что платформодержателя, в смысле, аналогичном консолям, просто нет); а iOS в силу того, что мобильный гейминг – это совершенно отдельный мир, лишь отчасти пересекающийся с геймингом классическим (по крайней мере – в смысле выходящих на платформе тайтлов). Дальше же явно прослеживается, что чем свежее поколение, тем больше на нём мультиплатформенных игр – хотя здесь стоит особняком Nintendo, у которой в портфеле также много портативных приставок, со своим набором эксклюзивных серий. Обратите внимание, что главные консоли уходящего поколения – PS4 и Xbox One замыкают список, показывая практически аналогичный результат – 12% и 11% эксклюзивов соответственно. Но важно сделать поправку на количество изданных на платформе игр – консоль от Sony опережает конкурента от Microsoft по этому показателю – соответственно, и абсолютное число эксклюзивов здесь больше. Но в целом политика сравнима – разве что компания из Редмонда меньше тратит на маркетинговую поддержку игр, доступных только на своей платформе.

Ниже – график распределения оценок (пользовательские оценки приведены к стобалльной шкале) – нельзя сказать, что отличий в оценках нет совсем, но они достаточно близки.

Чтобы сделать однозначный вывод о разнице оценок, сравним средние оценки парным (т.к. сравниваем средние значения двух признаков у одних и тех же объектов) t-тестом. Отдельно отмечу, что приведённые средние взвешены на количество оценок игры. Результат – с учётом размера базы – ожидаемый, отличия значимые:

> t.test(x = both_scores$UserScore * 10,
       y = both_scores$MetaScore,  
       paired = TRUE)
	Paired t-test

data:  both_scores$UserScore * 10 and both_scores$MetaScore
t = -17.603, df = 20738, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.823471 -1.458075
sample estimates:
mean of the differences 
              -1.640773

На этом этапе напрашиваются два вывода:

  1. Распределение оценок, вне зависимости от источника, смещено вправо, десятибалльная шкала используется весьма ограниченно – оценки игр тяготеют к верхней части шкалы.
  2. Пользователи и критики склонны оценивать игры по-разному – в среднем пользовательская оценка ниже MetaScore на ~1.6 балла по стобалльной шкале (что, однако, может быть незначительной разницей для одного из потребителей этих оценок – игрока, пытающегося составить представление об игре перед покупкой).

Что дальше? Пускаемся во все тяжкие.

Во все тяжкие

В первую очередь хочется взглянуть на гистограмму по полной шкале.

На графике видно несколько интересных вещей. Некоторые оценки явно встречаются чаще соседних. Это вполне объяснимо с «круглыми» числами – 40, 50, 70 баллов популярны у пользователей. На графике хорошо видно, что игра с меньшей вероятностью получит оценку в 79 баллов – уж если она дотянула до такого значения, то накинуть лишнюю единичку не жалко ни тем, кто профессионально пишет рецензии, ни тем, кто просто делится своим мнением. Но если натянуть никак не получается, то игра, скорее всего, получит оценку на один пункт ниже – отсюда пики в баллах, заканчивающихся на 8 или 3. Все любят красивые числа!

Далее в программе – гистограммы распределения оценок отдельно для каждого года, начиная с 2001 (откровенно говоря, я руководствовался скорее красотой визуализации, чем какой-либо иной причиной). Здесь мы наблюдаем удивительное путешествие средней пользовательской оценки от заоблачных 83 баллов в 2001 году до ужасающих 47 баллов в 2020 – к последнему мы ещё вернёмся, но пока запомним, что на момент сбора базы прошла ровна половина года, и некоторым играм ещё только предстоит выйти. Оценки критиков на этом фоне выглядят поразительно стабильными, колеблясь от 70 баллов в 2007 до 75 в ещё не закончившемся 2020.

Что насчёт платформ? Здесь уже явно прослеживаются «любимчики» у критиков – это игры, изданные на Nintendo 64 (напомню, однако, что таковых – с оценками из обоих источников – в базе всего 94) и… iOS, как ни странно. Симпатии игроков вновь на стороне ретро – только сравните внушительные 86 баллов в среднем на PlayStation с жалкими 66 для игр на PS4! Схожая динамика видна и в семействе Xbox. Отметим отдельно Nintendo Switch и Xbox 360, в которых наблюдается поразительное согласие между критиками и пользователями.

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

Давайте вернёмся к анализу по годам.

Здесь мы снова – но более наглядно – можем наблюдать стабильность оценок критиков и постоянное снижение средней пользовательской оценки – вплоть до 47 баллов в 2020 году. Интуитивно кажется, что корреляция между оценками должна снижаться – стоит взглянуть и на график с корреляциями.

Серой линией обозначена общая корреляция для всех наблюдений в базе (включая игры, вышедшие до 2000 года). На первый взгляд, оценки игр, вышедших с середины уходящего десятилетия, все дальше отстоят друг от друга, мнения критиков и игроков расходятся всё сильнее.

Однако, у нас всё ещё есть аномально низкая средняя оценка игроков в 2020 году. И до того, как продолжать, надо разобраться с ней.

Давайте построим диаграмму рассеяния для числа пользовательских обзоров и обзоров критиков. Я осознанно не стал делать шкалу с числом оценок игроков логарифмической – так два экстремальных выброса считываются значительно лучше.

Обратите внимание на две точки с максимальным числом пользовательских обзоров — Warcraft 3: Reforged и та самая The Last of Us: Part 2. У обеих игр низкая средняя пользовательская оценка (в отличие от их менее оцениваемых соседей из топ-10 по числу оцениваний), а само количество оценок выступает коэффициентом при расчёте средней оценки за год – таким образом, они обе сильно занижают среднюю оценку. Ниже приведён упомянутый топ-10 – и так уж вышло, что обе игры вышли в 2020 году.

Обе игры – явные жертвы так называемого «ревью бомбинга» – хотя Warcraft 3: Reforged в принципе довольно большое разочарование для всего сообщества, включая критиков. Но вычищать слишком высокие или слишком низкие оценки, продолжая говорить о связи между оценками игроков и критиков, выглядит неразумно. Что если исключить только эти две игры? Что же, средняя пользовательская оценка в 2020 году заметно вырастет. Однако на коэффициент корреляции влияние окажется практически незаметным – в отличие от средних, при его расчёте не учитывался «вес» игры.

Что, если исключить из анализа все игры со слишком большим числом оценок? И слишком большое – это сколько? Давайте посмотрим на переменную внимательнее:

> summary(both_scores$UserReviews)
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
     4.0     11.0     25.0    144.2     75.0 104424.0

Один из классических критериев для нахождения выбросов – это порог в полтора межквартильных интервала. В нашем случае – (75-11)*1.5 = 96 (которые необходимо добавить к значению третьего квартиля). Выбросов «снизу» нет – пользовательская оценка выставляется при наличии хотя бы четырёх обзоров, а вот сверху мы избавляемся от 2768 игр, оставляя 17 971 запись.

Мы снова можем наблюдать средние пользовательские оценки ниже 70 баллов после 2011 года и постепенное снижение корреляции с 2017 года – однако стоит отметить, что подобные показатели корреляции встречались и раньше – в изображённом периоде 2000-2020 годов явно выделяются 2005, 2010-2011, 2015-2016 годы. Но снижение никогда не было систематическим – признаки чего заметны на отрезке 2017-2020 годов. Возможны два объяснения: во-первых, вклад ревью бомбинга может быть переоценён; во-вторых, мною могут быть недооценены его масштабы, и необходимо и дальше снижать критерий допустимого максимума пользовательских обзоров; тем не менее, в рамках этого материала я буду придерживаться первой гипотезы, оставив проверку второй в качестве возможной дискуссии.

Помимо всего, что уже было рассмотрено выше, я бы хотел обратить внимание публики непосредственно на разницу оценок – для подсчёта которой, опять же, средняя пользовательская оценка была умножена на 10.

Впервые в этом материале появляется распределение, напоминающее своей формой нормальное (теоретически, исследователю необходимо проверять распределение на нормальность, однако существует оговорка, согласно которой при соблюдении случайности отбора наблюдений и достаточно большой базе отличие распределения от нормального можно игнорировать, пользуясь стандартными статистическими инструментами) – это можно считать локальным успехом! Закрепить успех формальной проверкой, однако, не удастся – проверка нормальности Хи-квадратом Пирсона вернёт нам p-значение заметно ниже 0.05:

> Diff <- unlist(both_scores %>%
  mutate(ReleaseDate = year(ReleaseDate), Diff = UserScore * 10 - MetaScore) %>%
  select(Diff))
> nortest::pearson.test(Diff)
	Pearson chi-square normality test
data:  Diff
P = 35078, p-value < 2.2e-16

Остаётся только смириться, напомнить себе о том, что выводы на основании анализа игр с обеими оценками на Metacritic.com не должны быть обобщены для игр вообще – и с этой мыслью продолжить анализ.

Посмотрим на разницу в оценках в разрезе года выхода игры:

Если первый график с трудом поддаётся интерпретации, то на втором явно видна уже обозначенная ранее тенденция – игроки благосклоннее к «старым» играм – и склонны хуже прессы оценивать игры новые. Интересно, что средняя разница очень близка к нулю в отношении игр, вышедших в 2009-2010 годах – и вы только посмотрите, что за игры выходили десятилетие назад! Стоит, однако, вспомнить, что корреляция между оценками в 2010 году сравнительно низкая – похоже, что реально количество игр с расходящимися оценками в этот год велико, однако вектора расхождений уравновешивают друг друга.

Наконец, посмотрим на платформы – по отдельности и вне зависимости от года релиза игры:

Если исключить Nintendo 64 с её 89 тайтлами – ситуация, в целом, ожидаемо похожа на различных платформах. Пик в нулевой разнице, тем не менее, колеблется – так, оценки игр на Nintendo Switch более консистентны, в то время как оценки игр на iOS «размазаны» по шкале – и «пик» распределения приходится, скорее, на значение около -20 – платформа – явный лидер по числу недовольных игроков. График ниже только подтверждает это. Кстати, здесь также в «лидерах» по нелюбви пользователей PS4 и Xbox One – главные консоли уходящего поколения. Хотя и в стане Nintendo всё вовсе не безоблачно – баланс отрицательный.

График ниже вы уже могли видеть в начале статьи – однако, в этой его версии представлено большее число игр и добавлена платформа iOS – ей достаётся почётное последнее место по связанности оценок.

Пожалуй, на этом стоит остановиться и переходить к выводам.

Подводим итоги

Мир не отлит в бронзе и не высечен из камня. Что-то в нём меняется.

Очевидно, что меняются сами игры. Меняются и игроки – растёт их число, разнообразие мнений. И если индустрия обзоров старается придерживаться неких – пусть негласных – стандартов, держа планку средней оценки на уровне ~7.5 баллов, игроки явно оценивают ситуацию иначе – для игр, вышедших с разницей в 20 лет (в 2000 и в 2020), средняя пользовательская оценка на Metacritic снизилась с 8.5 до 6.9 – серьёзная потеря!

Какие за этим могут стоять причины? Мои гипотезы:

  1. Игроки – пользователи Metacritic – склонны лучше оценивать игры, за которыми они провели детство – эффект ностальгии, (вероятно) отсутствующий – или вымарываемый – у профессиональных критиков;
  2. Качество игр действительно снизилось, но игровая пресса, агрегируемая Metacritic, по какой-то причине не отреагировала на это соответствующим снижением оценок, сохраняя «стандарт» на уровне 7.5 баллов;
  3. Эффект ревью бомбинга, когда игроки используют Metacritic не для оценки игры – конечного продукта, а для оценки действий издателя или разработчика, с целью «наказать» за неоднозначные решения (хотя лично мне эта гипотеза кажется наименее вероятной).

Проверке поддаются две из них, при чём подход практически идентичен – при определённых усилиях можно установить, выше ли оценки, выставляемые по прошествии долгого времени после релиза игры, по сравнению с оценками, выставленными в первые дни/недели после него. Для исключения эффекта ревью бомбинга дополнительно стоит «вычистить» игры с исключительно большим числом оценок в первые часы после появления возможности публиковать обзоры – или, по крайней мере, не учитывать эти первые пользовательские оценки.

Проверка же второй гипотезы требует огромной работы по переоценке всего массива игр (так как в ней подвергается сомнению объективность критиков, опираться на эту оценку нет возможности). Возможно, хорошим индикатором стало бы отношение сборов к бюджетам игр, однако издатели неохотно делятся такими цифрами – да и эффект маркетинга никто не отменял (можно долго ругать однотипные спортсимы или конвейеры Ubisoft и Activision Blizzard, но эти игры всё равно продаются из года в год достаточно большими тиражами).
Будем наблюдать.

Добавить комментарий