Иван Еремеев

Руководитель направления продуктовой аналитики, VK

26 января 2023

Смотреть
#Продуктовая аналитика 5
#Кейсы 10
#Инструменты тестирования 2
#A/B тесты 1

Альтернативы A/B тестам: от Diff in diff до Causal impact

image

Поговорим о ситуациях, когда не возможно, либо крайне сложно применить А/Б тесты и что делать в этих случаях? Я назвал это альтернативы А/б тестам.

План доклада:

  • Когда А/Б тесты не работают?
  • Какие могут быть Альтернативы А/Б тестам?
  • Модели с псевдо-контролем
  • Модели с искусственным контролем

О спикере:

userImage
VK
Иван Еремеев
Руководитель направления продуктовой аналитики

Руководитель направления продуктовой аналитики в рекомендательных системах медиа и нативной рекламы в VK. Ведущий преподаватель и со-автор курсов по прикладной аналитике данных, a/b тестированию, веб-аналитике, статистическим методам анализа данных и продуктовой аналитике. Задизайнил более 200 А/Б тестов и хотел бы поделится своим опытом и знаниями с вами, рассказать, что делать в сложных ситуациях, когда А/Б тесты не работают.

Кейс: вы запускаете рекламу на ТВ – как это отразится на MAU/aDAU?

image

Для начала давайте рассмотрим кейс. К примеру вы запустили рекламу на телевидении, либо выпустили пресс релиз и хотите оценить, как это повлияло на ваш продут, например на метрику активной аудитории MAU/DAU. Самое простое что приходит в голову, это сравнить среднее "до" и среднее "после", если вы это раскатили на всех без А/Б теста.

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

image

Помимо вашего изменения на метрику влияют внешние факторы: это продуктовые изменения ваших коллег, законодательные изменения, политическая и экономическая ситуация, это тренд и ряд других факторов. Соответственно они могут очень сильно исказить итоговый результаты и ваш эффект от продуктового изменения, какого-то, может среди них просто погаснуть и вы, помимо того, что просто не оцените точный эффект, можете ошибиться и с направленностью эффекта, то есть положительно ли или отрицательно повлияло на ваши метрики.

К чему это ведет?

image

Это ведет к тому, что вы можете принимать не правильные решения в продукте, вы можете потерять долю рынка, может недовыполнить kpi, соответственно вами будут недовольны инвесторы, вами может быть недовольно ваше начальство и вы будете грустить!

Не хотелось бы, чтобы вы попадали в данную ситуацию и брали на себя лишние риски, поэтому я бы хотел рассказать, что делать в таких случаях, как нам обезопасить себя по максимуму от возможных рисков и принять наиболее точные решения, чтобы наш продукт развивался правильно и шел в нужном направлении.

  Научиться работать с одним из самых важных инструментов продакт-менеджера можно на курсе «Навык A/B-тестирования» — он состоит из 7 уроков по математической статистике, проверке гипотез и оценке результатов. Подробную программу курса можно посмотреть здесь.

Когда А/Б тесты не работают?

А/В тесты не панацея

Для начала давайте рассмотрим парочку распространенных кейсов.

Вопрос залу: кто из вас работает или работал в b2b продуктах? Кто из вас работает в крупных компаниях, но выкатывал фичи без А/Б теста в продакшн?
Ответ: существенная часть зала

Думаю тема этого воркшопа вам будет очень близка, и парочку примеров здесь можно на скриншоте увидеть, когда А/Б тесты применить затруднительно:

image
  • вы запустили рекламу на телевидении, либо сделали оффлайн рекламу на билбордах, в каком нибудь городе или районе;
  • либо раскатили фичу на всех в вашем продукте;
  • а может быть вы хотите понять, как повлияли локдауны, которые были в ковид, в спад заболеваемости, потому что это очень большой экономический ущерб нанесло разным странам, действительно ли это как-то помогло в борьбе с ковидом или нет;
  • так же много другое, например эффекты от различных законов.

A/B-эксперименты: когда невозможно/ проблемно применить A/B тест?

