Перейти к содержимому
Назад в Академию

Сегментация и когортный анализ: как не обмануться средними цифрами

12.03Продуктовая аналитика и BI
Содержание статьи

Сервис онлайн-записи для салонов красоты из урока про product-led growth подводит итоги октября. В сентябре онлайн-запись в первые 7 дней включили 40% новых салонов, в октябре 37,5%. Основатель пишет в чат: «Что сломали в настройке?», и разработчики садятся перебирать октябрьские релизы. А в отчёте маркетолога за тот же месяц есть строчка, которую с активацией никто не связал: бюджет Instagram вырос вдвое. Цифры в уроке условные.

Но прежде чем искать ошибку в коде, стоит разложить новые салоны на группы. Разберём, какие группы бывают, какие разрезы полезны и как отличить изменение поведения от изменения состава.

Сегмент, когорта и поведенческая когорта

Эти три слова путают, а в интерфейсах они ещё и пересекаются.

ГруппаКого объединяетПример у сервиса записи
КогортаПришли в одном периодеСалоны, зарегистрированные в октябре
СегментОбщий признак на момент приходаСалоны, пришедшие из Instagram
Поведенческая когортаСделали или не сделали действиеСалоны, включившие онлайн-запись в первую неделю

Когортную таблицу и сравнение когорт одного возраста показывает урок про когорты и LTV. Amplitude и Mixpanel называют поведенческую когорту тем же словом cohort, хотя даты прихода у неё нет. Поэтому, когда коллега говорит «посмотрел когорту», переспросите, какую из трёх.

Какие разрезы полезны

От разреза есть толк, когда выполнены три условия. Признак известен в момент прихода и потом не меняется. В каждом сегменте достаточно салонов, чтобы один салон не двигал долю на десять пунктов. И кто-то в команде может по результату что-то сделать: перенести бюджет, поменять настройку, позвонить. Для сервиса записи подходят такие:

РазрезОткуда взятьКакое решение подскажет
Канал регистрацииСвойство initial_utm_source, его пишут оба SDKКуда переносить рекламный бюджет
Городcity в событии salon_signed_upНужны ли Астане своя поддержка и своя реклама
Устройство при регистрацииСвоё свойство в salon_signed_up, например signup_deviceНужна ли настройка салона с телефона
Тип салонаСвоё свойство в salon_signed_up: парикмахерская, ногтевая студия, барбершопКакие услуги предлагать по умолчанию

Канал. Amplitude запоминает первые UTM-метки человека в свойствах initial_utm_source, initial_utm_campaign и других (UTM-метки в Browser SDK 2). Mixpanel пишет такие же свойства в профиль, но только вошедшему человеку и только когда видит его метки впервые (UTM-метки в JavaScript SDK Mixpanel). Для салонов это не помеха: зарегистрировался - значит, вошёл. Ссылки в рекламе при этом размечают по общей схеме UTM, иначе разрез соберёт три названия одного Instagram.

Город берут из формы регистрации. Оба инструмента определяют свой город по IP: $city в Mixpanel (свойства по умолчанию в Mixpanel), City в Amplitude (местоположение в Amplitude). Такой город показывает, откуда человек зашёл, а не где стоит салон. Владелица салона в Астане, которая регистрировалась из Алматы, попадёт не в тот город.

Устройства и типа салона в плане событий из урока про Amplitude и Mixpanel пока нет. Оба свойства придуманы для этого урока: их добавляют в salon_signed_up, и появятся они только у салонов, зарегистрированных после релиза. Задним числом сегмент не восстановишь, поэтому разрез, который понадобится через полгода, вписывают в событие регистрации сейчас. Тип салона играет ту же роль, что первая покупка в магазине: в уроке про RFM-анализ кофемолка за 60 000 ₸ делает разового покупателя похожим на постоянного.

Чего не брать в разрез. Тариф для новых салонов - результат, а не признак. При регистрации у всех пробный период, а платным тариф становится через две недели, у тех, кто заплатил. Если сравнить первую неделю оплативших и остальных, вы разделите салоны по тому, что случится через две недели. Разница в поведении найдётся, но о причине она ничего не скажет, как и связь ага-момента с оплатой. Среди действующих салонов тариф - нормальный разрез, если брать его значение на момент события. Ради этого plan и передают в каждом событии.

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

В Amplitude сегменты сравнивают на одном графике: в модуле сегментации добавляют сегмент кнопкой «+ Add Segment» или разбивают график по свойству. При разбивке график показывает пять сегментов с самыми большими значениями, остальные можно включить в таблице под ним (сегменты в графиках Amplitude). В Mixpanel то же делает Breakdown по свойству или по когорте (отчёты Mixpanel).

Почему общий процент падает, когда в каждом сегменте он растёт

Вернёмся к октябрю и разрежем активацию по каналам. Сентябрьские цифры уже знакомы: 200 новых салонов, из них 120 из Instagram. В октябре маркетолог удвоил бюджет Instagram, 1 920 000 ₸ вместо 960 000 ₸, и получил вдвое больше регистраций. В каждой ячейке салоны, которые включили онлайн-запись в первые 7 дней, из всех зарегистрированных по каналу:

КаналСентябрьОктябрь
Реклама в Instagram (Meta)36 из 120, 30%74 из 240, 31%
Поиск Google26 из 50, 52%27 из 50, 54%
Ссылка на странице записи и рекомендации18 из 30, 60%19 из 30, 63%
Всего80 из 200, 40%120 из 320, 37,5%

Ни в одном канале доля не упала. Упала общая, потому что общая доля - это среднее по каналам, взвешенное по числу салонов. В сентябре из Instagram пришли 60% новых салонов, в октябре 75%. А из Instagram запись включает примерно каждый третий салон, тогда как из поиска каждый второй. Чем больше в когорте салонов из Instagram, тем ниже общий процент, даже если в каждом канале всё по-прежнему.

