Русский
Русский
English
Статистика
Реклама

Когортный анализ

R в руках маркетолога. Делаем когортный анализ своими руками

02.05.2021 12:15:03 | Автор: admin

В маркетинге очень популярен когортный анализ. Его популярность вызвана, скорее всего, легкостью алгоритма и вычислений. Никаких серьезных математических концепций в основе нет, элементарная математика, выполняемая в excel. С точки зрения получения инсайтов гораздо интереснее анализ дожития.


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


Является продолжением серии предыдущих публикаций.


Немного кода


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


Создание тестового набора
# генерируем данные на 15 недельset.seed(42)events_dt <- tibble(user_id = 1000:9000) %>%  mutate(birthday = Sys.Date() + as.integer(rexp(n(), 1/10))) %>%  rowwise() %>%  mutate(timestamp = list(as_datetime(birthday) + 24*60*60 * (     rexp(10^3, rate = 1/runif(1, 2, 25))))) %>%  ungroup() %>%  unnest(timestamp) %>%  # режем длинные хвосты в прошлом и в будущем  filter(timestamp >= quantile(timestamp, probs = 0.1),         timestamp <= quantile(timestamp, probs = 0.95)) %>%  mutate(date = as_date(timestamp)) %>%  select(user_id, date) %>%  setDT(key = c("user_id", "date")) %>%  # оставим только уникальные по датам события  unique()

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


ggplot(events_dt, aes(date)) +  geom_histogram()


Шаг 1. Формируем справочник пользователей


В настоящем примере справочник будет тривиальным и содержит только "дату рождения", т.е. дату, когда мы первый раз встретились с ним. Установка ключей для data.table объекта приводит к физической сортировке данных в порядке появления ключей.


Формируем справочник пользователей
users_dict <- events_dt[, .(birthday = head(date, 1)), by = user_id] %>%  # для последующей сортировки оставим дату начала недели  .[, week_start := floor_date(.BY[[1]], unit = "week"), by = birthday] %>%    # переведем даты рождения в номера когорт  .[, cohort := stri_c(        lubridate::isoyear(.BY[[1]]),         sprintf("%02d", lubridate::isoweek(.BY[[1]])),         sep = "/"), by = week_start]# посмотрим на распределение дат, нам нужен разброс для красивой картинкиas_tibble(janitor::tabyl(users_dict, birthday))


Шаг 2. Подготовим разметку в терминах когортного анализа


Совсем за скоростью пока не гонимся.


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


Строим когортное представление в data.frame
cohort_dict <- unique(users_dict[, .(cohort, week_start)])cohort_tbl <- users_dict[events_dt, on = "user_id"] %>%  # посчитаем удаленность событий от даты рождения в терминах недель  .[, rel_week := floor(as.numeric(difftime(date, birthday, units = "week")))] %>%  # оставим только 10 недель  .[rel_week <= 9] %>%  # редуцируем до уникальных пользователей  unique(by = c("user_id", "cohort", "rel_week")) %>%  # считаем агрегаты в терминах когорт и недель  .[, .N, by = .(cohort, rel_week)] %>%  .[, rate := N/max(N), by = cohort]

Шаг 3. Визуализируем


Вариант 1. ggplot


Визуализация ggplot
# вариант ggplotdata_tbl <- cohort_tbl %>%  # вернем числовые показатели когорт для сортировки  left_join(cohort_dict)data_tbl %>%  mutate(cohort_group = forcats::fct_reorder(cohort, week_start, .desc = TRUE)) %>%  ggplot(mapping = aes(x = rel_week, y = cohort_group, fill = rate)) +  geom_tile()  +  geom_text(aes(label = N), colour = "darkgray") +  labs(x = "Недели существования когорты",       y = "Неделя появления когорты",       fill = "Количество\nпользователей",       title = "graph_title") +  scale_fill_viridis_c(option = "inferno") +  scale_x_continuous(breaks = scales::breaks_width(1)) +  theme_minimal() +  theme(panel.grid = element_blank())


