Для каждой задачи определите, какая единица рандомизации и анализа корректна, как влияет ICC и design effect, и какой метод inference использовать.
Компания запускает гео-эксперимент: в 8 городах повышают цену доставки (тест), в 8 оставляют старую (контроль). В каждом городе по 200 000 пользователей, всего 3.2M пользователей.
Аналитик выгружает все заказы пользователей за период эксперимента и запускает обычный t-test по среднему чеку на уровне заказов (N > 5M). Получает p = 0.0001 и пишет в отчёте: «эффект значим, повышаем цены».
Проблема: рандомизация проведена по городам, а анализ — по миллионам заказов/пользователей. Нарушено допущение независимости наблюдений, effective sample size определяется числом городов (16), а не числом заказов.
Последствия: стандартные ошибки сильно занижены, p-value искусственно мал. Реальная ошибка первого рода намного выше 5%, вывод о значимости может быть ложноположительным.
Правильный подход: агрегировать метрики до уровня города (16 наблюдений) и сравнивать средние по городам, либо использовать регрессию с cluster-robust SE по городам / randomization inference с перестановками treatment между 16 городами.
У вас эксперимент в розничной сети: 30 магазинов в тесте и 30 в контроле. Средний магазин обслуживает m = 2000 уникальных покупателей за период эксперимента.
Из pre-period оценили ICC по выручке на покупателя: ICC = 0.02. Нужно оценить design effect и понять, насколько «сжимается» эффективный размер выборки.
Используем формулу:
Подставим числа:
То есть дисперсия метрики примерно в 41 раз выше, чем при независимых наблюдениях.
Если всего покупателей n = 60 × 2000 = 120 000, то эффективный размер выборки:
Вывод: хотя в эксперименте участвуют 120k покупателей, по информативности он ближе к эксперименту с ~3k независимых наблюдений.
Вы планируете гео-эксперимент по 20 городам (10 тест, 10 контроль). В каждом городе ~100 000 пользователей. Хотите детектировать uplift +3% по выручке на пользователя с мощностью 80%.
Из исторических данных оценили ICC по выручке: 0.01. При user-level предположении power-анализ показывает, что 2M пользователей более чем достаточно.
Шаг 1. Оцените design effect. При m = 100k пользователей на город и ICC = 0.01:
Шаг 2. Эффективный размер выборки по пользователям:
Но ключевой ограничитель — число кластеров: всего 20 городов (10 vs 10). Многие методы анализа фактически работают с N = 20 (по одному наблюдению на город).
Вывод: реальная мощность определяется не количеством пользователей, а количеством городов. Для детектирования +3% uplift, скорее всего, 20 городов недостаточно, потребуется либо больше городов, либо более крупный эффект, либо более длинный период (для снижения шума на уровне городов).
Вы оценили ICC по метрике GMV per user для кластеров «курьерская зона» и получили ICC ≈ 0.0002. Средний размер кластера m = 5000 пользователей.
Коллега говорит: «ICC почти ноль, давайте считать, что его нет, и использовать обычный user-level t-test без поправок».
Посчитаем design effect:
Даже при «почти нулевом» ICC = 0.0002, из-за большого размера кластера итоговый DEFF ≈ 2. То есть дисперсия вдвое выше, чем мы бы предполагали при независимых наблюдениях.
Вывод: игнорировать ICC нельзя: вы занижаете стандартные ошибки примерно в √2 раза и завышаете значимость. Нужно либо учитывать clustering (cluster-robust SE), либо агрегировать метрики до уровня кластера.
Логистическая команда хочет протестировать новый алгоритм распределения заказов по курьерам. Обсуждаются три варианта эксперимента:
A. Рандомизация по заказам: каждый заказ независимо попадает в тест или контроль.
B. Рандомизация по курьерам: каждый курьер закреплён либо за тестом, либо за контролем, весь поток заказов делится между ними.
C. Рандомизация по курьерским зонам: все курьеры и заказы в зоне либо в тесте, либо в контроле.
Вариант A (по заказам): сильное нарушение SUTVA. Нагрузка на курьеров зависит от mix тест/контроль, заказы конкурируют за одних и тех же курьеров. Эффект одних заказов влияет на время доставки других.
Вариант B (по курьерам): лучше, но всё ещё есть интерференция: заказы в одной зоне конкурируют между тестовыми и контрольными курьерами.
Вариант C (по зонам): наиболее чистый в терминах каузальности. Внутри зоны все живут в одном treatment, взаимодействия остаются внутри кластера, между зонами независимость куда более правдоподобна.
Рекомендация: выбирать единицу рандомизации на уровне курьерской зоны (C) и далее учитывать clustering в анализе (агрегация по зонам или cluster-robust SE).
Эксперимент в офлайн-рознице: 12 магазинов в тесте, 12 в контроле. Магазины сильно различаются по размеру: топ-3 магазина дают 60% общей выручки, остальные 21 магазин — 40%.
Аналитик агрегирует метрику «выручка на магазин» и считает простой средний эффект по магазинам (невзвешенный t-test по 24 точкам).
Проблема: сильная гетерогенность кластеров. Невзвешенный анализ по магазинам даёт каждому магазину равный вес, хотя вклад в общий бизнес радикально различается.
Возможные подходы:
Вывод: при кластерной рандомизации важно не только количество кластеров, но и их размер. Взвешивание помогает приблизить оценку к бизнес-эффекту.
Социальная сеть тестирует новый алгоритм показа Stories. Рандомизация по пользователям: 50% видят новый алгоритм (тест), 50% — старый (контроль). Метрика: среднее число просмотров Stories per user.
Пользователи из теста начинают чаще выкладывать Stories (новый алгоритм отдаёт им больше показов), их друзья (в том числе в контроле) видят больше контента и тоже становятся активнее.
Проблема: network spillover. Treatment влияет не только на метрику самих treatment-пользователей, но и на их друзей в контроле. Нарушено допущение «отсутствия интерференции» на уровне пользователей.
Последствия: часть uplift в контроле на самом деле вызвана treatment у друзей. Наивная оценка эффекта при rollout может быть смещена: при 100% rollout структура взаимодействий изменится.
Что делать: рассматривать кластеры по социальному графу (компоненты, сообщества) как единицу рандомизации; измерять, как метрика в контроле зависит от доли друзей в тесте; использовать специальные дизайны для графовых экспериментов (clustered network experiments).
Эксперимент: 20 регионов в тесте, 20 в контроле. В каждом регионе примерно одинаковое число пользователей. ICC по CR оценили как 0.03.
Аналитик хочет понять, насколько наивный t-test по пользователям занижает стандартные ошибки по сравнению с корректным кластерным анализом.
Design effect показывает, во сколько раз возрастает дисперсия. Соответственно, inflation factor для стандартной ошибки — это √DEFF.
Если средний размер кластера m, то:
Например, если m = 10 000 пользователей на регион:
Вывод: наивный t-test по пользователям может недооценивать стандартную ошибку более чем в 10–15 раз, а p-value — быть на порядки ниже реальных.
Вы готовите гео-эксперимент по городам и хотите заранее оценить ICC по метрике GMV per user, чтобы правильно посчитать мощность. Есть исторические данные за 3 месяца по тем же городам.
Как практически оценить ICC до запуска эксперимента и какие подводные камни учесть?
Как оценить:
Подводные камни:
EdTech-платформа проводит эксперимент: новая методика преподавания математики. Рандомизация по классам: 25 классов в тесте, 25 в контроле (всего 50 классов, ~1500 учеников).
Аналитик считает t-test по оценкам учеников (N = 1500) и получает p = 0.01. При этом, если агрегировать оценки до уровня класса (N = 50), p ≈ 0.12.
Проблема: рандомизация по классам, а анализ по ученикам. Внутри класса оценки скоррелированы (общий учитель, контекст), поэтому ученики не независимы. User-level t-test раздувает N и занижает SE.
Правильный подход: анализировать метрику на уровне класса (средний балл по классу) и использовать t-test/перестановочный тест по 50 наблюдениям, либо регрессию с cluster-robust SE по классам.
Вывод: p = 0.01 на уровне учеников — ложное ощущение значимости; p ≈ 0.12 на уровне классов честно отражает неопределённость.
Гео-эксперимент: всего 8 регионов (4 тест, 4 контроль). Каждый регион крупный, пользователей много, но число кластеров очень маленькое.
Как корректно анализировать такой эксперимент и чего точно не стоит делать?
Чего нельзя делать:
Что можно делать:
Вы проводите кластерный эксперимент по магазинам (40 магазинов в тесте, 40 в контроле). Хотите использовать CUPED с pre-period выручкой на магазин, чтобы снизить дисперсию метрики.
Как правильно применять CUPED в этом случае и на каком уровне строить регрессию?
Ключевая идея: CUPED должен уважать единицу рандомизации. Если treatment назначен магазинам, ковариаты и регрессия должны быть построены на уровне магазинов.
Правильный подход:
Чего избегать: не нужно считать CUPED на уровне пользователей и затем агрегировать, если рандомизация была кластерной.
Маркетплейс тестирует снижение комиссии для части продавцов. Рандомизация по продавцам: 10k продавцов в тесте, 10k в контроле. Покупатели при этом не рандомизируются.
Метрика: GMV per buyer. В тесте она растёт на +6%, в контроле почти не меняется. Команда хочет экстраполировать этот эффект на 100% продавцов после rollout.
Проблема: двусторонний spillover: treatment назначен продавцам, но метрика измеряется на покупателях, которые взаимодействуют и с тестовыми, и с контрольными продавцами. При 100% rollout структура рынка изменится (не будет контрольных продавцов).
Последствия: +6% GMV per buyer в эксперименте может быть комбинацией прямого эффекта (скидки для тестовых продавцов) и перераспределения трафика/продаж между продавцами (zero-sum для части рынка).
Что делать: анализировать эффекты и на уровне продавца (выигравшие/проигравшие), и на уровне покупателя; рассмотреть кластеризацию по рынкам/категориям; аккуратно моделировать поведение при полном rollout, а не наивно переносить экспериментальное uplift.
У вас кластерный дизайн с фиксированным средним размером кластера m = 1000 пользователей. Нужно понять, как меняется design effect при разных значениях ICC.
Заполните таблицу (приближённо):
| ICC | DEFF | neff / n |
|---|---|---|
| 0.001 | ? | ? |
| 0.005 | ? | ? |
| 0.01 | ? | ? |
| 0.05 | ? | ? |
Используем формулы:
При m = 1000:
| ICC | DEFF | neff / n |
|---|---|---|
| 0.001 | ≈ 1 + 999 × 0.001 ≈ 1.999 ≈ 2 | ≈ 0.5 |
| 0.005 | ≈ 1 + 999 × 0.005 ≈ 5.995 ≈ 6 | ≈ 0.17 |
| 0.01 | ≈ 1 + 999 × 0.01 ≈ 10.99 ≈ 11 | ≈ 0.09 |
| 0.05 | ≈ 1 + 999 × 0.05 ≈ 50.95 ≈ 51 | ≈ 0.02 |
Вывод: даже «маленькие» ICC типа 0.005–0.01 при больших кластерах драматически уменьшают эффективный размер выборки, и это обязательно нужно учитывать в дизайне эксперимента.