Здесь перечислены ситуации в которых А/Б тесты не работают, либо их сложно применить:

  • Маленький трафик;
  • Дорогая (долгая разработка) разработка, когда эффект от вашего продуктового изменения не перекрывает те затраты, которые вы закладываете на разработку А/Б теста, на его подготовку, дизайн;
  • Нет возможности контролировать попадание человека в контроль/тест;
  • Сетевые эффекты (агрегаторы такси/соцсети, используют альтернативы);
  • Этические/репутационные/законодательные ограничения (например, мы не можем дискриминировать в некоторых странах людей по цене, например на ios назначать большую цену чем на android, за это можно попасть на штрафы и поплатиться своей репутацией; 
  • Нет инфраструктуры/компетенций в команде.

Окей, вот мы рассмотрели эти кейсы и что же нам делать? Многие из вас с частью из этого сталкивались, наверное хотелось бы понять, что делать, помимо того чтобы оценивать ступеньку или период к периоду.

Какие могут быть Альтернативы А/B ?

image

Про А/Б тесты все понятно, куча статей, курсов, книг. Пользователей делят на несколько рандомизированных групп, сравнивают разницу между контролем и тестом. А/Б тесты позволяют фиксировать внешний фактор, про который мы говорили, то есть это одно из главных преимуществ. К сожалению этот золотой стандарт не всегда доступен, бывают такие ситуации, когда мы не всегда можем их применить, давайте их рассмотрим.

Они все концептуально похожи на А/Б тесты, то есть у нас должен быть какой то бейслайн для сравнения, какая-то псевдо контрольная группа и мы должны понимать, как нам оценить эффект, разницу между этим контролем и тестом.

image

На скриншоте сверху перечислены основные блоки в порядке убывания точности. Здесь хочется акцентировать внимание на втором и третьем, потому что четвертый мы не рассматриваем, как альтернативу А/Б тестам. Мы не можем с уверенностью говорить о причинности эффекта, к этому чуть попозже вернусь.

Квази-эксперимент

Мы подбираем псевдо контрольную группу, например другой регион, если мы какой то оффлайн ритейлер и проводим эксперимент на каком то магазине, мы можем подобрать магазин/магазины в других районах,  в качестве такой  псевдогруппы. Про то так это делать, можно поговорить отдельно, сейчас мы верхне-уровнево пройдемся, потом у нас будет подробное рассмотрение с кейсами. Примеры: это differences-in-differences, реализация этого подхода синтетический контроль, например causal impact придумали ребята из гугла.

Искусственный контроль

Следующий подход, это кода у нас нет возможности подобрать псевдо контрольную группу в виде региона, либо другого магазина. Здесь нам тоже хочется иметь некий бейслайн, мы его получаем в результате прогноза, то есть мы по историческим данным обучаем модельку прогнозирования временных рядов и у нас получается, как бы, две вселенные: что было бы, если мы ничего не выкатывали? (то есть до момента воздействия обучаем модельку), что было по факту? И по сути разница между этими двумя вселенными это эффект.

Описательный анализ

Многие  наверно знаю  то, что корреляция нам не говорит о причинном эффекте, яркий пример: корреляция между количеством людей с зонтами и автомобильными авариями, понятно, что количество людей с зонтами не являются причинной автомобильных аварий, а корреляция здесь довольно высокая, соответственно у нас есть тертий ненаблюдаемый фактор, это количество осадков, он является причинной количеством аварий в этом случае, а вот эти два фактора они просто скоррелированы. Поэтому мы должны очень аккуратно, когда используем описательных анализ, рассуждать о причинном эффекте, что конкретно какое то изменение повлияло на что то.

Пост ироничный мем, который призван закрепить вот эти методы, которые мы только что рассмотрели

image

Модели с псевдо-контролем

Модели с псевдо-контролем(Differences in differences) суть метода

Поговорим сначала про псевдоконтроли на примере Differences in differences

image

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

К примеру у нас есть Саратов и мы там запустили какую то рекламу, мы выбрали в качестве псевдо контроля Самару, допустим, до момента воздействия, они бы одинаково развивались, то есть были бы параллельной тенденцией. Они могли отличатся, могли быть не идентичны, а когда, например, воздействовали на Самару, Саратов таки остался без воздействия. Чтобы оценить здесь эффект, мы считаем разницу разниц, это и есть эффект. Это довольно интуитивно понятно, таким образом мы можем получить точечную оценку эффекта.

Как можем искать псевдо-контроль в Diff-in-diff?

Давайте посмотрим это все на примерах, но перед этим уделим пару слов предпосылкам, потому что без соблюдения предпосылок все эти методы могут превращаться в тыкву.

image

Здесь самое важное на что стоит обратить внимание, это отличаются ли тренды в псевдо контроле, например в Самаре и в Саратове. Если тренды схожи, это значить мы можем рассматривать эту группу в качестве псевдо контроля, можем посмотреть, банально, визуальный анализ.

Наш временной ряд, метрика, например активная аудитория, мы можем разложить ее на факторы: тренд, сезонность, и сравнить тренды хотя бы визуально. И если они схожи, то можно рассматривать этот псевдо контроль в качестве кандидата.

Окей, давайте подвинемся поближе к кейсам и практическим примерам

image

Пару слов про предпосылки. На скриншоте много что написано, но обратите внимание на то что между группами, когда вы выбираете псевдо контроль, должны быть параллельные тенденции и на эту группу не должно быть воздействия, это то что нужно сейчас вам запомнить.

Давайте перейдем к примеру и закрепим этот метод.

Считаем точечную оценку эффекта от изменения названия нативной рекламы

Актуальная для многих проблема - "закон о рекламе с маркировкой" и мы тоже с ней столкнулись. 

image

Мы зарабатываем на рекламе, соответственно для нас это актуальная проблема. У нас в ленте крутиться реклама разных форматов, некоторые форматы нативные, то есть не подписывались как "реклама", и назывались по разному, например "промо" (статьи с оплатой за дочитывания, человек кликает, потом дочитывает и мы получаем деньги). Теперь мы маркируем объявления как "рекламу". 

У нас был кейс, что мы не успели запустить А/Б тест, но нужно было переименовать "промо" в "рекламу". Давайте здесь применим Differences in differences, потому что мы не запускали тесты, просто в сжатые сроки поменяли дизайн этих карточек и хотим понять, когда люди видят в нативном формате слово "реклама", как отражается на CTR.

Ситуация следующая, мы подобрали псевдо контроль, у нас есть органические форматы (это вообще не реклама, обычные карточки, обычный контент) за которые мы денег не получаем, но мы крутим их, чтобы пользователям было интересно что то почитать, соответственно есть нативный формат рекламы за дочитывания, считаем разницу разниц.

Окей, не сложная вычислительная задачка, эффект точечный -2 п.п. Тем самым мы оценили, как повлияло изменение на нашу конверсию.

Давайте рассмотрим чуть более большой и сложный пример.

Кейс с влиянием закона о предустановках на приложение Новости Mail.ru

image

Кейс следующий. В марте 2021г. вышел закон о предустановка российского софта, то есть всякие Xiaomi, Huawei должны были устанавливать российские приложения, если эти приложения выиграли в тендере. Пару шагов пояснения: компания, которая хочет чтобы ее устанавливали на различные телефоны, должна инвестировать деньги в тендер и если она там выигрывает, ее приложение предустанавливают на новых устройствах. На андроиде эта история очень хорошо работала, apple немножко ее саботировал, в том плане что они сделали ее в формате рекомендаций, на андроиде просто устанавливали приложение. 

Соответственно приложение Новости Майл.ру принимало участие в этой истории и выиграло тендер, было потрачены определенные деньги и хочется понять, стоит ли участвовать в этой истории в следующем году.

Применим diff in diff к нашему кейсу

image

Первый шаг, нам нужно подобрать псевдо контроль. В качестве нее, по результатам ресерча, было подобрано приложение Новости мейл.ру на ios, потому что на нем закон не работал (они просто рекомендовали), были схожие тенденции по различным структурам и метрикам.

У нас есть период воздействия в марте 2021г., мы считаем разницу "до" и разницу "после" по активной дневной аудитории, ее переводим в деньги, у нас есть какая то выручка и затраты, теперь хочется понять окупилось ли это или нет. Мы здесь посчитали разницу разниц, точечный эффект и доверительный интервал для разницы с помощью регрессионной модельки.

Модели с псевдо-контролем (Causal impact) суть метода

Давайте рассмотрим метод синтетического контроля на примере causal impact

Какая здесь суть? Она может показаться кому то чуть сложнее, но на самом деле суть похожа. 

image

У нас две вселенные, в одной мы прогнозируем временной ряд, то есть чтобы было если не было бы никакого воздействия, и во второй вселенной у нас есть факт.

  • На первом шаге мы подбираем метрики (связанные с целевой, но в которые не было вмешательства. У нас есть главный Майл.ру и есть Новости Майл.ру, например трафик с главной идет на новости и если что то случается с главной, случается и с новостями;
  • На втором шаге мы делаем прогноз, то есть чтобы было по историческим данным до воздействия;
  • На третьем шаге мы считаем разницу между прогнозом и фактом. Сделать более качественный прогноз нам помогают ковариаты и те метрики которые связаны с целевой но на которые не было никакого вмешательства.

Когда мы можем и не можем применять Causal Impact?

image

Здесь тоже есть определенные предпосылки, он тоже имеет сови ограничения, но что стоит из этого вынести сейчас, это основные ограничения, что сложно подобрать ковариаты, особенно если вы не крупная компания, у вас не миллион продуктов, но есть Similarweb, есть App Annie, есть Google Trends, тем самым оттуда для своих кейсов можно насобирать данные.

Применим Causal Impact к нашему кейсу

Давайте рассмотрим на примере с законом с предустановками, как нам это все оценить.

Causal impact это такая библиотека от гугла, по сути она работает из коробки и самая большая сложность это подобрать ковариаты, это такой творческий процесс.

image

Здесь мы подбирали ковариаты и взяли приложения: Гороскопы Майл.ру, Новости на андроиде, Знакомства и ряд других приложений, соответственно из них составили синтетический контроль, провели бэк тест на исторических данных до момента воздействия. У нас не было статистической значимости между этими группами, когда никакого сильного воздействия не происходило. Потом мы сделали прогноз с помощью этой модельки, учитывая ковариаты и посчитали разницу между ними. На верхнем графике у нас фактические данные и прогноз, а на нижнем, разница между прогнозом и фактом и получаем доверительный интервал для эффекта из коробки.

Важная ремарочка: она будет не всем актуальна, скорее аналитикам, которые потом могут это смотреть, то есть все это строиться на основе базисовской статистики.

Модели с искусственным контролем

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

У нас есть моделька синтетического контроля на основе прогноза, например когда мы не можем никакие псевдо-контроли подобрать, когда с ковариатами у нас проблемы, мы просто прогнозируем ситуацию рассматривая две вселенных. 

Первая вселенная есть то что по факту (на всех раскатили, получили результаты) и вторая вселенная (чтобы было, если историческая сезонность и тенденции сохранились). Потом мы считаем разницу между ними это и будет наш эффект. 

Рассмотрим на примере кейса с предустановками приложений Новости Майл.ру. 

Когда мы можем и не можем применять  “Синтетический контроль на минималках”?

image

Самая большая проблема которая может здесь возникнуть, это как нам спрогнозировать временной ряд точно. Если вы не умеете прогнозировать временные ряды, для вас это сложно, то здесь можно применить регрессионные модельки, пропед, ариму, арму и т.д.

Соответственно на первом шаге мы прогнозируем временной ряд и здесь важна точность прогноза, потому что бейслайн с которым будем сравниваться, если его плохо спрогнозировали, то он мало валидный. У нас есть относительная точность прогноза в процентах и по ней мы можем измерять качество прогнозируемой модельки и бейслайна.

Сделаем сначала прогноз для нашего кейса с Новостями

image

Очередной кейс, который мы уже рассматривали ранее, в нем мы сначала на исторических данных до момента взаимодействия прогнозируем временной ряд. Видим что была тенденция снижения аудитории Новости Майл.ру и моделька довольно точно ее прогнозирует, соответственно ошибка прогноза - 5.72%

Посчитаем разницу между прогнозом и фактом

image

Теперь мы хоти померить эффект, это разница между прогнозом и фактом, соответственно построим доверительный интервал для разницы с помощью бутстрапа. 

Эффект от предустановок в данном случае получается от 13599 до 16946 юзеров в день это инкрементальный добавленный эффект от закона о предустановках.

Сравним три подхода

Окей, давайте теперь сравним все эти три подхода. Видим что они дают немного разные цифры, как нам здесь принимать решения, на что ориентироваться?

image

Во-первых что хочется отметить, у каждого из них есть предпосылки, и в данном случае они немного могли нарушиться. Здесь можно идти по сценариям, есть консервативный сценарий, есть реалистичный сценарий, есть оптимистичный сценарий. Если в нашем консервативном сценарии наши инвестиции уже отбиваются, то соответственно мы можем инвестировать в эту историю еще раз. Если вы готовы больше рисковать, для вас это не существенная сумма, мы можем ориентироваться на реалистичный сценарий или оптимистичный.

И по поводу предпосылок, на мой взгляд, здесь наиболее соответствует предпосылка средняя моделька (causal impact), это реалистичный сценарий и я бы ориентировался на нее.

А что по итогу?

По результатам вот этой оценки мы приняли решение не участвовать в этой истории в следующем году. Хоть здесь и видим положительный эффект, мы должны понимать что сравниваем это с затратами, да это улучшили, но это нас не окупило.

Вывод

Даже в сложных ситуациях, о которых мы поговорили, когда мы, например, раскатили фичу на всех пользователей и А/Б тесты не работают, не стоит отчаиваться и складывать руки и интуитивно принимать решения, оценивая период к периоду и ступеньку. Супер крупные эффекты может таки и получится оценить, но мелкие эффекты в шуме внешних факторов могут быть завалены. 

Когда мы применяем эти альтернативы, очень важно чтобы соблюдались предпосылки, иначе они могут становиться мало валидными. 

Применяйте по возможности А/Б тесты, потому что это золотой стандарт и позволяет фиксировать маленькие эффекты, но на супер крупных эффектах вполне себе эти альтернативы и они будут рабочими.

Присоединяйся к чату комьюнити

Будь в курсе всех новостей, обращайся за помощью к коллегам и находи единомышленников!

Заходи в чат