Вариант 2. gt


Для оформления используем тот факт, что у нас всегда по две строки на когорту и они отсортированы в нужном порядке.


Визуализация gt
# подготовим табличку-подложкуdata_tbl <- cohort_tbl %>%  pivot_longer(cols = c(N, rate)) %>%  pivot_wider(names_from = rel_week, values_from = value) %>%  # вернем числовые показатели когорт для сортировки  left_join(cohort_dict) %>%  arrange(week_start, desc(name))odd_rows <- seq(1, to = nrow(data_tbl), by = 2)even_rows <- seq(2, to = nrow(data_tbl), by = 2)tab <- data_tbl %>%  mutate(cohort = if_else(rep(c(TRUE, FALSE), length.out = nrow(.)),                           cohort, "")) %>%  select(-name, -week_start) %>%  gt(rowname_col = "cohort") %>%  fmt_percent(columns = matches("[0-9]+"),               rows = odd_rows,               decimals = 0, pattern = "<big>{x}</big>") %>%  fmt_missing(columns = everything(),               missing_text = "---") %>%  tab_stubhead(label = "Неделя появления когорты") %>%  tab_spanner(label = "Неделя существования когорты",              columns = everything()) %>%  tab_header(title = "Развертка") %>%  data_color(columns = everything(),             colors = scales::col_numeric(palette = "inferno",                                          domain = c(0, 1),                                           alpha = 0.6,                                          na.color = "lightgray")) %>%  tab_options(    table.font.size = "smaller",    data_row.padding = px(1),    table.width = pct(75)  ) %>%  tab_style(    style = list(      cell_fill(color = "white"),      cell_text(style = "italic"),      cell_borders(sides = "bottom")    ),    locations = cells_body(      columns = everything(),      rows = even_rows)  ) %>%  tab_style(    style = list(      cell_borders(sides = "top")    ),    locations = cells_body(      columns = everything(),      rows = odd_rows)  )tab


Каркас приведен, прочее каждый может модифицировать под себя.


Предыдущая публикация R и работа со временем. Что за кулисами?.

Подробнее..

Когортный анализ подписок как понять, что экономика сходится?

15.06.2021 10:13:02 | Автор: admin

Когортный анализ это способ отследить плотность метрики для определенных групп пользователей. В отличие от обычных графиков, когорты показывают именно stickiness пользователей, распределенный во времени.

Звучит сложно, на деле понять проще. Возьмем конкретный пример: попробуем понять как ведет себя база подписчиков в мобильном приложении: как они платят, отписываются и как долго живут. Ответы на эти вопросы я покажу на примере нашей реализации в Adapty.

Пример когортного анализа подписокПример когортного анализа подписок

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

То есть, в строчках у нас когорты (группа) пользователей, которые установили приложение в определенный месяц, а в столбцах значения метрик по каждому месяцу с месяца установки (этот месяц первый или М1). В выделенной строчке М1 это январь, М2 февраль и тд. Каждый месяц количество подписчиков в данной когорте не возрастает, даже если пользователь установил в январе, а подписался в феврале, то он будет отнесен в когорту января. Нам кажется такой способ правильным для оценки сходимости.

Идея оценивать экономику так кроется в том, как работает привлечение пользователей. При закупке рекламы разработчик так или иначе платит за установки, а не за целевые действия. Даже в CPA кампания, все будет связано со стоимостью установки (CPI). Следовательно, чтобы оценить эффективность закупки трафика надо смотреть как именно люди установившие приложение в этот период будут монетизироваться. При этом, если пользователь установил приложение, но месяц не платил, он попадет только в М2.

Видим, что когорта пользователей января принесла нам суммарно до текущего момента времени $2900 выручки от 73 подписчиков.

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

Сойдется ли экономика?

