Causal Inference: как оценивать эффект, когда A/B — не вариант (Ч. 3)
Causal Inference: как оценивать эффект, когда A/B — не вариант (Ч. 3)
Сегодня разберем еще один популярный инструмент — Causal Impact (далее
CI ), он же синтетический контроль на основе прогноза
Идея метода
Мы строим прогноз того, как вела бы себя метрика, если бы изменения не произошло, и сравниваем этот прогноз с фактом (в факте изменения есть).
То есть CI — это способ построить контрфакт через модель временного ряда. =>
Эффект = Факт − Прогноз
В чем задача, которую решает CI
❓ Представим ситуацию:
➖ фичу раскатили сразу на всю аудиторию
➖ маркетинговую кампанию запустили без теста
➖ минимальную сумму заказа внедрили на весь маркетплейс
➖ регулятор изменил ставку, тариф, правило
Контрольной группы нет, но нам нужно ответить на вопрос:
👉 «А что было бы с метрикой, если бы изменений не произошло?»
Как работает CI
❓ 1 Берём длинную историю данных до вмешательства
2 Обучаем модель, которая учится на: тренде, сезонности, внешних факторах (если есть ковариаты)
3 Строим прогноз на период изменения — пытаемся прогнозировать ситуацию в "мире", где вмешательства как будто бы не было
4 Сравниваем прогноз с фактическими значениями
Если факт стабильно выходит за ДИ прогноза — скорее всего, изменение действительно повлияло.
Что происходит “под капотом”
❓ Классическая реализация CI основана на BSTS (
Bayesian Structural Time Series) — это класс байесовских моделей временных рядов.
Модель строит распределение прогнозов и оценивает неопределенность, из которого затем считается эффект и доверительные интервалы.
Реализация в R — пакет
CausalImpact
(Google), в Python есть — pycausalimpact . Но можно применять любые модели временных рядов, например:
➖ ARIMA / SARIMA (statsmodels)
➖ Prophet (prophet)
➖ модели из darts, gluonts, pmdarima
➖ ML с лагами (XGBoost, LightGBM)
Также можно реализовать логику вручную через statsmodels, sklearn или любые TS-фреймворки.
Принцип один: обучаем модель на pre-period → прогнозируем period → сравниваем прогноз и факт.
Если в модели используются ковариаты (внешние факторы), они должны:
➖ хорошо коррелировать с целевой метрикой
➖ не быть напрямую затронуты вмешательством
Иначе модель может “встроить” эффект внутрь прогноза и занизить итоговую оценку.
Когда метод применим
❓ ➖ Есть длинная история наблюдений ДО вмешательства
➖ Модель хорошо прогнозирует pre-period (нет систематического смещения, разумный ДИ) ps По хорошему ошибка прогноза на pre-period должна быть существенно меньше предполагаемого эффекта.
➖ Можно подобрать адекватные ковариаты
➖ Вмешательство произошло в конкретный момент времени
Ограничения метода
➖ Нет контроля за внешними событиями, если они совпали по времени
➖ Сложно отделить эффект нескольких вмешательств
Пример
ЦБ резко поднял ключевую ставку — мы хотим понять, как это повлияло на объем кредитов. Контрольной страны нет, группы сравнивать не с кем.
Мы строим модель по данным до повышения ставки, прогнозируем объем кредитов без повышения и сравниваем с фактом.
Разница — и есть оценка эффекта.
❤️🔥 Подписывайтесь и поддержите канал бустом
↗️ Менторю и помогаю выйти на оффер
❓ Все ли понятно? А если работали с Causal Impact — расскажите про ваши кейсы
👇 @data_driven_bogdan
Откликнуться в Telegram →
⚠️ Никогда не платите «за оформление» или «гарантию трудоустройства» — это признак мошенников. Работа ТРУ не несёт ответственности за содержание вакансии.