Условие
Юзеры, открывшие push-уведомление, конвертируются в 2 раза чаще. Сделать вывод о причинно-следственной связи?
Решение
Проблема: selection bias
Юзеры, которые открывают push — уже более вовлечённые. Они конвертировались бы и без push. Корреляция ≠ причинность.
RCT (Randomized Controlled Trial)
Случайно разделить на тест/контроль. Только так получаем incremental effect push'а.
Test: получает push.
Control (holdout 10%): не получает.
Causal effect = conv(test) - conv(control)
В наблюдательных данных (без holdout) можем только сказать «есть корреляция», не «push причиняет конверсию».
Иерархия достоверности доказательств
- Multi-site RCT — gold standard.
- Single RCT — отлично.
- Quasi-experiments (DiD, RD, IV) — хорошо, при выполненных assumptions.
- Observational with adjustments (PSM, regression) — слабее.
- Naive observational comparison — почти бесполезно для causal claims.
Когда RCT невозможен
- Этика (нельзя дать половине больных placebo).
- Cost (запустить новый продукт нельзя «частично»).
- Logistics (нельзя случайно показать разные цены в одной транзакции).
→ Quasi-experiments: DiD, IV, regression discontinuity, synthetic control.
Adjustment подходы
Propensity Score Matching:
from sklearn.linear_model import LogisticRegression
# Predict P(received treatment | covariates)
ps_model = LogisticRegression().fit(X, treated)
ps = ps_model.predict_proba(X)[:, 1]
# Match treated with control с близкими ps
# Compare outcomes на matched pairsDoubly Robust estimation, IV, DiD, synthetic control — каждый требует свои assumptions.
Selection bias примеры
- «Юзеры с support-обращением имеют выше retention» — потому что они используют продукт. Не причина.
- «Кто прошёл онбординг — выше LTV» — survivorship: те, кто пройдёт, и так заинтересованы.
- «Кликнувшие баннер платят больше» — баннер заметят те, кто уже искал товар.
Запах observational claim
Если кто-то говорит «X увеличивает Y на N%» без эксперимента — спросить:
- Был ли holdout / control group?
- Случайно ли назначено treatment?
- Что может быть omitted variable?
- Можем ли воспроизвести через RCT?
Подводные камни
- Большие n не лечат selection bias. Точная оценка смещённой величины — всё равно смещённая.
- Adjustments (PSM, regression) работают только при «no unobserved confounders» — недоказуемое assumption.
- RCT тоже даёт смещение если есть spillover (тестовые юзеры влияют на контроль) или non-compliance.
- Long-term causal effect отличается от short-term — RCT нужно длинный.
- External validity: RCT на одной аудитории ≠ работает на другой.
Эталонный ответ
Observational ≠ causal. RCT с holdout — единственный надёжный способ. Без эксперимента: квази-экспериментальные методы (DiD, IV, PSM) при assumptions, или прозрачное «это корреляция, не причинность».