Try   HackMD

Анализ результатов А/В теста для мобиьной игры

Целью теста было выявить влияние сложности стартовых уровней на
удержание игроков. Сейчас в игре 120 уровней. Было разработано 30 полностью
новых уровней (более динамичных и простых) и проведен A / B тест, в котором
игроки были разделены на 2 когорты:
Когорта А: игроки с четным номером устройства получали старые 120
уровней
Когорта В: игроки с нечетным номером играли в новые 30 уровней, после
которых шли старые уровни (с 31 по 120).

Было необходимо изучить полученные данные, извлечь из них инсайты, позволяющие улучшить игру, и принять обоснованное решение о замене старых 30ти уровней на новые

Исходные данные (Google Sheets)
Итоговая таблица (Google Sheets)

Пояснения по столбцам:
Level started (Uniques) – число уникальных игроков, начавших уровень.
Level started (Totals) – общее число запусков уровня.
Level won (Totals) – общее число выигрышей уровня.
Level failed (Totals) – общее число проигрышей уровня.

Изучение данных и создание столбцов

Были добавлены следующие столбцы:

CHURN(relative) - относительный отток игроков после уровня
CHURN(absolute) - абсолютный отток игроков после уровня

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

По этим данным достаточно тяжело сравнивать когорты, поэтому были добавлены следующие столбцы:

CUMULATIVE CHURN(relative) - относительный кумулятивный отток игроков после уровней
CUMULATIVE CHURN(absolute) - абсолютный кумулятивный отток игроков после уровней

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Как можно увидеть, новые уровни имеют меньший отток, однако на следующих 90 уровнях разрыв исчезает
Более точно это можно рассмотреть рассчитав кумулятивный отток для последних 90 уровней отдельно

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Как можно заметить, за первые 10 уровней когорта Б значительно обгоняет когорту А по уровню оттока и сохраняет лидерство до конца рассматриваемого отрезка

Также были добавлен столбец NOT FINISHED, отражающий количество начатых уровней, не закончившихся победой или поражением. Значения в данном столбце сильно противоречат значениям в exit_to_menu, однако без дополнительной информации о методике сбора информации дальнейшие выводы сделать крайне сложно.

Помимо этого был создан столбец DIFFICULTY, отражающий процент провалов уровней из числа запусков.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

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

с - отражает отношение оттока игроков к сложности уровня и имеет следующую формулу

REL_CHURN^churn_power / REL_FAILS

REL_CHURN = (UNIQ_CURR - UNIQ_NEXT + stab_metric) / (UNIQ_CURR)

REL_FAILS = (LVL_FAILS + stab_metric) / (LVL_STARTS), где

REL_CHURN - стабилизированный относительный оттток после уровня
REL_FAILS - стабилизированная относительная доля провалов на уровне
UNIQ_NEXT - число уникальных запусков следующего уровня
UNIQ_CURR - число уникальных запусков текущего уровня
LVL_FAILS - число провалов текущего уровня
LVL_STARTS - число запусков текущего уровня
stab_metric - параметр, используется для стабилизации значений функции при малых количествах провалов/оттока
churn_power - параметр, используется для придания большей значимости оттоку после уровня. При значениях >1 уровни с большим оттоком при одинаковом отношении оттока к доле провалов будут получать большую оценку.

BOREDOM(mean mormalized) - BOREDOM(raw), нормализованная так, чтобы единица соответствовала среднему показателю скучности уровней.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Конкретные значения данной функции не имеют “физического” смысла и должны использоваться только для сравнения уровней между собой.

Принятие решения по внедрению новых уровней

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

Относительный кумулятивный отток на 30м уровне(Когорта А) - 74,17%
Относительный кумулятивный отток на 30м уровне(Когорта Б) - 68,11%

Для подсчета статистической значимости за нулевую гипотезу примем то, что различий между наборами уровней нет

Теперь рассчитаем среднеквадратическое отклонение для обеих когорт как для распределения Бернулли

СКО(А30) = (0,7417*(1-0,7417)/1784)^½ = 0.011034
СКО(Б30) = (0,6811*(1-0,6811)/1750)^½ = 0.010463

Теперь рассчитаем стандартную ошибку разности

СОР(30) = (СКО(А30)^2 + СКО(Б30)2)½ = 0.015206

Наконец рассчитаем z-score и соответствующий ей p-value

z-score = (СКО(Б30)-СКО(A30)) = 3.9892
p-value = 0.000033, что соответствует практически 100% уверенности, в превосходстве новых уровней

Повторим расчет для последнего уровня

Относительный кумулятивный отток на 119м уровне(Когорта А) - 93,80%
Относительный кумулятивный отток на 119м уровне(Когорта Б) - 94,62%

СКО(А119) = 0.005307
СКО(Б119) = 0.005342
СОР(119) = 0.007531
z-score = 0.2406
p-value = 0.4049

Полученные результаты не позволяют говорить о каком-либо статистически значимом различии на 119м уровне.

Таким образом, при низкой трудоемкости внедрения новых уровней его можно считать оправданным, однако из-за исчезновения эффекта в долгосрочной перспективе выигрыш по удержанию и другим KPI, вероятно будет незначительным.
Имеет смысл создать набор уровней 31-60 в стиле новых 30 для определения причины резкого падения удержания после 30 уровня: несоответствие ожиданий после новых уровней старым уровням, идущим следом, либо существование некоторого предела удержания отдельных категорий игроков с помощью более динамичных уровней.