Как пройти маршрут
Начинайте без опыта в профессии. Результат маршрута — исследование поведения, система метрик и обоснованный план эксперимента. Переходите дальше, когда можете выполнить задание и объяснить результат.
Здесь 18 основных шагов и 3 шага углубления. Это самостоятельная часть единой программы аналитических профессий: другие карты проходить заранее не нужно. Разделы с одинаковой базой можно пропустить только после решения их задания без подсказки. Фиксированного срока и гарантии трудоустройства нет.
Работайте в цикле: прочитайте объяснение → попробуйте пример → выполните задание → откройте разбор → исправьте ошибку → сохраните результат. Одна отметка может потребовать нескольких занятий. Записывайте время и трудности первых трёх шагов, затем планируйте посильный темп. Обязательные задания основной части выполняются бесплатно. Для локальных программ нужен компьютер; ограничения ОС и доступа указаны в шагах.
Кейс «Круг» и данные вымышлены. На маленькой таблице удобно проверить вычисления руками; она не доказывает спрос, причинность или качество ML-модели. В самостоятельном проекте предстоит изменить данные и требования. Не загружайте реальные персональные или рабочие данные в публичные тренажёры.
Основной текст русский. Для английской документации ведите словарь: термин, смысл своими словами, пример. Перевод браузера допустим, но названия полей и код не переводите. Начните с одного абзаца документации за занятие и постепенно переходите к самостоятельному чтению.
Шаг 1. Подготовить рабочее место и словарь
Разберём на примере
Сервис «Круг» сдаёт учебные комнаты по времени. Это вымышленный кейс: все числа и записи созданы для обучения. Начните с файлов, чтобы уметь повторить работу на другом компьютере. CSV — текстовая таблица: первая строка содержит имена столбцов, последующие строки — записи. Расширение файла обозначает его формат; переименование картинки в CSV таблицу не создаёт. В наших данных одна строка — одно бронирование, суммы хранятся целым числом евроцентов, даты — как год-месяц-день.
Скачать вымышленные бронирования (CSV). Для SQL позже понадобится готовая схема и те же строки.
Что прочитать и посмотреть
- LibreOffice: CSV — Импорт CSV: разделитель, кодировка и типы столбцов. Бесплатная справка, английский; приложение LibreOffice бесплатно.
Что сделать
- Создайте папку krug и внутри raw, work, results. Скачайте bookings.csv по ссылке в этом разделе и сохраните в raw; исходник больше не редактируйте.
- Откройте CSV в LibreOffice Calc: кодировка UTF-8, разделитель — запятая. Проверьте восемь столбцов и шесть строк данных. Сохраните рабочую копию в work в формате ODS.
- Создайте словарь с полями: столбец, смысл, тип, допустимые значения, единица измерения. Запишите вопросы о неизвестных правилах; не подставляйте догадки.
Что сохранить
Таблица, словарь восьми полей и журнал вопросов в results.
Как проверить себя
Снова откройте сохранённую таблицу. Идентификаторы u1 и A сохранились как текст, суммы 2000 не превратились в 20. Дата читается однозначно.
Разбор — откройте после своей попытки
booking_id обозначает бронирование; user_id — учебный код пользователя, room_id — комнату. minutes — длительность забронированного интервала. Для cancelled она не означает фактическое использование. Словарь должен прямо говорить об этом. Файл содержит 6 бронирований, но только 4 разных пользователя.
Шаг 2. Проверять таблицы, доли и средние
Разберём на примере
Руководитель просит «средний доход». Сначала уточните знаменатель: на бронирование, завершённый визит или пользователя. Доля — часть, делённая на целое: 1 отмена из 6 бронирований даёт 16,7%. Среднее чувствительно к большим значениям; медиана — середина отсортированного ряда. Возврат уменьшает поступления, но не превращает их в прибыль: расходы нам неизвестны. Не складывайте проценты разных групп и не считайте среднее средних без размеров групп.
Что прочитать и посмотреть
- LibreOffice: CSV — Импорт CSV: разделитель, кодировка и типы столбцов. Бесплатная справка, английский; приложение LibreOffice бесплатно.
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
Что сделать
- В рабочей таблице добавьте net_cents = charged_cents − refund_cents. Посчитайте сумму и переведите её в евро делением на 100.
- Отфильтруйте completed. Найдите среднюю и медианную длительность только этих визитов. Проверьте числа ручным расчётом.
- Сравните долю отмен с долей пользователей, у которых была отмена. Подпишите числитель и знаменатель каждой метрики.
Что сохранить
Лист расчётов с формулами, единицами измерения и тремя выводами.
Как проверить себя
Пустая ячейка, ноль и отсутствующий пользователь различаются. Формула на отфильтрованном листе не должна случайно включать скрытую отмену.
Разбор — откройте после своей попытки
Поступления после возвратов: (2000+3000+4000+2000+3000−1000)/100 = 130 евро. Завершённые длительности: 60,90,120,60,90; среднее 84, медиана 90 минут. Отменено 1/6 бронирований; отмена есть у 1/4 пользователей. Эти проценты отвечают на разные вопросы.
Шаг 3. Получать строки и итоги с помощью SQL
Разберём на примере
SQL — язык запросов к таблицам. SELECT выбирает столбцы, WHERE оставляет строки по условию, GROUP BY объединяет строки для расчёта итогов. COUNT(*) считает строки; COUNT(column) пропускает NULL — неизвестные значения. Начинайте с маленького набора, в котором можете проверить каждый результат руками. Учебные запросы выполняются в SQLite Fiddle; PostgreSQL появится отдельно там, где нужны его особенности.
SELECT room_id, SUM(charged_cents-refund_cents) AS net_cents
FROM bookings WHERE status='completed'
GROUP BY room_id ORDER BY room_id;
Что прочитать и посмотреть
- SQLBolt — Уроки 1–12: SELECT, условия, JOIN, NULL и группировка. Выполните встроенные задания. Бесплатно, английский, без установки.
- SQLite Fiddle — Официальная SQL-песочница: вставьте учебный SQL и нажмите Run. Бесплатно, английский интерфейс; работаем только с вымышленными данными.
Что сделать
- Пройдите SQLBolt 1–5 и 10–12. Затем откройте SQLite Fiddle, вставьте содержимое bookings.sql из первого шага и выполните его один раз в пустой базе.
- Напишите SELECT для completed, затем итог net_cents по комнате. Используйте SUM(charged_cents-refund_cents).
- Добавьте условие day >= '2026-09-02'. Объясните, почему фильтр по строкам ставится до группировки. Сохраните запросы в results/queries.sql.
Что сохранить
Три SQL-запроса и таблица ожидаемых результатов.
Как проверить себя
Без фильтра итог A равен 6000, B — 7000 евроцентов. После фильтра даты A=2000, B=7000. Укажите, какие строки сформировали результат.
Разбор — откройте после своей попытки
Запрос ниже считает поступления после возвратов по комнатам. Cancelled с нулевыми суммами не меняет итог, но явный фильтр фиксирует бизнес-правило. Если повторно создать таблицу в той же базе, будет ошибка: начните новую сессию, не скрывайте ошибку.
Шаг 4. Соединять таблицы без потери и удвоения строк
Разберём на примере
Справочник хранит описание объекта один раз: код A соответствует комнате «Тихая». Первичный ключ уникально называет запись; внешний ключ связывает запись с другим объектом. JOIN сопоставляет строки по условию. Если одному бронированию соответствуют два платежа, после соединения оно появится дважды. Поэтому перед соединением назовите зерно обеих таблиц — что означает одна строка. LEFT JOIN сохраняет строки слева даже без пары; INNER JOIN оставляет только совпадения.
Что прочитать и посмотреть
- SQLBolt — Уроки 1–12: SELECT, условия, JOIN, NULL и группировка. Выполните встроенные задания. Бесплатно, английский, без установки.
- PostgreSQL: учебник — Разделы The SQL Language и Advanced Features: таблицы, соединения, внешние ключи, транзакции. Бесплатно, английский; команды PostgreSQL не переносите в SQLite без проверки.
Что сделать
- Пройдите SQLBolt 6–9. Создайте rooms(room_id TEXT PRIMARY KEY, name TEXT) и добавьте A/Тихая, B/Большая.
- Соедините bookings и rooms. Сверьте COUNT(*) и сумму net_cents до и после соединения.
- В отдельной CTE создайте платежи (1,1000),(1,1000),(2,2000). Соедините с bookings и объясните, почему сумма charged_cents теперь не является суммой всех бронирований. Сначала сгруппируйте платежи по booking_id.
Что сохранить
Запрос с соединением, проверками количества строк и пояснением отношения «один ко многим».
Как проверить себя
Со справочником остаются 6 строк и 13000 евроцентов net. В варианте с платежами бронирование 1 повторяется; проверка это обнаруживает.
Разбор — откройте после своей попытки
LEFT JOIN rooms USING(room_id) сохраняет шесть бронирований. Платежи имеют другое зерно: один перевод денег. Суммировать поля бронирования после такого соединения опасно. Сначала SELECT booking_id, SUM(amount) FROM payments GROUP BY booking_id; затем соединяйте этот итог.
Шаг 5. Использовать окна и проверять порядок событий
Разберём на примере
Оконная функция считает по группе, сохраняя исходные строки. ROW_NUMBER присваивает номер в заданном порядке; LAG возвращает значение предыдущей строки. В отличие от GROUP BY, можно одновременно видеть отдельное бронирование и место этого бронирования в истории пользователя. Если даты совпадают, добавьте booking_id в ORDER BY, иначе порядок не определён полностью. Дата бронирования и дата события оплаты могут быть разными: выберите нужную заранее.
Что прочитать и посмотреть
- SQLite: оконные функции — Примеры row_number(), PARTITION BY и сумм по окну. Бесплатная документация, английский.
CTE задаёт именованный промежуточный результат: WITH имя AS (запрос). Внешний SELECT затем читает его как таблицу. Так можно сначала вычислить номер строки, а затем отфильтровать его.
Что сделать
- Для каждого user_id пронумеруйте бронирования по day, booking_id. Выведите первые бронирования через CTE и внешний WHERE rn=1.
- Посчитайте накопленные net_cents по дням: сначала сгруппируйте по day, затем примените SUM(...) OVER (ORDER BY day ROWS UNBOUNDED PRECEDING).
- Добавьте копию даты с новым booking_id в рабочую базу. Убедитесь, что порядок внутри пользователя остаётся определённым; исходный файл не меняйте.
Что сохранить
Два оконных запроса и объяснение порядка вычислений.
Как проверить себя
Первые бронирования: 1,2,4,5. Дневные net: 4000,4000,5000; накопленные: 4000,8000,13000.
Разбор — откройте после своей попытки
Фильтрацию rn=1 выполняют снаружи CTE, после расчёта окна. Для u1 первой будет запись 1, следующей — отмена 3. Исключение cancelled до окна меняет вопрос на «первое завершённое бронирование»; явно укажите, какой вопрос решаете.
WITH numbered AS (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY user_id ORDER BY day, booking_id
) AS rn
FROM bookings
)
SELECT user_id, booking_id FROM numbered
WHERE rn = 1 ORDER BY user_id;
WITH daily AS (
SELECT day, SUM(charged_cents - refund_cents) AS net
FROM bookings GROUP BY day
)
SELECT day, net,
SUM(net) OVER (ORDER BY day ROWS UNBOUNDED PRECEDING) AS cumulative_net
FROM daily ORDER BY day;Шаг 6. Написать первые программы на Python
Разберём на примере
Программа выполняет инструкции по порядку. Переменная связывает имя со значением; список хранит несколько значений; цикл повторяет действия. Условие if выбирает ветку. Функция объединяет действия и возвращает результат через return. Начните без библиотек: аналитик или инженер должен понимать, что происходит с одной записью, до обработки тысяч строк. Текст "2000" и число 2000 имеют разные типы; преобразование int может завершиться ошибкой, если текст не является числом.
Что прочитать и посмотреть
- Основы Python — Яндекс Образование — Темы ввода и вывода, условий, циклов, коллекций и функций: решайте задачи по порядку до уверенного решения без подсказки. Бесплатный текст на русском; тренажёр может потребовать аккаунт.
- Учебник Python — Разделы An Informal Introduction, More Control Flow Tools, Data Structures и Errors and Exceptions. Бесплатно, английский; это справочник после первых упражнений, а не единственное объяснение с нуля.
Что сделать
- Пройдите темы ввода, условий, циклов, списков и функций в русскоязычном учебнике. Решите минимум по три задачи каждой темы самостоятельно.
- Напишите функцию net(charged, refund), которая возвращает разность. Для списка пар [(2000,0),(3000,1000),(0,0)] получите общий итог.
- Добавьте проверки: refund неотрицателен и не больше charged. Для неверных данных выдавайте ValueError с понятным сообщением. Проверьте ноль, полный возврат и возврат больше оплаты.
Что сохранить
Файл basics.py, пять коротких примеров вызова и объяснение одной ошибки.
Как проверить себя
Итог примера равен 4000. net(0,0) возвращает 0, net(2000,2000) — 0, net(100,200) сообщает об ошибке.
Разбор — откройте после своей попытки
Внутри функции сначала проверьте if charged < 0 or refund < 0 or refund > charged: raise ValueError("Некорректный возврат"). Затем return charged-refund. Общий итог получите циклом с накоплением. В таком виде правило допускает полный возврат и запрещает превышение оплаты.
Шаг 7. Запускать код в отдельном окружении и хранить версии
Разберём на примере
Окружение отделяет библиотеки проекта от других программ. Терминал — окно для текстовых команд; его текущая папка определяет, где создаются файлы. Git сохраняет историю изменений: commit — именованный снимок выбранных файлов. Репозиторий может оставаться на компьютере, публикация не требуется. Для начала достаточно Python 3, текстового редактора и терминала; Jupyter — необязательная удобная оболочка для исследований.
Что прочитать и посмотреть
- Python: venv — Creating virtual environments и команды активации для своей ОС. Бесплатно, английский.
- Pro Git — Главы «Основы Git»: создание репозитория, запись изменений, история, отмена изменений. Бесплатный текст на русском.
- Установить Python — Выберите установщик Python 3 для своей ОС. На Linux при отсутствии venv установите пакет python3-venv через менеджер пакетов своей системы. Бесплатно; справка на английском.
Что сделать
- Установите Python 3 по ссылкам из официального учебника. Откройте терминал в krug. На Windows проверьте py --version, на macOS/Linux — python3 --version.
- Создайте окружение: Windows — py -m venv .venv, macOS/Linux — python3 -m venv .venv. Запускайте код интерпретатором .venv/Scripts/python.exe (Windows) или .venv/bin/python (macOS/Linux). Это работает без активации.
- Установите pandas командой выбранного интерпретатора -m pip install pandas. Сохраните версии через -m pip freeze > requirements.txt. Создайте .gitignore с .venv/ и __pycache__/. Выполните git init, git add basics.py requirements.txt .gitignore, git commit -m "First calculation". При первом commit настройте имя и email локально по Pro Git.
Что сохранить
Рабочее окружение, requirements.txt, первый commit и инструкция запуска в обычном текстовом файле.
Как проверить себя
Запустите basics.py из нового окна терминала. Объясните, какой Python использован. Проверьте git status: окружение не попало в историю.
Разбор — откройте после своей попытки
Команда .venv/bin/python basics.py запускает файл на macOS/Linux; на Windows используйте .venv/Scripts/python.exe basics.py. Путь к программе и путь к файлу — разные аргументы. Если терминал не видит файл, сначала проверьте текущую папку; переустановка библиотек здесь не поможет.
Шаг 8. Обработать таблицу в pandas и сохранить проверки
Разберём на примере
DataFrame — таблица в памяти Python. Чтение CSV не гарантирует правильность типов: идентификаторы, пропуски и числа требуют проверки. Фильтр выбирает строки, groupby собирает их в группы, merge соединяет таблицы. Проверки assert останавливают учебный скрипт при нарушении ожидания; для рабочих загрузок позже понадобится явная обработка ошибок. Не исправляйте исходный CSV вручную: код преобразования должен объяснять каждую правку.
Что прочитать и посмотреть
- pandas: вводные уроки — Read and write tabular data, Select a subset, Calculate summary statistics, Combine data. Бесплатно, английский.
Что сделать
- Создайте analysis.py рядом с raw. Прочитайте raw/bookings.csv с помощью pd.read_csv. Выведите shape, dtypes, isna().sum() и число дубликатов booking_id.
- Добавьте net_cents и посчитайте итог по room_id. Сравните результат с ручным расчётом; сохраните results/by_room.csv без индекса.
- В рабочей копии добавьте дубликат строки и пустую сумму. Напишите проверки, которые обнаружат обе ошибки. Не заменяйте все пропуски нулями: сначала решите, что означает отсутствие значения.
Что сохранить
Повторяемый скрипт, итоговый CSV и проверка двух испорченных входов.
Как проверить себя
При чистом запуске итог A=6000, B=7000. Повторный запуск даёт тот же файл. Ошибочный вход обнаруживается до публикации результата.
Разбор — откройте после своей попытки
Проверки: assert df.booking_id.is_unique; assert df[["charged_cents","refund_cents"]].notna().all().all(). Затем df["net_cents"]=df.charged_cents-df.refund_cents. Группировка: df.groupby("room_id",as_index=False)["net_cents"].sum(). Отсутствующее число может означать сбой выгрузки, поэтому ноль без объяснения недопустим.
Шаг 9. Сформулировать продуктовый вопрос и дерево метрик
Разберём на примере
Команда «Круга» предлагает упростить экран бронирования. Продуктовый аналитик помогает решить, стоит ли внедрять изменение и как проверить его пользу. Метрика — число с однозначным правилом расчёта. Дерево метрик связывает итог с составляющими: поступления = число платящих пользователей × средние поступления на платящего. Рост числа нажатий сам по себе не доказывает пользу: пользователи могут чаще ошибаться.
Что прочитать и посмотреть
- Amplitude: воронка — Порядок событий, уникальные пользователи и окно конверсии. Бесплатная документация, английский; аккаунт продукта для задания не нужен.
Что сделать
- Напишите одностраничный запрос: какое решение принимаем, для кого, к какому сроку, какие данные доступны.
- Определите основную метрику — долю пользователей с завершённым бронированием за 7 дней после регистрации. Укажите календарь, часовой пояс, критерий регистрации и завершения.
- Добавьте две защитные метрики: отмены и обращения в поддержку. Нарисуйте дерево поступлений и назовите возможное противоречие между его ветвями.
Что сохранить
Карточка решения и словарь пяти метрик.
Как проверить себя
У каждой метрики есть числитель, знаменатель, период и исключения. Ваша формулировка позволяет другому человеку написать такой же запрос.
Разбор — откройте после своей попытки
Упрощение может увеличить число бронирований и одновременно долю отмен. Поэтому решение по одному числу опасно. «Конверсия выросла» требует уточнения: у кого, из какого события в какое и за какое окно. Семидневная метрика требует дождаться полного окна наблюдения.
Шаг 10. Описать события и проверить сбор данных
Разберём на примере
Событие — запись о произошедшем действии. event_name описывает действие, event_time — время, user_id — участника, event_id — уникальный идентификатор записи. Свойства уточняют контекст: booking_id, room_id, версия приложения. План событий — договор с разработчиком: когда отправляется запись, какие поля обязательны и как проверить её получение. Повторная отправка при сетевой ошибке не должна превращаться в два действия.
Что прочитать и посмотреть
- Amplitude: план событий — События и их свойства в tracking plan. Бесплатная документация, английский; платные функции для задания не требуются.
Что сделать
- Опишите события registration_completed, room_viewed, booking_started, booking_completed. Для каждого задайте момент отправки, обязательные свойства и владельца.
- Создайте журнал из 12 вымышленных событий четырёх пользователей. Включите повтор event_id, неизвестное имя события и завершение без booking_id.
- Составьте проверки схемы, дублей и последовательности. Исправьте только рабочую копию, сохранив причины исключения каждой строки.
Что сохранить
План событий и журнал проверки: правило, плохая строка, действие.
Как проверить себя
Оплата подтверждается серверным фактом по договорённости кейса; нажатие кнопки не выдаётся за завершённое бронирование.
Разбор — откройте после своей попытки
Повтор одного event_id можно удалить после проверки одинакового содержимого. Два разных event_id с одинаковым booking_id требуют выяснения семантики. Отсутствие booking_started иногда вызвано потерей телеметрии: нельзя автоматически объявлять такое бронирование невозможным.
Шаг 11. Посчитать воронку с окном конверсии
Разберём на примере
Воронка показывает, сколько участников проходит последовательность событий. Важно считать пользователей, а не число кликов, соблюдать порядок и ограничить время перехода. Для упражнения у шести зарегистрированных пользователей есть просмотр комнаты; u1,u2,u3,u4 начали бронирование; u1,u2,u3 завершили его. У u3 завершение произошло через 9 дней после регистрации, у остальных — в течение суток. Окно конверсии выбирают до расчёта.
Что прочитать и посмотреть
- Amplitude: воронка — Порядок событий, уникальные пользователи и окно конверсии. Бесплатная документация, английский; аккаунт продукта для задания не нужен.
Что сделать
- Запишите исходные факты в таблицу с user_id и временем каждого этапа. Для отсутствующих событий оставьте пропуск.
- Посчитайте воронку за 7 дней: просмотр → начало → завершение. Сначала вручную, затем SQL или pandas.
- Измените окно на 14 дней. Объясните изменение результата и предложите проверку причины потери пользователей между началом и завершением.
Что сохранить
Таблица воронки, запрос и один проверяемый вопрос для исследования.
Как проверить себя
За 7 дней завершили 2 из 6, за 14 — 3 из 6. Повторные просмотры не увеличивают число пользователей.
Разбор — откройте после своей попытки
Семидневная конверсия в завершение — 33,3%, конверсия из начала — 2/4=50%. За 14 дней это 50% и 75%. Различие вызвано определением окна, а не улучшением продукта. По одной воронке нельзя узнать причину отказа; понадобятся дополнительные события или беседа с пользователями.
Шаг 12. Считать удержание и зрелость когорт
Разберём на примере
Когорта объединяет пользователей по общему старту, например неделе первой завершённой брони. Удержание показывает возвращение к выбранному действию. В учебном определении week-1 retention — доля участников, совершивших новую завершённую бронь через 7–13 суток после первой. Это отличается от «вернулся когда-нибудь позднее». Пользователь, зарегистрированный вчера, ещё не мог пройти полное окно; такие наблюдения нельзя считать невозвратами.
Что прочитать и посмотреть
- Amplitude: удержание — Начальное событие, событие возврата и интервалы удержания. Бесплатная документация, английский; считаем на собственных таблицах.
Что сделать
- Создайте когорту из четырёх пользователей: первый визит у всех 1 сентября, следующий у u1 — 8 сентября, u2 — 14 сентября, u3 — 20 сентября, у u4 его нет.
- На дату среза 15 сентября посчитайте week-1 retention. Затем повторите срез на 5 сентября и опишите, почему метрика ещё не готова.
- Постройте таблицу двух когорт с числом участников и зрелыми окнами. Явно отличайте 0% от «недостаточно времени».
Что сохранить
Когортная таблица и точное определение возврата.
Как проверить себя
В интервал 7–13 суток попадают u1 и u2: 2/4=50%. Срез 5 сентября не позволяет оценить этот показатель.
Разбор — откройте после своей попытки
У u2 разница 13 суток, поэтому он включён; у u3 — 19 суток, он не входит. На раннем срезе нужна отметка «окно не завершено», а не 0%. Чтобы сопоставлять когорты, сохраняйте одинаковые определения начального и повторного события.
Шаг 13. Связать поведение с экономикой продукта
Разберём на примере
Команда хочет покупать рекламу. CAC — расходы на привлечение, делённые на число привлечённых клиентов в определённом правиле атрибуции. Маржинальный доход здесь определим как поступления после возвратов минус переменные расходы. LTV требует горизонта, удержания и модели будущего: нельзя назвать сегодняшнюю выручку пожизненной ценностью клиента. Учебная кампания стоила 120 евро и привела 10 новых платящих пользователей. Их поступления за 30 дней — 200 евро, переменные расходы — 80.
Что прочитать и посмотреть
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
- Amplitude: удержание — Начальное событие, событие возврата и интервалы удержания. Бесплатная документация, английский; считаем на собственных таблицах.
Что сделать
- Посчитайте CAC, 30-дневный маржинальный доход на клиента и результат после рекламных расходов.
- Повторите расчёт, если кампания привела только 8 новых клиентов при тех же общих поступлениях и расходах.
- Напишите три ограничения: органические пользователи, атрибуция и неполный горизонт. Предложите данные для следующего решения о бюджете.
Что сохранить
Таблица экономики с формулами и записка об ограничениях.
Как проверить себя
Не смешивайте выручку, маржинальный доход и прибыль компании. Расходы на рекламу не вычитаются дважды.
Разбор — откройте после своей попытки
CAC=120/10=12 евро; маржинальный доход на клиента=(200−80)/10=12 евро. После рекламы остаётся 0 до постоянных расходов. Для 8 клиентов оба показателя равны 15 евро; общий результат не меняется. Это ещё не доказательство выгодности будущей кампании.
Шаг 14. Освоить выборку и статистическую неопределённость
Разберём на примере
Наблюдения меняются случайно, даже если продукт не изменился. Выборка — наблюдаемая часть интересующей нас совокупности. Смещение возникает, когда она систематически отличается от этой совокупности: например, опросили только довольных посетителей. Доверительный интервал — результат процедуры, которая при повторениях с оговорёнными условиями покрывает истинный параметр с заданной частотой. Он не исправляет плохой сбор данных.
Что прочитать и посмотреть
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
Что сделать
- Разберите в учебнике выборку, распределение, стандартную ошибку и доверительный интервал. Для 20 успехов из 100 вычислите долю p и приближение SE=sqrt(p*(1-p)/n).
- Посчитайте приближённый интервал p ± 1.96*SE. Повторите для 200 успехов из 1000.
- Составьте пример смещённой выборки и объясните, почему увеличение её размера не решает проблему. Для редких событий отметьте ограничение нормального приближения.
Что сохранить
Расчёты двух интервалов и описание одного источника смещения.
Как проверить себя
При одинаковой доле больший размер уменьшает случайную погрешность. Интервал не называется вероятностью «истина находится здесь».
Разбор — откройте после своей попытки
Для n=100 SE=0,04, интервал примерно 12,16–27,84%. Для n=1000 SE≈0,01265, интервал 17,52–22,48%. Оба основаны на независимых наблюдениях и приближении; много событий одного пользователя не равны такому же числу независимых пользователей.
Шаг 15. Спроектировать и разобрать A/B-тест
Разберём на примере
A/B-тест случайно назначает участникам вариант интерфейса. Единица назначения должна соответствовать анализу: один пользователь остаётся в одном варианте. До запуска задают основную метрику, минимальный полезный эффект, длительность, правило остановки и защитные показатели. p-value оценивает совместимость данных с нулевой гипотезой в выбранном тесте; он не означает вероятность истинности гипотезы. В учебном результате A: 200 успехов из 1000, B: 240 из 1000.
Что прочитать и посмотреть
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
Что сделать
- Составьте паспорт теста нового экрана: гипотеза, назначение по пользователю, исключения, 7-дневное окно и проверка полноты данных. Для исходной конверсии p=0.2 и полезного эффекта delta=0.04 оцените число пользователей на группу: n=2*(1.96+0.84)^2*p*(1-p)/delta^2, округление вверх. Это приближение для независимых долей, двустороннего уровня 5% и мощности около 80%.
- Посчитайте абсолютную и относительную разницу конверсий. Для учебного интервала разницы используйте SE=sqrt(pA*(1-pA)/nA+pB*(1-pB)/nB).
- Проверьте баланс групп, дубли пользователей и одинаковый срок наблюдения. Напишите решение с учётом интервала и отсутствующих данных по отменам.
Что сохранить
Паспорт эксперимента и одностраничный разбор результата.
Как проверить себя
Абсолютный эффект измеряется процентными пунктами. Относительный эффект имеет другой знаменатель. Победа не объявляется только по положительной точечной оценке.
Разбор — откройте после своей попытки
Разница 24%−20%=4 процентных пункта; относительный рост 4/20=20%. SE≈0,01850, приближённый 95%-интервал разницы 0,37–7,63 п.п. Без проверки назначения, зрелости и защитных метрик решение о полном запуске преждевременно. Постоянное подглядывание с остановкой при удобном p-value нарушает обычную процедуру.
План даёт 1568 пользователей на группу. При 200 новых участниках в сутки на обе группы набор займёт минимум 16 суток; затем нужно дождаться полного семидневного окна последней группы. До запуска также учитывают календарные циклы и возможные потери. Результат по 1000 участникам в начале урока представляет отдельный учебный пример расчёта интервала; он не соответствует этому плану размера.
Шаг 16. Показать результат и выбрать следующий шаг
Разберём на примере
После расчётов команда должна принять решение. Начните записку с вопроса и короткого вывода, затем покажите доказательство и ограничение. График выбирайте по сравнению: столбцы для групп, линия для времени, таблица для точных чисел. Аномалия — неожиданное отклонение — может возникнуть из-за поведения, состава аудитории или ошибки сбора. Если вывод зависит от определения, подпишите его рядом с числом.
Что прочитать и посмотреть
- Tableau: обучение — Бесплатные вводные видео: подключение данных, диаграммы, фильтры и dashboard. Английский; используйте только открытые уроки.
- Amplitude: план событий — События и их свойства в tracking plan. Бесплатная документация, английский; платные функции для задания не требуются.
Что сделать
- Для воронки из предыдущего задания сделайте таблицу и столбчатую диаграмму в Calc. Подпишите окно 7 дней и численность каждого этапа.
- Разберите падение общей конверсии: в периоде 1 группа новых пользователей дала 1/10, возвращающихся — 8/10; в периоде 2 новые дали 9/90, возвращающиеся — 8/10. Посчитайте общую долю и доли внутри групп.
- Напишите записку из пяти абзацев: решение, наблюдение, возможные причины, ограничения, следующий способ проверки. Дайте человеку объяснить её своими словами.
Что сохранить
График и одностраничная записка с проверяемым следующим действием.
Как проверить себя
Диаграмма совпадает с запросом. Изменение состава аудитории не названо ухудшением внутри каждой группы.
Разбор — откройте после своей попытки
Общая конверсия изменилась с 9/20=45% на 17/100=17%, хотя в группах осталось 10% и 80%. Причина арифметического изменения — большая доля новых пользователей. Почему их стало больше, из этих чисел неизвестно; проверьте источники привлечения и полноту событий.
Шаг 17. Защитить самостоятельное продуктовое исследование
Разберём на примере
Исследуйте вымышленный сервис записи на занятия: выясните, на каком этапе пользователи прекращают запись, и предложите способ проверить причину. Если создаёте данные сами, сохраните правила генерации отдельно от анализа. Выводы такого проекта описывают учебную симуляцию.
Что прочитать и посмотреть
- Amplitude: план событий — События и их свойства в tracking plan. Бесплатная документация, английский; платные функции для задания не требуются.
- Amplitude: воронка — Порядок событий, уникальные пользователи и окно конверсии. Бесплатная документация, английский; аккаунт продукта для задания не нужен.
- Amplitude: удержание — Начальное событие, событие возврата и интервалы удержания. Бесплатная документация, английский; считаем на собственных таблицах.
Что сделать
- Попросите другого человека подготовить журнал 30 пользователей за 28 дней: регистрация, начало записи, завершение, отмена. Либо создайте его самостоятельно, явно отметив ограничение. Добавьте дубли и незрелую последнюю когорту.
- Без копирования готовых ответов составьте словарь метрик, проверки данных, воронку и удержание. Покажите один разрез и объясните, почему он выбран.
- В середине работы измените требование: теперь важны только впервые платящие. Пересчитайте результат, запишите последствия. Подготовьте пять слайдов или страниц: вопрос, данные, метод, вывод, следующий проверяемый шаг.
Что сохранить
Воспроизводимый проект: исходник, SQL/Python, проверки, словарь и короткая записка.
Как проверить себя
Проверяющий воспроизводит один результат и получает честный ответ на вопрос «можно ли сделать причинный вывод?». Все ошибки и изменения прослеживаются.
Разбор — откройте после своей попытки
В наблюдательном журнале можно описать поведение, но эффект нового экрана причинно не установлен. На защите укажите число исключённых пользователей, объясните незрелость последней когорты и назовите данные, которых не хватает для решения.
Шаг 18. Проверить готовность и выбрать вакансии
Разберём на примере
Название «Product Analyst» не задаёт одинаковые обязанности во всех компаниях. Сравнивайте задачи, уровень самостоятельности, язык команды и условия работы. Европа — основной ориентир этой программы; вакансии РФ помогают увидеть совпадения и отличия. Старшие вакансии показывают дальнейшее развитие, но не превращают весь их список в обязательный входной порог. Диплом, местный язык и опыт могут быть отдельными условиями работодателя. Учебный проект не заменяет коммерческий опыт.
Что прочитать и посмотреть
- Pro Git — Главы «Основы Git»: создание репозитория, запись изменений, история, отмена изменений. Бесплатный текст на русском.
Что сделать
- Соберите пять свежих европейских и три российских вакансии. Запишите дату, страну, реальный уровень по обязанностям, обязательные требования и пожелания в разные столбцы. Обновляйте ссылки перед откликом.
- Для каждого требования приложите своё доказательство: запрос, словарь метрик, план событий, паспорт эксперимента и итоговое исследование. Отметьте «делал самостоятельно», «с подсказкой» или «пока не делал». Выберите три пробела и задания для их закрытия.
- Попросите знакомого провести 20-минутное собеседование по вашему проекту. Объясните задачу на русском и кратко на английском: problem, method, result, limitation. Выполните новое небольшое задание без готового решения и запишите, где потребовалась помощь.
Что сохранить
Матрица вакансий, портфолио из собственных файлов и план закрытия трёх пробелов.
Как проверить себя
Другой человек может открыть проект, повторить ключевой результат и задать вопрос о неудачном варианте. В резюме учебные проекты обозначены как учебные.
Разбор — откройте после своей попытки
«Знаю SQL» не является доказательством. Подойдёт ссылка на ваш файл запроса, входные данные, ожидаемый результат и описание ошибки, которую запрос выявляет. Если проверяющего пока нет, отметьте внешнюю проверку как незавершённую; не заменяйте её галочкой.
Шаг 19. Оценить размер теста и множественные проверки
Разберём на примере
Мощность — вероятность обнаружить заданный эффект при выбранной процедуре. Малый тест может не отличить практически полезное изменение от шума. MDE — минимальный эффект, под который планируют размер. Проверка многих метрик увеличивает вероятность случайной находки; заранее выделенная основная метрика уменьшает свободу выбрать удобный результат.
Что прочитать и посмотреть
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
Что сделать
- Для базовой конверсии 20% и эффекта 4 п.п. оцените размер каждой группы приближением 2*(1.96+0.84)^2*p*(1-p)/delta^2.
- Уменьшите эффект до 2 п.п. и сравните размер. Объясните, почему точный план требует проверки допущений и длительности окна.
- Опишите порядок проверки основной метрики и трёх исследовательских разрезов. Разделите подтверждающий и поисковый анализ.
Что сохранить
Расчёт мощности как приближение и план проверок.
Как проверить себя
Размер округлён вверх; число пользователей не перепутано с событиями. При уменьшении эффекта вдвое размер примерно учетверяется.
Разбор — откройте после своей попытки
Получается 1568 пользователей на группу для 4 п.п. и 6272 для 2 п.п. Это приближение для двух независимых долей, двустороннего уровня 5% и мощности около 80%; кластеризация, потери и другие процедуры меняют план.
Шаг 20. Различать причинный эффект и изменение во времени
Разберём на примере
После запуска выручка выросла, но одновременно начался учебный сезон. Сравнение «до/после» смешивает действие продукта и сезонность. Difference-in-differences сравнивает изменение экспериментальной и сопоставимой контрольной группы. Для интерпретации нужен обоснованный параллельный тренд: без вмешательства группы должны были бы меняться сопоставимо. Проверяйте предысторию и другие изменения в группах.
Что прочитать и посмотреть
- Scott Cunningham: Difference-in-Differences Fundamentals — учебник автора, английский, бесплатно. Начните с простого сравнения двух групп и допущения parallel trends; сложные варианты пока пропустите.
- Introduction to Modern Statistics — Темы описания данных, вероятности, выборки, доверительных интервалов и проверки гипотез. Читайте только тему текущего шага и разбирайте один пример. Бесплатный учебник, английский.
Что сделать
- Для группы изменения возьмите 100 до и 130 после, для сравнения — 80 и 100. Посчитайте разность изменений.
- Нарисуйте ещё четыре периода до запуска. Придумайте пример нарушения параллельных трендов.
- Напишите, почему отбор групп по их будущему росту недопустим. Предложите рандомизированный тест, если он осуществим.
Что сохранить
Учебный расчёт и список допущений причинного вывода.
Как проверить себя
Разность изменений равна 10, но не называется доказанным эффектом без обоснования дизайна.
Разбор — откройте после своей попытки
(130−100)−(100−80)=10. Если в первой группе открылись новые комнаты, различие может быть вызвано ими. Нужны данные о сопутствующих изменениях, предыстории и механизме отбора; учебные четыре числа не позволяют проверить это.
Шаг 21. Организовать работу над метриками и дальнейший рост
Разберём на примере
По мере роста команды возникает несколько определений активного пользователя. Управление метриками означает договориться о смысле, владельце, проверке и порядке изменения. Аналитик отвечает за объяснимость расчёта, но изменение бизнес-правила согласует с теми, кто принимает решение. Углубление можно продолжить в экспериментах, монетизации или аналитике отдельного продукта.
Что прочитать и посмотреть
- Amplitude: план событий — События и их свойства в tracking plan. Бесплатная документация, английский; платные функции для задания не требуются.
- Pro Git — Главы «Основы Git»: создание репозитория, запись изменений, история, отмена изменений. Бесплатный текст на русском.
Что сделать
- Выберите пять метрик проекта и назначьте владельца определения, источника и проверки.
- Измените правило активности: вместо входа в приложение требуется завершённая запись. Оцените, какие отчёты и исторические сравнения затронуты.
- Составьте план развития на три проекта с внешней проверкой. При использовании AI сохраните запрос и самостоятельно проверьте формулы, SQL и ссылки.
Что сохранить
Версионируемый словарь и план развития по фактическим пробелам.
Как проверить себя
Изменение определения имеет дату, причину и предупреждение о несопоставимости истории.
Разбор — откройте после своей попытки
Нельзя незаметно заменить формулу в старом графике. Можно пересчитать историю при доступности исходных событий, сохранив обе версии и объяснив разрыв. Ответ AI — черновик: совпадение результата на одной таблице не доказывает корректность на дублях и пропусках.