Найти в Дзене
Ошибка множественного A/B-теста. Поправка Бонферрони
Провели множественный A/B-тест (три варианта: A, B, C), где каждое сравнение сделано с уровнем значимости (вероятностью ошибки I рода) α = 0.05 (5%). Какая результирующая ошибка всего теста? Для одного теста (A vs B) ошибка 5% означает, что если на самом деле различий нет, то мы всё равно с вероятностью 5% ошибочно решим, что они есть. В тесте 3 парных сравнений: A vs B, A vs C, B vs C. Если тесты независимы, то вероятность не совершить ошибку в одном сравнении: 1 − 0.05 = 0.95. Для трёх независимых тестов: 1 − (1 − α)ᵐ Для 3 тестов: 1 − (1 − α)³ P(нет ошибок) = 0...
1 месяц назад
Словарь A/B-тестировщика: Что значит «прокрасился тест» и при чём тут светофор?
В большинстве систем аналитики результаты тестов подсвечиваются цветами. Это визуальный язык, который помогает быстро принять решение. Означает статистически значимый положительный результат. Действие — внедряем! Гипотеза подтвердилась, новая версия работает лучше. Означает статистически значимый отрицательный результат. Действие — откатываем / не внедряем. Изменение вредит продукту. Нужно проводить ревью и разбираться, почему так вышло. Означает, что статистической значимости нет. Разница между группами есть, но она настолько мала, что может быть случайным шумом...
1 месяц назад
10 этапов (чек-лист) проведения A/B-теста
Прежде чем считать тестовую выборку, ответьте на три вопроса: (!) Если MDE слишком низкий потребуется огромная выборка. Если слишком высокий — пропустите реальный, но скромный успех. Это метрики, которые не должны ухудшиться в процессе теста. Они страхуют нас от негативных последствий. Примеры: повышаем количество установок приложения, контрметрикой будет количество платных подписок. Если ускоряем загрузку, контрметрикой может быть количество технических ошибок. Задача контрметрики — убедиться, что рост одной метрики не «убивает» другую...
1 месяц назад
Выгрузка Я.Метрики через Yandex Cloud Functions в Я.Диск
Вместо еженедельных ручных выгрузок из Яндекс.Метрики гораздо надёжнее настроить бесплатный сервер-пайплайн, который будет регулярно забирать статистику и складывать её в хранилище (Я.Диск) один раз в неделю по понедельникам за прошлую неделю. Ниже готовое решение для Yandex Cloud Functions: скрипт выгружает данные по реферальному трафику за прошлую неделю, корректно обрабатывает пагинацию API и устойчив к временным сбоям благодаря встроенному механизму повторных попыток. Готовые CSV-отчёты автоматически сохраняются на Яндекс...
1 месяц назад
Python-решение для игры Йога (Peg Solitaire, Brainvita)
Йога (английский солитер, Peg Solitaire или Brainvita) — классическая головоломка. На доске 7×7 с центральным крестом из 33 фишек, необходимо оставить как можно меньше фишек на поле, совершая прыжки через соседние фишки (которые при этом удаляются). В начале игры центральная фишка удаляется, так появляется место для прыжка фишек. Самый результативный вариант, когда после последнего хода остаётся только одна фишка на поле. Алгоритм ниже, за 31 ход достигает этой цели. Всего же вариантов этой игры порядка ~10¹⁶ (квадриллион)...
1 месяц назад
Аналитика Lifetime Value (LTV) в когортном анализе
Lifetime Value (LTV) — это метрика, показывающая общую прибыль, которую компания получает от одного клиента за весь период его взаимодействия с продуктом или услугой. Аналитические подходы к анализу LTV... Самый простой и достоверный метод, но он работает только для «зрелых» когорт, по которым накопилось достаточно исторических данных. LTV = (Общий доход от когорты за весь период) / (Размер когорты) Метод позволяет предсказать LTV пользователя уже на ранних этапах. Формула LTV = ARPA (или ARPU) ×...
5 месяцев назад
Сегментный vs Когортный анализ
Вы группируете пользователей по неделям регистрации (Январь, Февраль, Март) и смотрите на их удержание (когорта — месяц). Когорта | Нед.1 | Нед.2 | Нед.3 | Нед.4 Янв. | 100% | 45% | 35% | 30% Фев. | 100% | 50% | 40% | 35% Мар. | 100% | 55% | 45% | 40% Всё отлично! Удержание новых пользователей растёт от когорты к когорте. Например потому что улучшение онбординга, которое мы запустили в конце февраля, сработало — когорта марта показывает лучшие результаты с первой же недели. Дан ответ на вопрос: «Становимся ли мы лучше?» Разделение всех пользователей за март на сегменты по источнику трафика...
5 месяцев назад
Сегментный анализ в продуктовой аналитике
Сегментный анализ (сегментация) — это систематический процесс разделения пользователей на однородные группы (сегменты) на основе общих характеристик, которые определяют их потребности, поведение и ценность для продукта. Популярный метод, основанный на истории транзакций. Каждого пользователя оценивают по трём осям: ▫ Recency (R — давность): как давно была последняя активность или покупка. ▫ Frequency (F — частота): как часто пользователь совершает действия за определённый период. ▫ Monetary (M — денежность): сколько денег пользователь принёс (общая сумма или средний чек)...
5 месяцев назад
Когортный анализ в продуктовой аналитике
Когортный анализ — это метод анализа данных, при котором пользователи (клиенты) разделяются на группы (когорты), которые объединены общим признаком в определенный промежуток времени. Т.е. изучаются признаки поведения групп с течением времени. Простая аналогия: можно измерить среднюю успеваемость всего класса за год. Но это не покажет всей картины. Гораздо информативнее следить за успехами отдельных «когорт» — например, за учениками, которые поступили в 1-й класс в 2020, 2021 и 2022 годах. Так вы увидите, как каждая группа осваивает программу, и сможете сравнить их между собой...
5 месяцев назад
RFM-анализ
💬 RFM-анализ — это метод сегментации клиентской базы, основанный на 3 показателях потребительского поведения. RFM: Recency (давность), Frequency (частота) и Monetary (денежность). RFM-анализ — это один из основных инструментов в арсенале продуктового аналитика. Он позволяет сегментировать пользователей на основе их реального поведения. Для RFM-анализа нужны транзакционные данные. Обычно это таблица, где каждая строка — это одна покупка (или любое другое целевое событие, например, оплата подписки)...
5 месяцев назад
Подсветка синтаксиса SQL в Jupyter Notebook
# Импорт нужных библиотек import duckdb import pandas as pd import numpy as np # Для вывода подсвеченного кода SQL from rich.console import Console from rich.syntax import Syntax console = Console() # Создаем в VRAM БД conn = duckdb.connect(database=':memory:') # Функция для запросов в БД def conn_fn(query_str): ····conn.execute(query_str); # Создаем таблицы в базе данных query_str = """create table employees ( id integer primary key, name varchar(50), city varchar(50), department varchar(50), salary...
5 месяцев назад