Теперь, пусть мы заплатили за рекламу $4000 за январь, наш вопрос такой окупятся пользователи или нет?, то есть будет ли выручка с них больше чем $4000 в разумное время.

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

Когорта января в разбивке по месяцам (первая колонка установки)Когорта января в разбивке по месяцам (первая колонка установки)

На текущий момент приложение заработало $2900 до комиссии Apple, или $2465 после вычета 15% (приложение находится в программе Apple для SMB). Также будем считать, что мы продаем недельные подписки в среднем по $10.

Мы видим, что количество активных подписчиков после первого месяца упало почти в 2 раза, дальше на 20%, потом всего на 10% до 24. Так как на момент написания заметок месяц еще не кончился, возьмем лучший сценарий пусть все 24 подписчика будут с нами всегда. И даже пусть они в среднем платят $15.48 дальше, то есть их ARPPU не меняется.

Чтобы добить до $4000 нужно чтобы подписчики заплатили больше $1500, даже при сохранении выручки за месяц в $372 и нулевой отписке, когорта сойдется в лучшем случае через 4-5 месяцев непрерывных платежей. На практике, учитывая предыдущую динамику, и зная, что трафик закупается равномерно, когорта вряд ли сойдется меньше, чем за пару лет, а по факту скорее всего будет в убыток. Причина такая, что недельные подписки постоянно напоминают о себе и пользователи реже остаются в долгосрочных платежах, ведь если приложение хорошее, гораздо выгоднее купить год. Но даже с подписками на месяц при такой динамики на вряд ли стоит ожидать положительной прибыли.

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

Подробнее..

Avito Analytics meetup

18.06.2020 14:14:33 | Автор: admin

Привет, Хабр! 30 июня в18:00 поМоскве мы проведём онлайн-митап дляаналитиков. Спикеры расскажут прорегиональные A/B-тесты, управление выдачей товаров винтернет-магазине, предсказание профита отновых фичей и data science вдоставке товаров.


Подкатом, как и всегда, тезисы докладов и все нужные ссылки.



Доклады


Региональные A/B-тесты. Зачем нужны и как устроены Игорь Красовский, Авито


image


Что делать, если тестовая группа вA/B-тесте точно неизвестна, а воздействие напользователя производится оффлайн, например, врегиональной ТВ-рекламе? Как сформировать контрольную группу длясмещённой тестовой? Как измерить эффект и отличить его отслучайной ошибки? Расскажу, как мы ответили наэти вопросы вАвито и скакими проблемами столкнулись.

О спикере: ВАвито чуть более 2лет, доэтого успел поработать вeCommerce и IT-консалтинге. Сейчас работаю вкоманде Core Analytics, которая отвечает затакие направления как Data Management, Strategic Analytics, Core Analytics Platform, Key Account Analytics.



Лучшие data-продукты рождаются вполях Марина Калабина, Леруа Мерлен


image


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

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

О спикере: 9лет работы вЛеруа Мерлен. Сначала открывала магазины, потом вних работала, а сейчас навожу порядок втоварных запасах. Собрала команду и запустила data-продукт за6недель.



Модель роста предсказываем профит от фич для приоритизации Павел Михайлов, Ostrovok.ru


image


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


О спикере: Head of growth вEmerging Travel Group (Ostrovok.ru) саналитическим бэкграундом. Генерирую, разрабатываю и тестирую гипотезы роста.



Как data science Авито Доставке помогал Дима Сергеев, Авито


image


Или история отом, как перестать предлагать пользователям купить Кабину Камаза сДоставкой. НаАвито уже более 60млн. товаров. Не для каждого изних удаётся слёгкостью определить, сможет ли продавец положить его вкоробку размером 1208050 и отправить покупателю вдругой город.

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

О спикере: Последний год занимаюсь аналитикой вАвито Доставке. Доэтого на протяжении трёх лет занимался аналитикой вOZON.



Задавайте вопросы вчате трансляции насамые интересные ответим вэфире. После каждого доклада можно будет отдельно пообщаться соспикером.


