TL;DR
Сравниваем изменение outcome в treatment-группе vs контрольной. Работает, если без treatment группы двигались бы параллельно. Оценивает ATT.
ATT (Average Treatment Effect on the Treated). δ = E[Y(1) − Y(0) | D=1]. DiD не оценивает ATE — только эффект для тех, кто получил treatment.
| Проверка | Что смотрим | Красный флаг | Что делать |
|---|---|---|---|
| Pre-trends | Event study: коэфф. для k < 0 | Значимые коэфф. до treatment | Matching+DiD, SCM, или отказ |
| Anticipation | Коэфф. за 1–2 периода до treatment | Реакция до treatment date | Сдвинуть treatment date назад |
| Placebo outcome | Outcome, не связанный с treatment | Значимый эффект на placebo | Пересмотреть дизайн |
| Placebo treatment date | Фиктивная дата в pre-period | Значимый "эффект" | Trends нестабильны → DiD невалиден |
| SE clustering | Уровень кластеризации ≥ уровня treatment | Некластеризованные SE при групповом treatment | Кластеризовать; при малом N — wild bootstrap |
Y_it = α + β₁·Treat_i + β₂·Post_t + δ·(Treat_i × Post_t) + ε_it
δ = (Ȳ_treat_post − Ȳ_treat_pre) − (Ȳ_control_post − Ȳ_control_pre)
Event study — регрессия с отдельными коэффициентами δ_k для каждого периода k относительно treatment (k = −4, −3, …, −1, 0, +1, +2, …). Период k = −1 обычно опорный (δ_{−1} = 0).
Y_it = α + Σ_k δ_k · 1{t − t* = k} · Treat_i + γ_t + μ_i + ε_it
Ожидание:
k < 0: δ_k ≈ 0 (parallel trends подтверждены)
k ≥ 0: δ_k ≠ 0 (эффект treatment)
ASCII-визуализация (идеальный случай):
δ_k
|
+ | * * *
| *
| *
0 |----*---*---*---*---|------------------
| |
- | |
+----+---+---+---+--+--+---+---+---→ k
-4 -3 -2 -1 0 +1 +2 +3
| Флаг | Что означает | Действие |
|---|---|---|
| Pre-trend: δ_{−3}, δ_{−2} значимы | Parallel trends нарушены | DiD невалиден без коррекции |
| Монотонный pre-trend (рост/падение) | Группы расходились и до treatment | Добавить group-specific trends или отказаться |
| Эффект в k=0, но не в k≥1 | Возможно transient shock, не treatment | Проверить устойчивость по длине post-period |
Запуск рекламы в городе A (treated), город B — контроль. Outcome: средний revenue/день.
| Город | Группа | Pre (нед. 1–4) | Post (нед. 5–8) |
|---|---|---|---|
| A | Treated | 100 | 130 |
| B | Control | 90 | 105 |
# Step 1: Разности
ΔY_treat = 130 − 100 = +30
ΔY_control = 105 − 90 = +15
# Step 2: DiD-оценка
δ = ΔY_treat − ΔY_control = 30 − 15 = 15
# Step 3: Проверка parallel trends
# Pre-period (нед. -8..-5): были ли тренды параллельны?
# Нужно проверить по дневным/недельным данным.
-- Pseudo-SQL
SELECT
treat,
post,
AVG(revenue) AS mean_rev
FROM daily_revenue
GROUP BY treat, post;
-- δ = (mean_rev WHERE treat=1 AND post=1)
-- - (mean_rev WHERE treat=1 AND post=0)
-- - (mean_rev WHERE treat=0 AND post=1)
-- + (mean_rev WHERE treat=0 AND post=0)
Ожидаемый результат: δ = 15 (каузальный эффект рекламы при выполнении parallel trends).
Компания запускает программу лояльности для клиентов с доходом > 100K. Клиенты с доходом < 100K — контроль. Через 3 месяца сравнивают retention. Какой метод подходит лучше: DiD или RDD?
RDD подходит лучше. Порог 100K — это cutoff по running variable (доход). Юниты рядом с порогом (95K vs 105K) почти идентичны. DiD здесь проблематичен: группы систематически различаются (высокий доход vs низкий), parallel trends маловероятны.
Аналитик провёл DiD: δ = +12%, p = 0.003. Но event study показывает δ_{−2} = +5% (p = 0.04), δ_{−1} = +3% (p = 0.15). Валиден ли результат?
Нет. Значимый коэффициент δ_{−2} = +5% указывает на нарушение parallel trends: treated группа росла быстрее ещё до treatment. Часть (или весь) эффект δ = +12% может быть продолжением существующего тренда, а не каузальным эффектом treatment.
DiD по geo-launch (3 treated региона, 9 контрольных). δ = +8%, SE = 2%, p = 0.001. SE не кластеризованы. Что не так?
SE должны быть кластеризованы на уровне региона (12 кластеров). Без кластеризации SE занижены, p-value ложно мал. При 12 кластерах (и только 3 treated) даже кластеризованные SE ненадёжны — нужен wild cluster bootstrap или randomization inference.