t_test_sample_data.csv
2 KB
📌 9. T-тест. Задача
T-тест, наверное, один из самых популярных методов расчёта АБ-тестов. Его используют почти все команды, где работа над экспериментами не вынесена в отдельное подразделение.
У этих, конечно, всё серьезнее 🙂
Для закрепления и тренировки, вот вам выгрузка данных по тесту с ёлками.
Можете сами посчитать и попробовать сделать свои выводы.
Если будут возникать вопросы, пишите в комменты или напрямую мне, разберёмся 🙂
#ABtest
T-тест, наверное, один из самых популярных методов расчёта АБ-тестов. Его используют почти все команды, где работа над экспериментами не вынесена в отдельное подразделение.
У этих, конечно, всё серьезнее 🙂
Умение правильно считать T-тест это хороший базовый скилл, которым должны обладать все аналитики, продуктовые в особенности.
Для закрепления и тренировки, вот вам выгрузка данных по тесту с ёлками.
Можете сами посчитать и попробовать сделать свои выводы.
Если будут возникать вопросы, пишите в комменты или напрямую мне, разберёмся 🙂
#ABtest
🔥7👍1
📦 Разбираемся в АБ тестах
1. Вступление про АБ
2.1. Дизайн теста (ч. 1)
2.2. Дизайн теста (ч. 2)
2.3. Пример дизайна теста
3. Базовая статистика в АБ
4.1. Подготовка данных
4.2. T-тест. Дисперсии
5. T-тест. Распределения
6. Метод трансформации Бокса-Кокса
7. Т-тест
8. Интерпретируем результаты
9. Практическая задача
10. Биномиальные тесты и тесты пропорций
11. Bootstrap + калькулятор
12. Метод доверительных интервалов
13. Парадокс Симпсона
14. Нестандартные тесты
#ABtest
1. Вступление про АБ
2.1. Дизайн теста (ч. 1)
2.2. Дизайн теста (ч. 2)
2.3. Пример дизайна теста
3. Базовая статистика в АБ
4.1. Подготовка данных
4.2. T-тест. Дисперсии
5. T-тест. Распределения
6. Метод трансформации Бокса-Кокса
7. Т-тест
8. Интерпретируем результаты
9. Практическая задача
10. Биномиальные тесты и тесты пропорций
11. Bootstrap + калькулятор
12. Метод доверительных интервалов
13. Парадокс Симпсона
14. Нестандартные тесты
#ABtest
🔥15
📌 Как запускают тесты
На прошлой неделе было много технической базы, на этой будет поменьше 🙂
А пока прервёмся на что-то попроще. Давай порассуждаем как вообще происходит запуск теста в команде. Рассмотрим пример компании, где тесты плюс-минус поставлены на поток.
✅ Всё начинается с идеи. Как я уже говорил, идеи приходят от команды или рождаются в процессе исследования продукта и поведения юзеров.
Чтобы идея превратилась в аналитический артефакт, с которым можно работать, её нужно задокументировать. Так она становится гипотезой. Для ведения документации, я обычно создаю отдельную ветку в confluence (скорее всего у тебя в команде он тоже есть).
✅ Далее, если нужно, ты идёшь к продакту и вы выдаёте задачу дизайнеру на разработку тестового варианта.
✅ Когда у тебя появляются картинки, ты идёшь в свою сплит-систему и создаёшь тест. В любой системе, кастомной или сторонней, обычно нужно завести ID теста/вариантов и описания вариантов.
✅ После этого нужно поставить задачу на разработку. В задаче нужно оставить ID теста и вариантов, продублировать описание вариантов, приложить картинки. Чем более полно ты опишешь задачу, тем больше вероятность получить то что заказывал.
✅ Когда тест запустят на стороне разработки, обязательно сверься с базой и убедись что всё летит как надо (скорее всего у тебя в БД есть таблица типа
Для проверки, построй небольшой дашборд, в котором будут графики с распределением юзеров по вариантам, убедись что сплитовалка раскидывает юзеров равномерно (если это не Байесовские бандиты, конечно).
Но т.к. АБ — это твоя территория, тебе и менеджерить весь процесс 🙂
На прошлой неделе было много технической базы, на этой будет поменьше 🙂
А пока прервёмся на что-то попроще. Давай порассуждаем как вообще происходит запуск теста в команде. Рассмотрим пример компании, где тесты плюс-минус поставлены на поток.
Чтобы идея превратилась в аналитический артефакт, с которым можно работать, её нужно задокументировать. Так она становится гипотезой. Для ведения документации, я обычно создаю отдельную ветку в confluence (скорее всего у тебя в команде он тоже есть).
ab_test, где хранятся данные по юзерам, тестам и вариантам). Для проверки, построй небольшой дашборд, в котором будут графики с распределением юзеров по вариантам, убедись что сплитовалка раскидывает юзеров равномерно (если это не Байесовские бандиты, конечно).
В общем-то это всё. Это один из самых частых флоу, который я встречал. Но он, естественно, не всегда такой и у тебя будут свои нюансы на каждом шаге. Иногда у твоей сплитовалки нет интерфейса и ты “заводишь” тест напрямую в задаче на разработку, иногда это сторонняя система со своими правилами.
Но т.к. АБ — это твоя территория, тебе и менеджерить весь процесс 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
В Белграде Coca-Cola вчера раздавала новогоднее настроение и бургеры деда Мороза) 🎄
🎉7🔥1
📌 10. Биномиальные тесты и тесты пропорций
Продолжаем обсуждать методы расчёта АБ-тестов, менее популярные, но для общего развития — полезные.
Иногда данные для теста не агрегированы вокруг какого-нибудь периода, а подчиняются биномиальному распределению (сэмпл данных выглядит так: 0, 0, 1, 0, 1, 1 и тд, где 0 - не было события, 1 - было).
Такие данные бывают при расчётах, например, конверсий.
Для расчёта биномиальных тестов используют 2 популярных подхода:
✅ Z-тест. Сравнивает доли успехов в биномиальных данных. На малых выборках критично нормальное распределение.
✅ Критерий Хи-квадрат. На биномиальных данных сравнивает частоты выпадения категорий.
Оба теста можно считать как напрямую из данных (рассчитав пропорции и стандартные ошибки), так и сгруппировав их в таблицу сопряженности:
#ABtest
Продолжаем обсуждать методы расчёта АБ-тестов, менее популярные, но для общего развития — полезные.
Иногда данные для теста не агрегированы вокруг какого-нибудь периода, а подчиняются биномиальному распределению (сэмпл данных выглядит так: 0, 0, 1, 0, 1, 1 и тд, где 0 - не было события, 1 - было).
Такие данные бывают при расчётах, например, конверсий.
Для расчёта биномиальных тестов используют 2 популярных подхода:
И тот и другой тест, по сути, делают нужную нам проверку, но Z-тест лучше работает на больших выборках.
Оба теста можно считать как напрямую из данных (рассчитав пропорции и стандартные ошибки), так и сгруппировав их в таблицу сопряженности:
# создание таблицы сопряженности
table <- table(df$var, df$metric)
n <- colSums(table) # вычисляем суммы по каждому варианту
x <- table[, 2] # вычисляем количество единиц в каждой группе
# z-тест
prop.test(x, n)
# хи-квадрат
chisq.test(table)
import pandas as pd
from scipy import stats
from statsmodels.stats.proportion import proportions_ztest
# создание таблицы сопряженности
table = pd.crosstab(df['var'], df['metric'])
n = table.sum(axis=1).values # вычисляем суммы по каждому варианту
x = table[1].values # вычисляем количество единиц в каждой группе
# z-тест
z_test = proportions_ztest(x, n)
# хи-квадрат
chi2_test = stats.chi2_contingency(table)
#ABtest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
📌 11. Bootstrap 🔥
По теории некоторых классических расчётов АБ мы пробежали, а теперь посмотрим на короля среди методов рассчётов.
Это не самый популярный метод — и очень зря.
Главный плюс бутстрэпа — отсутствие ограничений. Ему абсолютно всё равно какое там у тебя распределение или дисперсия. Он прекрасно справляется с любой задачей, а его точности позавидуют классические методы.
Единственный минус — онтребует просит больших выборок. Оценить твоих 100 человек он, конечно, сможет, но здесь это не лучший подход. Но и не слишком огромных, сэмпл из миллиона строк тут тоже не лучший вариант. Скоро поймёшь почему.
🧐 Бутстрэп — это статистический метод, который используют для оценки свойств параметров и распределений. Его часто применяют для оценки стандартных ошибок и доверительных интервалов различных статистик (среднее, медиана, доля и тд).
Метод основан на идее повторного использования существующих данных для генерации большого числа псевдовыборок:
1️⃣ Из исходной выборки создается большое количество новых выборок заданного размера. Каждая выборка формируется путем случайного извлечения элементов из исходной выборки с возвращением.
2️⃣ Для каждой псевдовыборки вычисляется интересующая статистика (например, среднее значение или дисперсия). Это дает распределение статистик, которую мы уже используем как нам нужно.
Обычно бутстрэп генерит тысячи сэмплов, поэтому очень большой исходный набор может сильно нагрузить мощности твоей Э-ВЭ-ЭМ.
‼️ Я накидал тебе shiny-приложение по бутсрэпированию разницы метрик. Оно генерит сэмплы на варианты и считает разницу средних, и так много раз. А потом вычисляет p-value для проверки стат. значимости. Подойдёт для стандартных АБ.
Эксклюзивно для подписчиков канала 😀
Можешь проверить на задаче по T-тесту (сэмпл данных можно скачать прям в приложении), а потом использовать в работе 😉
#ABtest #инструменты
Однажды на собесе меня спросили “если бы ты выбирал только один метод расчёта АБ-тестов, что бы это было?” — не сомневаясь ни секунды я ответил — бутстрэп.
По теории некоторых классических расчётов АБ мы пробежали, а теперь посмотрим на короля среди методов рассчётов.
Это не самый популярный метод — и очень зря.
Главный плюс бутстрэпа — отсутствие ограничений. Ему абсолютно всё равно какое там у тебя распределение или дисперсия. Он прекрасно справляется с любой задачей, а его точности позавидуют классические методы.
Единственный минус — он
🧐 Бутстрэп — это статистический метод, который используют для оценки свойств параметров и распределений. Его часто применяют для оценки стандартных ошибок и доверительных интервалов различных статистик (среднее, медиана, доля и тд).
Метод основан на идее повторного использования существующих данных для генерации большого числа псевдовыборок:
Обычно бутстрэп генерит тысячи сэмплов, поэтому очень большой исходный набор может сильно нагрузить мощности твоей Э-ВЭ-ЭМ.
Можешь проверить на задаче по T-тесту (сэмпл данных можно скачать прям в приложении), а потом использовать в работе 😉
#ABtest #инструменты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2
📌 Как я "вкатился"
Кулстори как я врывался в этот ваш ИТ.
Присаживайтесь поудобнее, мы тут надолго 😅
Мой карьерный путь начался после ухода со специальности “Электростанции” Энергетического факультета, в качестве электрика в 2010-м. В электрике я задержался недолго, и по какому-то стечению обстоятельств меня занесло в монтаж оптоволокна к одному подрядчику Ростелекома. Там меня определили спайщиком. Работа была интересная, Fujikura в сердечке ❤️
Но как-то, сидя зимой на какой-то крыше и распаивая кросс, за 15к рублей в месяц, я подумал о работе в офисе. А чё, сидишь там, кофе пьёшь в тепле. Кайф. Погуглил что там доступно у нас в городе, и принял решение попробовать этот ваш ИТ. В то время диковинный.
В коммерческую аналитику я пошёл не сразу, до этого начинал с фронт-энда, который в те времена назывался просто вёрсткой. Учился я на это дело по видосам и статьям в интернете, не долго, месяц может. Это вам не современные реактивные фреймворки, тогда самой крутой технологией был jQuery, а для крепкого фуллстека было достаточно знать HTML, CSS, JS и PHP.
Последнего я не знал, но это не помешало нам с другом открыть свою веб-студию 🙂 Он искал клиентов, я клепал сайты. Постепенно мы обросли небольшой командой и я оставил разработку в поисках идей как продавать наш продукт дороже.
Как-то я смотрел какой-то видос из блога AIC, это был ролик с Виталиком Черемисиновым. Он там дико грузил терминами и до меня дошло — аналитическое сопровождение вашего сайта! Гениально. Это ж не продукт полноценный, подумал я, че там делов-то, прикрутил метрику, конверсии туда-сюда, изи. И так, в общем-то и было. Клиенты знать не знали про такие чудеса, а когда мы просто прокатывали рандомные АБ-тесты через калькуляторы, да ещё и умудрялись растить там какие-то циферки, они были довольны.
Меня это всё дело увлекло и я решил разобраться предметнее. Нагуглил что вообще надо знать (отдельным квестом было собрать такую инфу, медийных аналитиков было полтора человека, а структурированных статей не было вообще) и начал со статистики. Первым был какой-то учебник по курсу универской статистики, дико душный, но основательный. По метрикам я читал Красинского, и в целом следил за блогом Черемисинова. Кучу всякой ненужной фигни впитывал, очень много уделил времени качественным исследованиям, которые в дальнейшей практике применял всего пару раз 🙂
Когда я понял, что хотел бы заниматься аналитикой официально, погуглил вакансии и нашёл одну продуктовую компанию, которым как раз нужен был аналитик. Написал им большое письмо на почту со своей историей, и они с удовольствием закинули мне тестовое — посмотреть их CJM и порекомендовать доработки (тогда вот такая жесть была, да). Ну а я то чё, я ж в студии чем только не занимался, чё мне ваша CJM. Накидал каких-то мыслей и отправил обратно.
Меня приняли тут же. Оказалось, мой отклик был у них вторым за 2 месяца, а первым был дизайнер, который спросил что такое CJM.
На работе никто понятия не имел зачем я нужен. Да и я тоже не особо. Пилил какой-то дашборд в амплитуде, ходил по офису с важным видом, сыпал терминами типа “выборка” и “распределение”, ловил за это восторженные взгляды и учил R по книге великого Хэдли Уикема. За бешенные деньги тогда, 50к рублей.
О питоне в то время и речи не шло, он не был привычным языком аналитиков на Руси. Да, всякие numpy-scipy появились в 2006-2008, но популярными у нас они стали сильно позже. Я так и вообще не слышал о таких, хотя целенаправленно копался в той части интернета.
А потом начали набирать популярность всякие курсы. Мне очень помог в своё время курс скиллбокса “UX-аналитик”, он вышел одним из первых. Вели его нынешние отцы EXPF — Искандер Мирмахмадов и всё тот же Виталик Черемисинов. Не то чтобы курс был крутым и полным, наоборот, одна тема — один видос на 10 минут. Но он задавал вектор. Видишь тему — гуглишь книгу.
Я даже как-то написал письмо в AIC типа вот он я, хочу к вам, но на тех собесе Виталика впечатлить не удалось. Зато мы прекрасно поболтали и он накидал тонну фидбека, с которым я перешёл к дальнейшему развитию более структурно.
#кулстори
Кулстори как я врывался в этот ваш ИТ.
Присаживайтесь поудобнее, мы тут надолго 😅
Мой карьерный путь начался после ухода со специальности “Электростанции” Энергетического факультета, в качестве электрика в 2010-м. В электрике я задержался недолго, и по какому-то стечению обстоятельств меня занесло в монтаж оптоволокна к одному подрядчику Ростелекома. Там меня определили спайщиком. Работа была интересная, Fujikura в сердечке ❤️
Но как-то, сидя зимой на какой-то крыше и распаивая кросс, за 15к рублей в месяц, я подумал о работе в офисе. А чё, сидишь там, кофе пьёшь в тепле. Кайф. Погуглил что там доступно у нас в городе, и принял решение попробовать этот ваш ИТ. В то время диковинный.
В коммерческую аналитику я пошёл не сразу, до этого начинал с фронт-энда, который в те времена назывался просто вёрсткой. Учился я на это дело по видосам и статьям в интернете, не долго, месяц может. Это вам не современные реактивные фреймворки, тогда самой крутой технологией был jQuery, а для крепкого фуллстека было достаточно знать HTML, CSS, JS и PHP.
Последнего я не знал, но это не помешало нам с другом открыть свою веб-студию 🙂 Он искал клиентов, я клепал сайты. Постепенно мы обросли небольшой командой и я оставил разработку в поисках идей как продавать наш продукт дороже.
Как-то я смотрел какой-то видос из блога AIC, это был ролик с Виталиком Черемисиновым. Он там дико грузил терминами и до меня дошло — аналитическое сопровождение вашего сайта! Гениально. Это ж не продукт полноценный, подумал я, че там делов-то, прикрутил метрику, конверсии туда-сюда, изи. И так, в общем-то и было. Клиенты знать не знали про такие чудеса, а когда мы просто прокатывали рандомные АБ-тесты через калькуляторы, да ещё и умудрялись растить там какие-то циферки, они были довольны.
Меня это всё дело увлекло и я решил разобраться предметнее. Нагуглил что вообще надо знать (отдельным квестом было собрать такую инфу, медийных аналитиков было полтора человека, а структурированных статей не было вообще) и начал со статистики. Первым был какой-то учебник по курсу универской статистики, дико душный, но основательный. По метрикам я читал Красинского, и в целом следил за блогом Черемисинова. Кучу всякой ненужной фигни впитывал, очень много уделил времени качественным исследованиям, которые в дальнейшей практике применял всего пару раз 🙂
Когда я понял, что хотел бы заниматься аналитикой официально, погуглил вакансии и нашёл одну продуктовую компанию, которым как раз нужен был аналитик. Написал им большое письмо на почту со своей историей, и они с удовольствием закинули мне тестовое — посмотреть их CJM и порекомендовать доработки (тогда вот такая жесть была, да). Ну а я то чё, я ж в студии чем только не занимался, чё мне ваша CJM. Накидал каких-то мыслей и отправил обратно.
Меня приняли тут же. Оказалось, мой отклик был у них вторым за 2 месяца, а первым был дизайнер, который спросил что такое CJM.
На работе никто понятия не имел зачем я нужен. Да и я тоже не особо. Пилил какой-то дашборд в амплитуде, ходил по офису с важным видом, сыпал терминами типа “выборка” и “распределение”, ловил за это восторженные взгляды и учил R по книге великого Хэдли Уикема. За бешенные деньги тогда, 50к рублей.
О питоне в то время и речи не шло, он не был привычным языком аналитиков на Руси. Да, всякие numpy-scipy появились в 2006-2008, но популярными у нас они стали сильно позже. Я так и вообще не слышал о таких, хотя целенаправленно копался в той части интернета.
А потом начали набирать популярность всякие курсы. Мне очень помог в своё время курс скиллбокса “UX-аналитик”, он вышел одним из первых. Вели его нынешние отцы EXPF — Искандер Мирмахмадов и всё тот же Виталик Черемисинов. Не то чтобы курс был крутым и полным, наоборот, одна тема — один видос на 10 минут. Но он задавал вектор. Видишь тему — гуглишь книгу.
Я даже как-то написал письмо в AIC типа вот он я, хочу к вам, но на тех собесе Виталика впечатлить не удалось. Зато мы прекрасно поболтали и он накидал тонну фидбека, с которым я перешёл к дальнейшему развитию более структурно.
#кулстори
🔥23👍4❤1🤔1
📌 12. Метод доверительных интервалов
Разберём ещё один метод расчёта АБ и потихоньку будем завершать вводную часть по этой теме.
Классический метод, который на практике я встречал не часто — оценка через доверительные интервалы (CI, confidence intervals). Он простой, хоть и не самый надёжный такой реализации.
Да, технически, интервалы в расчётах АБ заложены везде. Мы же поговорим о классике, когда построение CI это самоцель.
🧐 CI — это диапазон значений, в котором, с определённой вероятностью, находится истинное значение параметра.
Если CI выборок не пересекаются, то это означает стат. значимость в различиях (технически, среднее одной выборки не должно лежать в интервале второй, но на цифрах интервалов мы среднего не видим)
Ограничение: CI предполагают нормальные распределения выборок и теряют в точности на малых выборках.
Пример реализации метода:
#ABtest
Разберём ещё один метод расчёта АБ и потихоньку будем завершать вводную часть по этой теме.
Классический метод, который на практике я встречал не часто — оценка через доверительные интервалы (CI, confidence intervals). Он простой, хоть и не самый надёжный такой реализации.
Да, технически, интервалы в расчётах АБ заложены везде. Мы же поговорим о классике, когда построение CI это самоцель.
🧐 CI — это диапазон значений, в котором, с определённой вероятностью, находится истинное значение параметра.
Если CI выборок не пересекаются, то это означает стат. значимость в различиях (технически, среднее одной выборки не должно лежать в интервале второй, но на цифрах интервалов мы среднего не видим)
Ограничение: CI предполагают нормальные распределения выборок и теряют в точности на малых выборках.
Пример реализации метода:
# Заводим функцию для расчёта CI
calc_ci <- function(df, cl = 0.95) {
mean_metric <- mean(df$metric) # считаем среднее
std_error <- sd(df$metric) / sqrt(nrow(df)) # считаем стандартную ошибку
error_limit <- qt(cl / 2 + .5, df = nrow(df) - 1) * std_error # считаем предел погрешности
lower <- mean_metric - error_limit # считаем нижнюю границу интервала
upper <- mean_metric + error_limit # считаем верхнюю границу интервала
return(c(lower, upper))
}
# Считаем CI для групп
ci_A <- calc_ci(df %>% filter(var == "A"))
ci_B <- calc_ci(df %>% filter(var == "B"))
# Заводим функцию для расчёта CI
def calc_ci(df, cl = 0.95):
mean_metric = np.mean(df['metric']) # считаем среднее
std_error = np.std(df['metric']) / np.sqrt(len(df)) # считаем стандартную ошибку
error_limit = stats.t.ppf(cl / 2 + 0.5, df = len(df) - 1) * std_error # считаем предел погрешности
lower = mean_metric - error_limit # считаем нижнюю границу интервала
upper = mean_metric + error_limit # считаем верхнюю границу интервала
return lower, upper
# Считаем CI для групп
ci_A = calc_ci(df[df['var'] == 'A'])
ci_B = calc_ci(df[df['var'] == 'B'])
#ABtest
👍4
📌 13. Парадокс Симпсона
Как-то я проходил собес и мне задали вопрос:
Я немного подумал и вспомнил пример из теста в моей практике.
О чём там был тест уже не вспомню, но это и не так важно. В этом тесте мы получили хорошие результаты и тестовый вариант выиграл по ключевой метрике.
Всё бы хорошо, но заказчик решил посмотреть его в разрезе платформ. Проблема была в том, что аудитории платформ (iOS vs Android) у нас были неравномерные, одной группы было сильно меньше.
Мы сгруппировали юзеров по платформам и пересчитали тест для каждой в отдельности. В обоих случая тестовый вариант не оправдался.
Этот явление и есть парадокс Симпсона.
По смыслу он немного похож на "Эффект чирлидерш" от Барни Стинсона из HIMYM (if you know — you know).
Я не очень часто с ним сталкивался, во многом потому что сегментация по итогам теста не самое популярное развлечение.
Как его обойти?
🧐 Есть такая штука теорема “Принципа уверенности”, которая утверждает, что, если действие увеличивает вероятность события в каждой группе в отдельности, оно также увеличивает вероятность события во всей популяции.
В соответствии с этой теоремой, я вывел для себя два правила, которых стараюсь придерживаться:
✅ Не сегментировать результаты теста. Этот вариант подходит чаще всего, когда сегментация не несет существенного значения для анализа.
✅ Сегментировать заранее. Если всё же сегментация нужна, то стоит убедиться что группы будут сбалансированы. В идеале равные размеры выборок, но это скорее пожелание, чем правило. Другое дело — размеры выборок минимального сегмента. Если они слишком малы (например, у нас почти нет Android-юзеров), мы можем потерять в стат. мощности.
В таких ситуациях лучше лишний раз подумать над использованием первого правила и не сегментировать вообще.
#ABtest #собесы
Как-то я проходил собес и мне задали вопрос:
- Доводилось ли тебе иметь дело с парадоксом Симпсона?
Я немного подумал и вспомнил пример из теста в моей практике.
О чём там был тест уже не вспомню, но это и не так важно. В этом тесте мы получили хорошие результаты и тестовый вариант выиграл по ключевой метрике.
Всё бы хорошо, но заказчик решил посмотреть его в разрезе платформ. Проблема была в том, что аудитории платформ (iOS vs Android) у нас были неравномерные, одной группы было сильно меньше.
Мы сгруппировали юзеров по платформам и пересчитали тест для каждой в отдельности. В обоих случая тестовый вариант не оправдался.
Этот явление и есть парадокс Симпсона.
Я не очень часто с ним сталкивался, во многом потому что сегментация по итогам теста не самое популярное развлечение.
Как его обойти?
🧐 Есть такая штука теорема “Принципа уверенности”, которая утверждает, что, если действие увеличивает вероятность события в каждой группе в отдельности, оно также увеличивает вероятность события во всей популяции.
В соответствии с этой теоремой, я вывел для себя два правила, которых стараюсь придерживаться:
В таких ситуациях лучше лишний раз подумать над использованием первого правила и не сегментировать вообще.
#ABtest #собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥1
📌 14. Нестандартные тесты
В завершении цикла про АБ, будет полезным рассказать про некоторые их нестандартные вариации. Или другие типы тестов. Кому как нравится, я их условно разделил.
✅ К первой вариации я бы причислил AB/n-тесты. Это расширенная версия АБ, когда в сравнении участвуют 3 и более вариантов. Самый частый метод расчёта таких тестов — дисперсионный анализ (ANOVA).
✅ Ещё отдельно я бы вынес непараметрические тесты. Технически, это те же самые АБ (AБ/н), но методы их расчёта не делают предположений о распределении, как это делают параметрические тесты. К таким методам можно отнести критерии Манна-Уитни или Краскела-Уоллиса (такой непараметрический аналог ANOVA, когда вариантов 3 и более).
✅ И нельзя не упомянуть Байесовских бандитов. В этих тестах алгоритм динамически “приспосабливается” для определения эффективного варианта, при постоянном обновлении данных. В отличии от АБ, где оба варианта наполняются на протяжении всего теста, бандиты постоянно обновляют вероятность выбора каждого варианта. За счёт этого они более гибкие в быстро меняющихся условиях.
Я довольно часто встречал их у ребят из маркетинга, на тестировании креативов, или в CPA на каналах. А вот в классической продуктовой аналитике почти не видел.
Можно ли успешно работать продуктовым аналитиком без этих тестов? Да легко. Но попробовать, хотя бы в образовательных целях, никогда не лишнее 🙂
#ABtest
В завершении цикла про АБ, будет полезным рассказать про некоторые их нестандартные вариации. Или другие типы тестов. Кому как нравится, я их условно разделил.
Я довольно часто встречал их у ребят из маркетинга, на тестировании креативов, или в CPA на каналах. А вот в классической продуктовой аналитике почти не видел.
Можно ли успешно работать продуктовым аналитиком без этих тестов? Да легко. Но попробовать, хотя бы в образовательных целях, никогда не лишнее 🙂
#ABtest
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
📌 Испытательный срок
Вот ты прошёл собес и вышел на работу. На первую или на новую, не важно. Что вообще делать во время испыталки?
У каждой, уважающей себя, компании, новички проходят онбординг, когда тебя знакомят с продуктом и инструментами. Давай разберёмся, на что обращать внимание.
Практически сразу же тебе выдадут доступы для работы — в слак, таск-трекер, сервис по хранению документации, BI-систему и главное — к базам данных.
На онбординге, ты скорее всего получишь какие-то первые задачки, целью которых будет познакомить тебя со структурой данных и инструментарием. Но если онбординга нет, или он не очень информативный (такое часто бывает) — не переживай, сами разберёмся.
✅ В первую очередь тебе нужно изучить продукт. Потыкай там всякие кнопочки, посмотри что как работает. Пообщайся со своим куратором и попытайся понять как устроен бизнес, какая система монетизации продукта и т.д.
✅ Удели внимание метрикам. Скорее всего в твоём продукте уже есть какая-то карта метрик, что из чего состоит и как считается. Даже такая простая штука как DAU в разных компаниях или даже отделах может считаться по разному: у продукта — зареганые уники, у маркетинга — визиты. Попытайся сопоставить экономику с метриками и понять, что больше драйвит бизнес. Иерархия метрик довольно удобная штука, потом будешь использовать её для планирования гипотез.
✅ Когда поймёшь как устроен продукт, можно и в инструментарий погрузиться. Удели особое внимание знакомству с данными. Попроси инженеров рассказать что как куда летит, что с фронта, что с сервера. Изучи основные таблицы, с которыми придётся работать (обычно таблицы по транзакциям, юзерам и событиям).
✅ Поковыряй BI. Посмотри какие дашборды у вас есть, какие используются чаще других. Это даст понимание на какие метрики сильнее опираются менеджеры отделов.
На испыталке никто не ждет от тебя инициативы или геройства. Твоя цель — погрузиться и ничего не испортить. Бюджет на найм в разы больше твоей зарплаты. Никому не хочется тебя выгонять. Не давай повод и ты успешно справишься ❤️
Вот ты прошёл собес и вышел на работу. На первую или на новую, не важно. Что вообще делать во время испыталки?
У каждой, уважающей себя, компании, новички проходят онбординг, когда тебя знакомят с продуктом и инструментами. Давай разберёмся, на что обращать внимание.
Практически сразу же тебе выдадут доступы для работы — в слак, таск-трекер, сервис по хранению документации, BI-систему и главное — к базам данных.
На онбординге, ты скорее всего получишь какие-то первые задачки, целью которых будет познакомить тебя со структурой данных и инструментарием. Но если онбординга нет, или он не очень информативный (такое часто бывает) — не переживай, сами разберёмся.
На испыталке никто не ждет от тебя инициативы или геройства. Твоя цель — погрузиться и ничего не испортить. Бюджет на найм в разы больше твоей зарплаты. Никому не хочется тебя выгонять. Не давай повод и ты успешно справишься ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤5
Закон Тваймана — возможно, самый важный закон во всём анализе данных. Чем необычнее или интереснее данные, тем больше вероятность, что они получены в результате ошибки того или иного рода.
— Формулировка закона Тваймана от К. Марш и Д. Эллиотт
Это закон про интересную особенность аналитиков — когда твоё исследование приводит к сильным положительным результатам, ты радуешься и спешишь поделиться со всеми, показать прорыв. Но если результат резко отрицательный — стараешься найти ошибку.
Я раньше часто так делал, наверное, чтобы показать свою ценность. Со временем всё реже и реже, пока в голове окончательно не улеглась мысль о том, что у меня нет цели гоняться за прорывами. Суть моей работы не в том, чтобы порадовать заказчика, а в том, чтобы предоставить ему объективную картину. И лучше дважды перепроверить, чем ошибочно обнадежить 🙂
#funfact
👍18🤔2❤1
🔗 Руководство по проведению анализа и продуктовых исследований
Приветики, вчера ничего не выкладывал, потому что заканчивал вот эту статью про процесс организации продуктовых исследований, как это делаю я.
Хоть и получилось объёмно, всё равно в теме очень много нюансов и мест для манёвра. Но основной флоу описать получилось.
По уровню там ничего сложного, просто задачи на большие рисерчи новичкам редко ставят.
Приятного прочтения 🍿
https://habr.com/p/781466/
Приветики, вчера ничего не выкладывал, потому что заканчивал вот эту статью про процесс организации продуктовых исследований, как это делаю я.
Хоть и получилось объёмно, всё равно в теме очень много нюансов и мест для манёвра. Но основной флоу описать получилось.
По уровню там ничего сложного, просто задачи на большие рисерчи новичкам редко ставят.
Приятного прочтения 🍿
https://habr.com/p/781466/
Habr
Краткое руководство по анализу данных и проведению продуктовых исследований
Обложка любезно предоставлена DALL-E Привет. Я занимаюсь продуктовой аналитикой уже довольно давно, и так получилось, что чаще всего в работе мне прилетают именно продуктовые рисёрчи. Иногда нужно...
❤18👍7
Вы, наверное, уже нарешали миллион всяких тренировочных задачек, а хотите боевую?
Прилетела сегодня из маркетинга. В общих чертах задачка про моделирование.
📎 Вводная: Маркетплейс, там ты можешь заказать всякие товары с доставкой. Цена доставки не фиксирована и зависит от кучи разных факторов (загруженность курьеров, расстояние и т.д.). Планируется выделять деньги для покрытия части цены доставки, чтобы она была привлекательнее для клиента. К тому же, если цена доставки будет ниже, мы можем увеличить конверсию в покупку.
📎 Дано: Опытным путём установлено, что комфортная цена — N (известно). Мы готовы выделять M денег на один заказ (не известно), сколько это — зависит от итогового бюджета, который тоже не известен. Мы будем брать в эту программу компенсации только те заказы, где при добавлении к расчётной сумме из M столько денег, чтобы получить N в итоге. Если сумма сильно больше N (и даже вся M не поможет прийти к N), мы игнорируем такие заказы.
Чем больше M, тем больше заказов будут смотреться выгоднее и тем больше конверсия в покупку, но тем выше итоговый бюджет на всё это дело, т.к. количество заказов растёт. Снижая M, мы уменьшаем конверсию и тотал заказов, снижая бюджет.
💛 Что нужно на выходе: Нужна модель, которая вычислит оптимальный баланс размера M, бюджета и ожидаемой конверсии. Сроки как обычно, вчера, поэтому имплементировать какого-нибудь Байеса или NLP не вариант, максимально быстрая реализация в небольшой ущерб точности.
Нестандартная задачка, как мы любим, размять мозги 🧐
Прилетела сегодня из маркетинга. В общих чертах задачка про моделирование.
Чем больше M, тем больше заказов будут смотреться выгоднее и тем больше конверсия в покупку, но тем выше итоговый бюджет на всё это дело, т.к. количество заказов растёт. Снижая M, мы уменьшаем конверсию и тотал заказов, снижая бюджет.
Нестандартная задачка, как мы любим, размять мозги 🧐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤔3
Я твой продукт анализировал
Вы, наверное, уже нарешали миллион всяких тренировочных задачек, а хотите боевую? Прилетела сегодня из маркетинга. В общих чертах задачка про моделирование. 📎 Вводная: Маркетплейс, там ты можешь заказать всякие товары с доставкой. Цена доставки не фиксирована…
Расскажу в какую сторону мы пошли.
🔖 Для начала определяем то, что можем определить. У нас есть прогноз траффика на период и история заказов с ценами на доставку.
🔖 Из исторических цен строим гистограмму, как x0 берем наш N, крайний порог x1 вычисляем на глаз — режем выбросы, распределение получается плюс-минус колоколообразным, режем по 2-3 сигмам. Это крайнее значение фиксируем как x1. Мы назвали этот интервал слоном (не спрашивайте).
🔖 Выделяем интеграл от слона, распределяем по гистограмме ещё раз, для удобства. Каждый бин гистограммы это некая категория, в которую, с определённой вероятностью может попасть какая-то цена. Считаем вероятности каждого бина, в сумме это 1 — это будут наши веса. Зная миддл бина и его вес, можем посчитать взвешенную среднюю цену в диапазоне x0-x1. Или вычесть заранее из каждой цены N — это будет взвешенная средняя сумма субсидии.
🔖 Теперь конверсии. Для начала строим линейную модель регрессии (или предсказательную модель, у нас и регрессия и RF плюс-минус выдали похожую точность), чтобы найти взаимосвязь между конверсией и стоимостью доставки. Получается скошенное вправо распределение. Его так же делим на бины, таким образом, что зная средневзвешенную стоимость, мы можем по графику отследить какая конверсия там может быть.
🔖 Зная прогнозируемый траффик, взвешенную цену и конверсию, можем прикинуть бюджет.
Бетка модели готова. Теперь изменяя x1 ("худея" слона) на какой-нибудь шаг, мы можем пересчитывать все остальные показатели. Таким образом мы получаем какое-то множество результатов, которое уже можно визуализировать или прогнать какой-нибудь моделью, в поисках подходящего.
Не то чтобы решение получилось самое изящное из возможных, но в условиях сроков вполне рабочее 🙂
Бетка модели готова. Теперь изменяя x1 ("худея" слона) на какой-нибудь шаг, мы можем пересчитывать все остальные показатели. Таким образом мы получаем какое-то множество результатов, которое уже можно визуализировать или прогнать какой-нибудь моделью, в поисках подходящего.
Не то чтобы решение получилось самое изящное из возможных, но в условиях сроков вполне рабочее 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
📌 Типы компаний
Куда пойти работать, в стабильного IT-гиганта или амбициозный ламповый стартап?
Часто вижу как новички рассуждают про какой-нибудь Яндекс, как будто это предел мечтаний и все туда хотят.
Мне довелось поработать в разных компаниях, больших и не очень, с сильной культурой аналитики и с отсутствующей в принципе. И там и там есть свои плюсы и минусы. Давай разбираться.
Но различия всё таки есть.
Какие я вижу плюсы и минусы корпораций:
💛 Ты в отделе не один — есть с кем обменяться опытом
💛 Обычно это более серьёзная школа аналитики
💛 Нижний квартиль ЗП (важно для новичков) часто выше
💛 Устоявшаяся аналитическая культура, все знают зачем это и умеют с этим работать
💛 Буст технических навыков
💛 Ты мало значишь как единица в контексте продукта, часто тебя нанимают под единственную задачу
💛 Инфраструктура устоявшаяся, живёшь с ней
Плюсы и минусы стартапов:
💛 Гибкость во всём, от выбора удобных тебе инструментов, до построения процессов работы
💛 Огромная свобода действий и степень влияния на продукт
💛 Множество возможностей карьерного роста, хочешь вообще организуй свой отдел и будь там лидом
💛 Ламповая атмосфера
💛 Буст лидовских/организационных навыков
💛 Ты сам себе ревьюер, не с кем обсудить вопросы. Б0льшая цена ошибки
💛 Слабая культура аналитики, тебе придётся учить компанию работать с тобой
💛 “Дух стартапа” — творческий хаос, результаты нужны вчера, а трекеры ещё не работают
Я сам не могу определиться что мне больше нравится. Работая в маленькой компании, начинаешь хотеть суеты, в большой — ламповости 🙂
Куда пойти работать, в стабильного IT-гиганта или амбициозный ламповый стартап?
Часто вижу как новички рассуждают про какой-нибудь Яндекс, как будто это предел мечтаний и все туда хотят.
Мне довелось поработать в разных компаниях, больших и не очень, с сильной культурой аналитики и с отсутствующей в принципе. И там и там есть свои плюсы и минусы. Давай разбираться.
Главная причина, почему мы в этом IT вообще собрались, это деньги. Поэтому сразу определимся — они есть и в стартапах и у гигантов, по этому критерию я бы не выбирал категорию компаний. Мне пишут как HR-ы из корпораций в несколько тысяч человек с вилкой до 4к$, так и стартапы, которые только получили инвестиции и ещё даже не запустили продукт, с вилкой от 7к$. Это очень индивидуальная штука.
Но различия всё таки есть.
Какие я вижу плюсы и минусы корпораций:
Плюсы и минусы стартапов:
Я сам не могу определиться что мне больше нравится. Работая в маленькой компании, начинаешь хотеть суеты, в большой — ламповости 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Куда планируете податься или уже работаете?
Anonymous Poll
39%
В крупняк, серьёзно и стабильно
10%
В стартап, весело и многозадачно
22%
Вообще всё равно, где оффер жирнее
29%
Хоть куда-нибудь бы уже позвали(