Пароли и явки


Трансляция нанашем ютуб-канале стартует вовторник 30июня в18:00. Планируем закончить к20:40. Натрансляции можно сразу нажать кнопку напомнить, чтобы ничего не пропустить.


Если хочется получить напоминание соссылкой наэфир наэлектронную почту, можно зарегистрироваться натаймпаде.


Увидимся в онлайне!

Подробнее..

Когортный анализ в email-маркетинге и других сферах

25.06.2020 16:23:50 | Автор: admin
Чем лучше вы понимаете своих клиентов, тем более эффективные маркетинговые стратегии используете. Чтобы узнать, кто находится в базе контактов, часто применяют сегментацию: по полу, возрасту, купленным товарам. И это хорошо.

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

Чтобы оценить поведение клиента на всём его пути взаимодействия с компанией, применяют когортный анализ, который в результате поможет:

  • персонализировать коммуникации;
  • предотвратить отток клиентов;
  • оптимизировать рекламные затраты.

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


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

Когортный анализ один изсамых популярных анализов вмаркетинговой ипродуктовой аналитике. Онпоказывает изменение ключевых показателей вовремени вразрезе каждой когорты. Так появляется возможность, взависимости оттого, когда пользователь совершил действие, отследить достижение конкретных целей: конверсии, ROI, CAC, LTV, Retention Rate иразобраться впредпосылках. Например, вывидите, что пользователи четвёртой недели конвертируются лучше, чем пользователи первой. Ивызнаете, что натретьей неделе вывнедрили онбординг. Значит, онбординг помогает лучше конвертировать пользователей.

Основные параметры


Для построения когортного анализа необходимо определить:

  1. Признак формирования когорты событие, покоторому создаются группы (дата первого посещения/первой покупки/регистрации/открытия письма итак далее).
  2. Размер когорты диапазон времени для формирования когорты (день/неделя/месяц).
  3. Временной интервал скакого момента необходимо отслеживать поведение когорт (запредыдущий год/два/три итак далее).
  4. Ключевой показатель конкретную метрику, которая интересна для данного бизнеса (посетители сайта, покупатели, транзакции, доход итак далее).

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

Все параметры выбираются исходя из потребностей и особенностей бизнеса. От выбора ключевого показателя зависит признак формирования и размер когорт.

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

Когортный анализ вemail-маркетинге


Многие компании используют обобщённую статистику при оценке email-маркетинга: показатели открываемости, кликабельности, отписки закаждый месяц или заотдельное письмо. Нотакая оценка неспособна дать ответ навопрос, кто икак взаимодействует срассылками. Один извариантов сегментировать пользователей. Хорошо, нонедостаточно, так как водин сегмент могут попасть как новые, так истарые подписчики, которые ведут себя по-разному, иожидания отбренда уних отличаются. Чтобы получить более детальную информацию, необходимо использовать когортный анализ.

Сего помощью можно:

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

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

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

Пример построения базового когортного анализа


Постановка задачи


Вданном примере цель когортного анализа отследить взаимодействие подписчиков срассылками наоснове Click Rate (количества кликов).

Определение параметров


Анализ будет построен наследующих показателях.

  1. Признак формирования когорты дата подписки.
  2. Размер когорты месяц.
  3. Временной интервал сянваря 2018 поноябрь 2019.
  4. Ключевой показатель CR.

Отзначений параметров будут зависеть дальнейшие шаги работы.

Исходные данные


ВТаблицу 1собираем информацию оподписчиках:

  • IDподписчика (вкачествеID может выступать email);
  • дата подписки.

Когортный анализ группировка по дате подписки

ВТаблице 2 информация овзаимодействиях (одна строка одно действие):

  • IDподписчика;
  • дата совершения действия;
  • рассылка, вкоторой совершено действие.

Когортный анализ сбор базы

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

