← Назад к вопросам

Что такое Difference in differences?

3.0 Senior🔥 131 комментариев
#A/B тестирование#Статистика и математика

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Difference-in-Differences (DiD): полное объяснение

Difference-in-Differences — это квазиэкспериментальный метод для оценки причинного эффекта вмешательства (treatment effect), когда классический рандомизированный эксперимент невозможен.

Суть метода

ДиД сравнивает динамику изменений в контрольной и опытной группах:

  • Опытная группа: получила вмешательство
  • Контрольная группа: не получила вмешательство
  • До и после: метрику измеряют до и после вмешательства

Эффект = (Y_after - Y_before)_treated - (Y_after - Y_before)_control

Формула

Treatment Effect = (Y_t,after - Y_t,before) - (Y_c,after - Y_c,before)

Где:

  • Y_t — метрика в опытной группе (treated)
  • Y_c — метрика в контрольной группе (control)

Пример из product analytics

Предположим, вы запустили новую фишку в приложении для 50% пользователей:

ГруппаДо вмешательстваПосле вмешательстваИзменение
Опытная100 MAU130 MAU+30
Контрольная100 MAU110 MAU+10
DiD эффект+20

Интерпретация: +20 MAU — это чистый эффект новой фишки, очищенный от общих факторов (сезонность, маркетинг и т.д.)

Ключевые предположения (assumptions)

  1. Parallel trends — без вмешательства обе группы менялись бы одинаково
  2. No spillover — нет влияния опытной группы на контрольную
  3. No anticipation — нет предварительных действий перед вмешательством
  4. Consistency — вмешательство было применено одинаково всем в опытной группе

Когда использовать

Используй DiD если:

  • Нельзя рандомизировать (регуляторные ограничения, технические сложности)
  • Есть исторические данные до вмешательства
  • Можно найти подходящую контрольную группу
  • Вмешательство резко началось в конкретный момент

Не используй если:

  • Нарушен parallel trends (группы развивались по-разному до вмешательства)
  • Есть сильные spillover эффекты
  • Вмешательство накатывалось постепенно

SQL пример для product analytics

WITH metrics AS (
  SELECT 
    CASE WHEN cohort = "treatment" THEN "treatment" ELSE "control" END as group_type,
    CASE WHEN DATE(event_date) < "2024-03-01" THEN "before" ELSE "after" END as period,
    COUNT(DISTINCT user_id) as active_users,
    SUM(revenue) as total_revenue
  FROM events
  WHERE event_date BETWEEN "2024-02-01" AND "2024-03-31"
  GROUP BY group_type, period
),
differ AS (
  SELECT 
    MAX(CASE WHEN period = "after" THEN active_users ELSE 0 END) -
    MAX(CASE WHEN period = "before" THEN active_users ELSE 0 END) as change
  FROM metrics
  GROUP BY group_type
)
SELECT 
  MAX(CASE WHEN group_type = "treatment" THEN change END) -
  MAX(CASE WHEN group_type = "control" THEN change END) as did_effect
FROM differ;

Когда в real life встречается

  • 🎯 A/B-тесты в странах, где шарим признак по географии
  • 🎯 Запуск фичи сначала на одну платформу (iOS → Android)
  • 🎯 Изменения цен в одних странах, но не в других
  • 🎯 Уход с маркетплейса (как при паузе рекламы)

Роль Product Analyst

Основная задача — верно подобрать контрольную группу и проверить parallel trends предположение перед выводами. Часто требуется коррекция по confounding переменным (возраст, регион, активность).