TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Статистика и R в науке и аналитике

5 Dec 2025, 18:15

Открыть в Telegram Поделиться Пожаловаться

Diff-in-Diff на самом деле

Вокруг методов квазиэкспериментов (diff-in-diff, regression discontinuity, Propensity Score Matching и тд), которые применяются в случае, когда A/B невозможен, есть некая атмосфера крутизны. Считается, что обычные A/B тесты это база, которую умеют делать все, а вот методы причинного вывода это реально сложно и интересно. Хотя все понимают (надеюсь), что с точки зрения валидности и надежности выводов правильно задизайненный и проведенный A/B тест опережает все вышеперечисленное. Все остальные квазиэксперименты это "A/B для бедных". Тем не менее, иногда действительно нет возможности провести A/B тест по разным причинам. Например, он технически невозможен или этически недопустим, однако эффект все равно оценить нужно, тогда без квазиэкспериментов никак.
У меня самой было в планах наконец-то разобраться с этими методами, так как это интересно, а еще про это любят спрашивать на собеседованиях 😏.

И вот оно: по работе возникла задача посчитать влияние уже внедренной фичи, которую запускали сразу на 100% без A/B (были на это причины). Это как раз типичный кейс применения diff-in-diff. Я обрадовалась возможности с этим разобраться на реальных данных (ооо наконец-то сложные методы), так что поставила задачку на себя и пошла читать статьи как это работает.

Оказалось, что аналитики в очередной раз назвали умными словами обычную линейную регрессию с двумя факторами и взаимодействием. Основная сложность метода не в формуле, а как обычно в наличии качественных данных и в умении правильно их приготовить. Например, нужно выбрать подходящую контрольную группу или построить синтетическую, проверить выполняются ли параллельные тренды до вмешательства, при необходимости добавить ковариаты, но это уже детали.
Общую идею метода неплохо объяснили в статье на хабре, но мне немного показалось, что в статье есть то самое "назвать простое сложным".

Сама формула:

y = β0 + β1*treat + β2*post + β3*(treat × post) + ε
Как видите, это обычная формула линейной регрессии с взаимодействием, где

β0 (Intercept) – значение интересующего показателя, например конверсии, в контрольной группе до воздействия.
β1 – значение показателя в тестовой группе до воздействия.
β2 – значение показателя в контрольной группе после воздействия.

β3 – тот самый эффект взаимодействия, Diff-in-Diff, дополнительное изменение конверсии в тестовой группе после воздействия по сравнению с контрольной группой.

Никакой сложной математики, старая добрая линейная регрессия в тренде 😎

Пример кода на 🖥
# предварительно уже создан df, в комментарии пришлю как сгенерировать
model

5.1k 4 123 41 88
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot