В нашей реальности мы никогда не имеем полных исходных данных для задач, которые на бумаге кажутся чисто математическими. Вот пример из практики одного из регионов с магазином. В июне вам звонят с радио и говорят, что готовы повторить размещение рекламы со скидкой 40%. Это 192 ролика за две недели. Прошлый раз вы заказывали эту рекламу «на попробовать», поскольку матожидание прибыли превышало затраты на рекламу.
Проблема в том, что за период размещенния случилось две большие вещи:
- Из-за праздников был сезонный спад, и продажи по городам падали.
- Реклама должна была дать дополнительные продажи.
Сейчас нужно отделить одно от другого и понять, что и как сработало. Нельзя оценивать рекламу без учёта спада, и спад без учёта рекламы. Вот ваш график продаж за период до праздников, во время и после:
Исходный город, продажи в штуках по вертикали к неделям по горизонтали
По нему видно, что продажи падают после рекламы на праздниках. Падение на праздники — норма для всех городов. Правда, мы, грубо говоря, не знаем, какой бы график был без рекламы. Такой же? Немного ниже? Сильно ниже?
Без рекламы события шли бы по одному из этих сценариев. По какому — я не знаю.
Итак, задача понять, насколько реклама повлияла на продажи при том, что было минимум два глобальных фактора, меняющие их. Такая задача встречается практически всегда, когда нужно оценить эффективность рекламы или акции.
Начнём с другой стороны. Мы знаем, что в другом городе график был такой:
Контрольный город 1
Но нам этого мало, нужна третья точка. Ещё один полностью контролируемый источник в третьем городе:
Контрольный город 2
Наложим их друг на друга:
Наш исследуемый город — зелёный
Получается картина, которая пока выглядит как какая-то фигня из цветных линий. Систематики не видно, поскольку объёмы продаж в абсолютных величинах в городах разные.
Нужна именно нормализация, а не сборка общего графика продаж. Поскольку один из городов почти втрое перекрывает обороты двух оставшихся (там больше население), то на суперпозиции мы просто увидим зашумлённый сигнал именно этого города, вот такой:
Перейдём к относительным к общему объёму продаж за цикл, то есть нормализуем графики. Получаем вот такое.
На третьей неделе периода видно пик в исследуемом городе и спады в контрольных. Но дальше в одном из контрольных видно непонятный пик.
Возвращаемся к данным по трём городам. Напоминаю, нам нужно выделить два тренда: сезонный спад и подъём в зелёном городе продаж после радиорекламы. Для начала нам нужно почистить графики от локальных искажений.
Проверка единицы
Надо понимать, что данные в нашей выгрузке приехали сгруппированные по неделям. Это имеет смысл, поскольку одна неделя соответствует одному циклу подъёма-спада по дням, плюс содержит данные о заказах на доставку, которые были, например, приняты и отправлены в этом цикле, но отгружены только в следующем. Неделя имеет ярко выраженную «сезонность» внутри: например, в понедельник продаж куда меньше, чем в среду.
Сравниваем наш цикл и цикл рекламы. Реклама на радио и праздничный спад длятся куда больше единичного цикла. Значит, все резкие скачки внутри самих циклов – это локальные искажения, в нашем случае – шум. Мы имеем полное право использовать недели.
Проверка модели
Строим эталонный профиль стандартной недели, убирая выбросы. Если наше предположение верное, то все недели во всех городах будут примерно одинаковыми. Но вдруг оказывается, что во время циклов рекламы зелёного города в синем городе (где этой рекламы не было) отмечены локальные всплески. Есть отходы от обычного дня продаж больше чем на 40%.
Скорее всего, там было что-то, что не объясняется моделью. Сначала проверяем гипотезу неверного переноса данных из реальности. Я выбрал простой способ – позвонил руководителю колл-центра и задал вопрос, когда последний раз были такие всплески, что смену просто рвало. Учитывая, что колл-центр тоже строит профили эталонной недели и формирует размеры смен из них, я получу проверку своей гипотезы о выбросах в течение недель. Грубо говоря, если прогноз неверный, то все в колл-центре запомнят перегрузку. В нашем случае да, в КЦ помнят пик в этом периоде. То есть это не, например, заглючивший сервер синхронизации, который почему-то догрузил данные одним отчётом за несколько дней.
Но и я в своём анализе, и КЦ в формировании смен, исходим из похожих предпосылок, значит, может быть общая ошибка в расчётах. Нужно копать дальше, проверяя причины этих спадов. Ок, переключимся на инструментарий сайта: смотрю график по источникам трафика на эти числа. Ага, первый пик – это небольшой эффект от публикации крупного локального блоггера, его в рамках решения задачи сезон/радио можно убирать с графика. Второй обнаруженный пик – трафик с поисковых запросов. К счастью, судя по форме графика, я знаю, что это может быть. Проверяю отчёты по размещениям — да, одна из игр засветилась на местном телеканале в детской передаче. Тоже убираем.
Вот тут я с помощью mad skillz примерно показываю, как это выглядит:
Примерный график с вычетами описанных эффектов
Итого – мы имеем два проверочных города со схожими графиками после декомпозции других известных факторов. Грубо говоря, мы сравниваем сейчас нормальные продажи красного города, нормальные продажи синего (без учёта блоггера и телевидения) и нормальные продажи зелёного с учётом влияния радио. На графиках видно, что оба контрольных города к праздникам уходят вниз. Зелёный город поднимается в праздники, но восстанавливается не в то же время, что они.
Ок, идём выяснять дальше. После майских праздников люди возвращаются в город и начинают участвовать в разных летних мероприятиях. На графиках контрольных городов видно подъём – да, в обоих городах мы привезли настолки на какие-то крупные события общегородского масштаба. На графике исследуемого города такого нет. Нужна гипотеза, объясняющая, что это. Варианты:
- Запоздалый сезонный сдвиг: вдруг на праздники в этом городе едут позже? Тогда наши выкладки не годятся – надо сравнивать с аналогичным сдвигом графиков контрольных городов.
- Локальная проблема любого характера.
- Откат от рекламы – вдруг мы сдвинули с места людей, которые раздумывали – и немного исчерпали рынок?
Первая и третья причины кажутся крайне маловероятными, поэтому начнём со второй. Смотрю на график продаж в магазине – распределение по часам нормальное. Продавцы тоже ничего странного не заметили, разве что жалуются на дождь, из-за чего приходит мало людей. Ага! Значит, надо проверить погоду во время мероприятий на выходных – если людей было мало, то спад объясним. Проверяю – да, точно, ливень. То есть спад в исследуемом городе объясняется погодой (бывает). И если бы не это, там был бы такой же подъём, как на контрольных городах.
Вывод
Мы очистили три графика от шумов, сделали декомпозицию по разным событиям – и получили сравнение города с радиорекламой и городов без. Что самое главное, у меня есть численные данные по разным векторам повышения или понижения продаж (накопленные из истории за 3 года), то есть я могу оценить не только «работает – не работает», но и дать оценку прибыли с этой рекламы. Скажем, с погрешностью 10-30%.
Почему мы не учитываем долговременные эффекты рекламы? Потому что в расчётах эффективности нужно опираться в таких случаях только на прямой эффект по продажам. Конечно, сами люди с радио пять раз расскажут, какой долговременный эффект это оказывает (и это правда для единичных клиентов), но после размещения — в целом — никакого эффекта не будет.
Результат? Видно, что реклама принесла больше чистой прибыли, чем мы на неё затратили, и ROI (возврат вложений) в районе 130-160%. Значит, теперь появляется обоснованное решение – рекламу можно продолжать.
Автор: Milfgard