TL;DR
Если treatment назначается по порогу running variable, юниты рядом с порогом фактически рандомизированы. Оцениваем локальный эффект (LATE) в окрестности cutoff.
LATE (Local Average Treatment Effect) — эффект для юнитов в окрестности порога. Не экстраполируется на всю выборку. Fuzzy RDD оценивает LATE для compliers (тех, чей treatment status меняется из-за порога).
| Тип | Правило | Оценка |
|---|---|---|
| Sharp | D = 1 если X ≥ c, иначе D = 0 | lim(x→c⁺) E[Y|X] − lim(x→c⁻) E[Y|X] |
| Fuzzy | P(D=1) скачкообразно растёт при X = c | Разрыв в Y / разрыв в D (= IV с порогом как Z) |
| Проверка | Что смотрим | Красный флаг | Что делать |
|---|---|---|---|
| McCrary density | Плотность X у cutoff | Скачок / bunching у порога | Manipulation → RDD невалиден |
| Баланс ковариат | Средние ковариат слева и справа от c | Значимый разрыв | Добавить ковариаты в регрессию / пересмотреть |
| Bandwidth robustness | Результат при h/2, h, 2h | Знак/значимость меняются | Результат нестабилен, нужна осторожность |
| Placebo cutoffs | Фиктивные пороги (c−50, c+50) | Значимый "эффект" | Проблема в спецификации, не в treatment |
| Polynomial order | Линейный vs квадратичный fit | Результат сильно зависит от степени | Использовать local linear (рекомендуется) |
# Sharp RDD — local linear regression в окне [c−h, c+h]:
Y_i = α + τ·D_i + β·(X_i − c) + γ·D_i·(X_i − c) + ε_i
# D_i = 1{X_i ≥ c}, τ = LATE
# Fuzzy RDD — IV/2SLS:
# First stage: D_i = π₀ + π₁·Z_i + ... (Z_i = 1{X_i ≥ c})
# Second stage: Y_i = α + τ·D̂_i + ...
Кредит одобряется при score ≥ 650. Оцениваем эффект одобрения на расходы.
| ID | Score (X) | Одобрен (D) | Расходы (Y) |
|---|---|---|---|
| 1 | 640 | 0 | 520 |
| 2 | 645 | 0 | 535 |
| 3 | 648 | 0 | 540 |
| 4 | 649 | 0 | 545 |
| 5 | 650 | 1 | 610 |
| 6 | 651 | 1 | 620 |
| 7 | 655 | 1 | 630 |
| 8 | 660 | 1 | 650 |
# Step 1: Средние рядом с порогом (±5 баллов)
Ȳ_left = mean(520, 535, 540, 545) = 535.0 (score 640–649)
Ȳ_right = mean(610, 620, 630, 650) = 627.5 (score 650–660)
# Step 2: Наивная оценка разрыва
τ̂ = Ȳ_right − Ȳ_left = 627.5 − 535.0 = 92.5
# Step 3: Проверить — нет ли bunching у 650?
# Проверить — ковариаты (доход, возраст) скачут у порога?
Ожидаемый результат: τ̂ ≈ 92.5 (локальный эффект кредита на расходы у порога 650).
Q: Компания даёт бесплатную доставку заказам от 3000₽. Нужно оценить, как бесплатная доставка влияет на повторные покупки. Какой метод?
A: RDD с порогом 3000₽ (running variable = сумма заказа). Но: покупатели могут манипулировать суммой (добавить товар до 3000₽) → нужен McCrary test. Если bunching сильный — RDD невалиден, рассмотреть donut RDD или DiD по времени введения policy.
Q: RDD по скорингу: порог 700. McCrary test показывает, что плотность заявок при score 698–702 в 3 раза выше, чем при 690–695. Что это означает?
A: Bunching у порога = manipulation. Скорее всего, менеджеры или алгоритм "подтягивают" score до 700. Юниты у порога не случайны → RDD невалиден. Можно попробовать donut RDD (исключить ±5 от порога) или искать другой дизайн.
Q: RDD оценивает τ̂ = +15% retention у порога score = 500. Менеджер спрашивает: "Значит, если мы уберём порог и дадим treatment всем, retention вырастет на 15%?" Что ответить?
A: Нет. RDD оценивает локальный эффект для юнитов у порога 500. Юниты с score 300 или 800 могут реагировать совершенно иначе. Экстраполяция на всю выборку невалидна. Для оценки глобального эффекта нужен другой дизайн (A/B или DiD).