Алгоритм работы


  1. Группируем пользователей по дате подписки, учитывая размер когорты. Получаем количество подписчиков в каждой когорте. Когортный анализ шаг 1
  2. Объединяем таблицу 2 с таблицей 1, используя в качестве ключа общее поле ID подписчика.
  3. Группируем полученную из пункта 2 таблицу по полям дата совершения действия и дата подписки и подсчитываем для такой пары общее количество кликов. Когортный анализ шаг 2
  4. Рассчитываем для каждой пары значение ключевого показателя. формула CR для когортного анализа

Анализ результатов


Полученные результаты представляются ввиде матрицы, где строки это когорты, столбцы месяцы, значения ключевой показатель (CR).

Результаты когортного анализа

Например, упользователей, которые зарегистрировались вфеврале 2018 процентCR втотже месяц был 2,11%, авот вмарте 2018 они кликали намного активнее 14,20%.

Что полезного можно извлечь изэтой матрицы?

  1. Когорты Январь 2018, Март 2018 иАпрель 2019 оказались очень неактивными. Если посмотреть наколичество подписчиков вданных когортах, картина становится более ясной.Подписчики по месяцам в когортном анализеВянваре имарте 2018 было огромное количество подписок. Вероятно, проводились очень успешные кампании, которые собрали такую базу. Если смотреть наобщие ежемесячные показатели, товыглядит вполне убеждающе кампании сработали иподняли CR.Когортный анализ_процент кликовКогортный анализ показывает, как выглядит ситуация насамом деле. CRувеличился засчёт когорты февраля 2018. Абольшинство подписчиков, зарегистрировавшихся вянваре имарте 2018, неявляются целевой аудиторией итолько загрязняют базу.Когорта Апреля 2019 неявляется сильно выпадающей изобщей картины. Чтобы определить причину таких невысоких показателей, надо иметь больше данных: откуда пришли эти клиенты, небылоли каких-нибудь тестирований, неизменяласьли рекламная стратегия итак далее.
  2. Подписчики 2019 года впервые месяцы более активны, чем подписчики 2018года.
  3. Воктябре 2018 годаCR был слишком мал. Даже текогорты, которые доэтого месяца ивследующие месяцы показали себя довольно лояльными, воктябре 2018 плохо взаимодействовали срассылками.

    Когортный анализ_выявления взаимосвязей


    Причины могут быть разные. Может, компания решила сменить подход кконтенту (увидели, что сделали только хуже, ивернулись кпрошлому варианту). Авозможно, ссылки оказались некликабельными. Если устанавливать размер когорты вдень или неделю, томожно оперативно отслеживать работоспособность нетолько врассылках.

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

    Когортный анализ группировка по месяцам подписки

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

Применение вдругих сферах


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

  • оценки эффективности рекламных каналов;
  • оценки результатов A/B-тестирования;
  • формирования портрета идеального клиента;
  • оптимизации цикла продаж вSaaS-бизнесе;
  • анализа эффективности мобильных приложений;
  • определения LTV.

Инструменты построения


Самые простые


Для построения когортного анализа можно использовать Excel, Google Sheets иимподобные. Доступность этих инструментов основное преимущество. Среди недостатков можно выделить ограниченность вразмере исходных данных, невозможность оперативного пересчёта при изменении параметров, отсутствие автообновления идругие.

Инструменты сподходящим функционалом


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

Кнедостаткам такого подхода можно отнести:

  • ограниченный платформой набор параметров;
  • необходимость использовать эту систему идля сбора данных, азначит, для отслеживания аналитики идля рекламы.

Ктаким системам относятся:

  • Google Analytics
  • Яндекс.Метрика (AppMetrica)
  • Adjust
  • Roistat
  • Kissmetrics
  • идругие


Универсальные инструменты


Наиболее универсальными инструментами построения когортного анализа выступают платформы для бизнес-анализа, например, Power BI. Сихпомощью можно:

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

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru