лишний контроль
Есть привычка, которая выглядит как осторожность и таковой не является. Считаешь эффект фичи на выручку, добавляешь в модель возраст, регион, платформу, стаж — на всякий случай, чтобы «учесть всё». Логика понятна: чем больше учтено, тем чище оценка. Логика неверна. Часть переменных действительно чистит оценку, часть съедает ровно тот эффект, который ты меряешь, а часть создаёт связь там, где её не было. В сводной таблице все три выглядят одинаково — колонка и колонка.
почему вообще нужен контроль
Начнём с того, чего нельзя сделать никогда. Чтобы точно узнать эффект, нужно увидеть одного и того же человека в двух версиях мира: с фичей и без. Этого не бывает — наблюдается ровно один исход. Второй остаётся навсегда невидимым, и это называют основной проблемой каузального вывода[1].
Всё остальное — способы подставить вместо невидимого исхода кого-то другого. Рандомизация подставляет случайно выбранную половину и работает не потому, что группы одинаковы, а потому, что причина их различия — монета, и она ни с чем не связана. Когда монету бросить нельзя, приходится подбирать похожих, и вот тут появляется контроль: уравнять группы по тому, чем они изначально отличались.
Отсюда и ошибка. Контроль кажется универсальной процедурой «сделать группы сопоставимыми», а на деле он работает только для одной роли переменной из трёх.
три роли, одинаковые с виду
Различие не в самой переменной, а в том, как она включена в устройство мира. Три случая исчерпывают почти всё.
Конфаундер — общая причина обеих величин. Жара вызывает и продажи мороженого, и утопления; не учтя её, получишь связь там, где её нет. Этот случай разобран отдельно и известен всем. Его контролировать нужно.
Медиатор — звено на пути от причины к следствию. Новый онбординг повышает выручку, потому что поднимает долю дошедших до первого заказа. Добавь «дошёл до первого заказа» в модель — и увидишь, что онбординг «не влияет на выручку». Правда: он влияет через то, что ты только что зафиксировал. Контроль медиатора не убирает смещение, а вычитает часть искомого эффекта.
Коллайдер — общее следствие. Вот здесь начинается неинтуитивное.
как контроль создаёт связь из ничего
Возьми две вещи, между которыми связи нет вовсе. Пусть талант и удача независимы, и пусть в фонд берут тех, у кого сумма таланта и удачи выше порога.
Теперь смотри только на принятых. Среди них появляется отрицательная связь: если человек прошёл при среднем таланте, значит ему повезло; если прошёл при среднем везении, значит талантлив. Ни талант не влияет на удачу, ни удача на талант — но внутри принятых они спорят за одно место в сумме.
Связи не было. Она возникла в тот момент, когда ты ограничил взгляд общим следствием. Отбор по коллайдеру — тот же контроль, только сделанный не в модели, а на входе в данные, и именно поэтому его не замечают[2].
В продуктовой аналитике это происходит буквально каждый день. Меряешь, влияет ли фича на выручку, и ограничиваешь выборку теми, кто сделал хотя бы одну покупку, — «чтобы убрать шум». Покупка — следствие и фичи, и платёжеспособности. Обусловившись на неё, ты связал фичу с платёжеспособностью и получил эффект, которого нет. Или наоборот, стёр настоящий.
То же с любым «активные пользователи», «дошедшие до конца воронки», «оставившие отзыв». Каждый такой фильтр — обусловливание на следствии, и каждый может породить корреляцию из воздуха.
чем это опасно на практике
Свести к таблице.
| роль Z | что делает контроль | решение |
|---|---|---|
| конфаундер | убирает смещение | контролировать |
| медиатор | вычитает часть эффекта | не контролировать |
| коллайдер | создаёт ложную связь | не контролировать |
| следствие Y | стирает эффект целиком | не контролировать |
| ни при чём | ничего, кроме потери точности | можно опустить |
Отсюда главное следствие. Правило «добавь побольше контролей, так безопаснее» ложно не в деталях, а в основании: две трети возможных ролей делают оценку хуже. Осторожность здесь состоит не в количестве переменных, а в способности назвать роль каждой.
И проверить это по данным нельзя. Схема с конфаундером и схема с коллайдером дают разные истинные ответы при одинаковых таблицах корреляций. Направление стрелок в данных не записано — оно приходит из знания о том, как устроен предмет. Формальный критерий, отделяющий допустимые наборы контролей от недопустимых, называют критерием заднего входа[3], и он оперирует именно стрелками, а не числами.
и что тогда делать с Симпсоном
Теперь можно вернуться к парадоксу Симпсона и договорить то, что обычно остаётся недоговорённым.
Совет «всегда сегментируй» звучит разумно и в общем случае неверен. Разбиение по подгруппам — это и есть контроль, и оно подчиняется тем же правилам. Разбил по конфаундеру — увидел правду. Разбил по медиатору или коллайдеру — испортил оценку ровно тем же действием.
В примере с камнями в почках разбивать нужно: размер камня — причина и выбора метода, и исхода, чистый конфаундер. А если бы подгруппой оказался, скажем, побочный эффект лечения, разбивка по нему исказила бы всё. Таблицы в обоих случаях выглядят одинаково парадоксально.
Вот почему у парадокса Симпсона нет статистического решения. Данные не сообщают, какой ответ верен — агрегированный или разбитый. Ответ следует из устройства предмета, и любая попытка получить его из одних чисел упирается в то, что обе схемы порождают одну и ту же таблицу.
практика
Правило, заменяющее «добавь на всякий случай», простое и неудобное: перед тем как включить переменную, назови её роль вслух.
Влияет ли она на обе величины сразу — тогда это конфаундер, включай. Лежит ли она между причиной и следствием — тогда медиатор, оставь снаружи или считай отдельно, если тебя интересует именно механизм. Не является ли она следствием обеих — тогда коллайдер, руки прочь. Не знаешь — значит не знаешь, включаешь ли ты поправку или ошибку, и это само по себе результат, который стоит записать.
Тот же вопрос задай каждому фильтру выборки. «Оставили только активных» — почему они активны, не связано ли это с тем, что меряешь. Фильтры кажутся гигиеной данных, а работают как контроль, только молча.
И последнее, ради чего всё это. Рандомизация ценна не тем, что даёт большие выборки или красивые интервалы. Она ценна тем, что снимает вопрос о ролях: когда причина распределения — монета, ни конфаундеров, ни коллайдеров на входе нет по построению. Всё, что делает наблюдательный анализ, — пытается восстановить это свойство рассуждением. Иногда получается. Но платой всегда служит допущение, которое нельзя проверить теми же данными, — и честный анализ отличается от нечестного тем, что называет это допущение прямо.