Сколько здесь от состава, можно посчитать. Возьмите октябрьскую долю включивших запись в каждом канале и умножьте на сентябрьское число регистраций. Из 120 салонов Instagram запись включили бы 37 (половина от 74 из 240), из 50 салонов поиска 27, из 30 по рекомендациям 19. Вместе 83 из 200, то есть 41,5%. С сентябрьским составом октябрь выглядел бы не хуже сентября, а на полтора пункта лучше.

Записывать эти полтора пункта в успехи тоже рано. В поиске и по рекомендациям это по одному салону, 27 вместо 26 и 19 вместо 18, в Instagram два: при сентябрьских 30% из 240 салонов запись включили бы 72, а не 74. Такой разброс бывает и без всяких изменений в продукте. Поэтому ответ основателю скромнее: по октябрьским данным не видно, чтобы продукт стал хуже, а общая доля упала, потому что поменялся состав новых салонов. Салонов с онлайн-записью при этом стало больше, 120 против 80. Окупилось ли удвоение Instagram, решают по цене оплатившего салона, как считали для сентября, и ответ появится, когда октябрьские салоны пройдут пробный период.

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

Состав когорты меняет общий D7

По 100 пользователей в когорте
ПоказательКогорта 1Когорта 2
Пользователей в сегменте А8020
D7 сегмента А50%55%
Пользователей в сегменте Б2080
D7 сегмента Б20%25%
Общий D744%31%

В каждом сегменте D7 вырос на 5 пунктов, общий упал на 13 пунктов.

Сравнивайте общий D7 вместе с составом сегментов.

В таблице тот же эффект в крайнем виде. Доли сегментов поменялись местами, 80 и 20 стали 20 и 80, и общий D7 (доля вернувшихся на седьмой день) упал на 13 пунктов, хотя в каждом сегменте вырос на 5.

Поведенческие когорты в Amplitude и Mixpanel

Поведенческая когорта - сохранённое в инструменте условие: кто сделал или не сделал действие. Состав по нему инструмент пересчитывает сам. Для сервиса записи самая полезная когорта - «включили онлайн-запись в первые 7 дней после регистрации».

Окно Within в настройках когорты Amplitude (как задать когорту в Amplitude) для неё подходит плохо. Within считает дни от первого события человека в Amplitude, а не от регистрации: если владелица смотрела сайт за две недели до регистрации, её окно закрылось раньше, чем она создала салон. Когорту активации надёжнее сохранить из воронки salon_signed_up → online_booking_enabled с окном 7 дней: нажмите на шаг включения записи и создайте из этих людей когорту в Microscope (Microscope в Amplitude). Потом когорту выбирают в фильтре графика, и воронка или удержание строятся только по её участникам.

С такими когортами надо помнить три вещи.

Состав пересчитывается. Amplitude делает это каждый раз, когда строит график (поведенческие когорты в Amplitude), а Mixpanel определяет участников в момент запроса (когорты в Mixpanel). Для условия «в первые 7 дней» это не мешает: через неделю после регистрации человек либо попал в когорту, либо уже не попадёт. А когорта «принимали онлайн-записи за последние 30 дней» каждый день немного другая. Сравнивать её размер в июне и в октябре - значит сравнивать разные салоны.

Не на всех планах. Свои поведенческие когорты в Amplitude есть на планах Plus, Growth и Enterprise, на бесплатном их нет. В Mixpanel на бесплатном плане когорту можно построить, но нельзя сохранить.

В когорте люди, а не салоны. Если салон зарегистрировала владелица, а запись включил администратор, воронку целиком не прошёл ни один из них, и салон в когорту не попадёт. Когорты по салонам в Amplitude строят с дополнением Accounts, а Group Analytics в Mixpanel считает по салонам воронки (Group Analytics в Mixpanel). Оба дополнения платные.

Когорта нужна для двух вещей. Первая - сравнение: какая доля включивших запись в первую неделю заплатила и сколько записей они принимают через месяц. Для сентября такое сравнение уже есть: из 50 салонов, которые включили запись в первые три дня, заплатили 36. Это связь, а не причина. Удержание таких групп сравнивают, не теряя знаменатели. Вторая - список для действия. Обратная когорта, «зарегистрировались три дня назад и запись не включили», - это список салонов, которым на третий день пишут в WhatsApp и предлагают настроить запись вместе.

Упражнение: разложите изменение на состав и поведение

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

Выполнено 0 из 5

Через месяц всё повторилось в обратную сторону. В ноябре маркетолог вернул бюджет Instagram к сентябрьскому. Из Instagram пришло 120 салонов, и 37 из них включили запись в первую неделю, из поиска 27 из 50, по рекомендациям 19 из 30. Общая доля выросла до 41,5%, и маркетолог пишет в чат: «Почистил аудитории, активация пошла вверх». Что вы ответите?

Посчитайте Instagram отдельно: 37 из 120 - те же 31%, что в октябре. Внутри канала активация не сдвинулась, а общая доля выросла, потому что доля Instagram среди новых салонов вернулась с 75% к 60%. 41,5% - ровно та цифра, которую мы получили для октября при сентябрьском составе. Чистка аудиторий могла сказаться на том, что для сервиса важнее, на оплатах, но их видно только после двух бесплатных недель. Ответ маркетологу может быть таким: «В Instagram активация та же, 31%, общая цифра выросла из-за смены состава. Про аудитории поговорим в середине декабря, когда ноябрьские салоны из Instagram дойдут до оплаты».

Видео: основы когортного анализа

Что такое когортный анализ

Введение в когортный анализ от Calltouch.

Нужна помощь с аналитикой вашего проекта?