Сравнение моделей атрибуции Директа и Метрики с помощью R

26 мая, 2020

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

Продолжаем тему различий в данных Директа и Метрики. В предыдущей публикации я описывал основные причины расхождения в подсчете итоговых значений в двух сервисах. Если не брать во внимание исторический контекст (Директ и Метрика - разные продукты, которые выпущены с интервалом в 7 лет), то главные отличия заключаются в следующем:

  • Метрика фиксирует визиты на сайт, а Директ — клики по объявлениям;
  • Директ и Метрика имеют разный подход к отслеживанию данных и приписыванию конверсий.

Модели атрибуции также будут применяться к визитам в Метрике и кликам в Директе. Давайте рассмотрим это на конкретном примере одного из моих клиентов. О том, как выгружать данные из Директа, используя пакет ryandexdirect Алексея Селезнева (Netpeak), я подробно писал в этой статье.

Если кратко, то сначала устанавливаем пакет и подключаем его к рабочей сессии с помощью команд:

Затем проходим авторизацию и получаем токен (кто делает впервые):

, где:

  • Login = 'my_yandex_login' — логин пользователя в Яндекс.Директ;
  • TokenPath = 'C:/direct/tokens' — путь к папке, в которой будет храниться файл с учетными данными.

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

Запрос в RStudio выглядит так:

, где:

  • attribution_Direct – название переменной (может быть любым), которая содержит все извлекаемые данные из Яндекс.Директа;
  • yadirGetReport – функция, в которой передаются различные аргументы;
  • DateFrom - дата начала отчетного периода в формате ГГГГ-ММ-ДД. Аргумент используется только если DateRangeType равен CUSTOM_DATE (как в нашем случае);
  • DateTo - дата завершения отчетного периода в формате ГГГГ-ММ-ДД. Аргумент используется только если DateRangeType равен CUSTOM_DATE (как в нашем случае);
  • FieldNames - вектор, содержащий названия полей, по которым вы хотите получить статистику рекламных кампаний;
  • Date - дата;
  • Impressions - показы;
  • Clicks - клики;
  • Cost - стоимость (расход на рекламу);
  • AvgCpc - цена за клик (CPC);
  • Conversions - конверсии;
  • Goals=c(53114646) -  вектор, содержащий идентификаторы целей Яндекс.Метрики, по которым вы планируете получить статистики. В моем примере - это номер цели 53114646;
Сравнение моделей атрибуции Директа и Метрики с помощью R

Номер цели в Яндекс.Метрике

  • AttributionModels = c('FC', 'LC', 'LSC', 'LYDC') - вектор, который содержит аббревиатуру названия 4 моделей атрибуции для расчета количества достигнутых целей (FC — первый переход, LC — последний переход, LSC — последний значимый переход, LYDC — последний переход из Яндекс.Директа).

Подробнее об этом читайте в официальной справке API Директа.

В интерфейсе со всеми предыдущими командами, включая установку пакета и авторизацией:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Запрос в RStudio по 4 моделям атрибуции

Выполняем запрос и получаем 255 объектов (столько записей и столько дней в году работала реклама) и 9 переменных (столбцов — дата, клики, показы, стоимость, цена за клик и конверсии по 4 разным моделям атрибуции из Яндекс.Директа).

Сравнение моделей атрибуции Директа и Метрики с помощью R

Полученный датасет

Кликнув по объекту, откроется новая вкладка в виде обычной таблицы с нашими данными:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Таблица с данными из Яндекс.Директа

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

Теперь мы можем просуммировать количество конверсий для каждой из модели атрибуции с помощью команды sum (). Получаем:

  • Первый переход (FC) - 833 конверсии;
  • Последний переход (LC) - 774 конверсии;
  • Последний значимый переход (LSC) - 829 конверсий;
  • Последний переход из Яндекс.Директа (LYDC) - 750 конверсий.

Чтобы убедиться, что мы выгрузили верные данные в RStudio, сформируем отчет в Мастере отчетов за этот период по нашей цели и любой модели атрибуции:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Данные в R и Мастере отчетов по конверсии сходятся

Как видим, конверсии по атрибуции Последний значимый переход в R и Яндекс.Директе сходятся. По остальным тоже. Но количество конверсий по четырем моделям атрибуции разное, а расход за год неизменный: 6 065 684 руб. (с НДС). Проделав простую операцию деления, получим стоимость одной конверсии для каждой модели атрибуции:

  • Первый переход (FC) - 7 281 руб.;
  • Последний переход (LC) - 7 836 руб.;
  • Последний значимый переход (LSC) - 7 316 руб.;
  • Последний переход из Яндекс.Директа (LYDC) - 8 087 руб.

Аналогично можно поступить и с конверсией сайта. Количество кликов постоянно: 118 754.

  • Первый переход (FC) - 0,7%;
  • Последний переход (LC) - 0,65%;
  • Последний значимый переход (LSC) - 0,69%;
  • Последний переход из Яндекс.Директа (LYDC) - 0,63%.

Итоговая таблица по данным Яндекс.Директа с помощью R для 4 различных моделей атрибуции:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Общая статистика по Яндекс.Директу

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

Для того, чтобы выгрузить эти же данные, но только из Яндекс.Метрики, воспользуемся другим пакетом Алексея Селезнева rym. Начало:

Если вы делаете это впервые, то вам необходимо указать рабочую директорию с помощью команды setwd или прописать путь в TokenPath. Затем пройти авторизацию, выполнив команду:

Подробнее можете ознакомиться из лекции Алексея:

В Яндекс.Метрике запрос получения нужной нам статистики в R выглядит так:

, где:

  • attribution_Metrika_LC - название переменной (может быть любым), которая содержит все извлекаемые данные из Яндекс.Метрики;
  • rym_get_data – функция для работы с API отчетов;
  • counters = "XXXXXX" - указывается идентификатор счетчика Яндекс.Метрики;
  • date.from - дата начала периода выборки в формате ГГГГ-ММ-ДД. Также могут принимать значения: today, yesterday, ndaysAgo;
  • date.to - дата окончания периода выборки в формате ГГГГ-ММ-ДД. Также могут принимать значения: today, yesterday, ndaysAgo;
  • dimensions - группировки, разделенные запятой (ограничение - 10 группировок в запросе);
  • metrics - показатели, разделенные запятой (ограничение - 20 показателей в запросе);
  • filters - фильтр сегментации, с помощью которого я фильтрую данные по нужному мне источнику трафика. В данном случае исключаю кампании со статусом Не определено (на самом деле значение null) с помощью фильтра !=null;
  • sort - список группировок и метрик, разделенных запятой, по которым осуществляется сортировка. В моем примере - по дате.
  • lang - язык (по умолчанию ru).

Список группировок и метрик для Яндекс.Метрики представлен в официальной документации Яндекса.

API Метрики поддерживает механизм задания параметров - параметризацию. С помощью нее можно указать модель атрибуции. Параметр указывается в угловых скобках <>. Например, ym:s:<attribution>SourceEngineName.

  • first —первый переход;
  • last — последний переход;
  • lastsign — последний значимый переход;
  • last_yandex_direct_click — последний переход из Директа.

Кроме того, вы можете указать модель атрибуции в явном виде, например, ym:s:lastDirectClickOrder. Это я и сделал, указав в качестве группировки ym:s:lastDirectClickOrder (по модели атрибуции - Последний переход). Подробнее о параметризации читайте в официальной справке Яндекса.

Примечание:

  • с 27 мая 2020 года в API и в Logs API Яндекс.Метрики изменится модель атрибуции по умолчанию. Для запросов, в которых явно не указана модель атрибуции, по умолчанию начнет использоваться Последний значимый переход вместо Последнего перехода.

Сделаем 4 различных запроса с каждой моделью атрибуции и группировкой ym:s:<attribution>DirectClickOrder и посчитаем итоговые значения конверсий и визитов.

Сравнение моделей атрибуции Директа и Метрики с помощью R

Выгрузка данных из Яндекс.Метрики

Теперь мы можем объединить 4 датасета в один с помощью команды:

Поочередное объединение таблиц происходит с помощью функции full_join из пакета dplyr, а в качестве ключей объединения я выбрал Дата визита и Кампания Яндекс.Директа, поскольку они во всех 4 таблицах одинаковые. Открыв новый датасет, увидим, что в таблице есть значения NA (пропущенные или отсутствующие данные).

Сравнение моделей атрибуции Директа и Метрики с помощью R

Отсутствующие данные NA

В таком виде мы не сможем сложить значения и посчитать итоговый результат. Нам необходимо заменить NA на число 0. Сделать это можно с помощью функции replace_na из пакета tidyr. К запросу выше добавим хвост:

Примечание: API Метрики создает не совсем удобные для работы названия переменных, с пробелами, с кавычками и т.д. Чтобы запрос правильно отработал, в таких переменных как Конверсия (Страница \"Спасибо\").y и др. необходимо экранировать кавычки с двух сторон с помощью обратного слэша \.

Получаем таблицу со значениями 0 вместо NA:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Заменили NA на 0

После объединения таблиц названия столбцов стали менее удобочитаемыми. Например, Визиты.x, Визиты.y, Визиты.x.x и Визиты.y.y соответствуют визитам для моделей атрибуции первый переход, последний переход, последний значимый переход и последний переход из Директа. Чтобы с таблицей было легче работать, переименуем их с помощью функции rename все того же пакета dplyr.

В RStudio:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Переименование столбцов

Теперь таблица выглядит понятнее и с ней можно работать:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Переименование столбцов

Не составит труда сформировать 8 запросов, чтобы просуммировать итоговые значения по визитам и целевым визитам для всех четырех моделей атрибуции:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Суммирование визитов и конверсий по всем моделям атрибуции

Статистика:

  • Первый переход (FC) - 833 конверсии - 99 454 визита;
  • Последний переход (LC) - 774 конверсии - 89 984 визита;
  • Последний значимый переход (LSC) - 829 конверсий - 93 401 визит;
  • Последний переход из Яндекс.Директа (LYDC) - 759 конверсий - 82 957 визитов.

Проверим соответствие данных с отчетами Директа в Метрике. Например, для атрибуции Последний значимый переход:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Сравнение с данными Метрики

Данные с выгруженными в R сходятся. Аналогично с остальными атрибуциями. Итоговая таблица по данным Яндекс.Метрики с помощью R для 4 различных моделей атрибуции:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Общая статистика по Яндекс.Метрике

Данные по конверсиям те же самые, что и были при выгрузке из Яндекс.Директа. Только отличается на 9 конверсий Последний переход из Яндекс.Директа. Но этим можно пренебречь, поскольку данные по модели атрибуции Последний переход из Директа доступны в Метрике с 25 июля 2019 года, а я отчет сформировал с маем 2019. А визиты и клики отличаются, как мы уже с вами поняли из моей предыдущей статьи. Соответственно, отличается и конверсия сайта и в каких-то случаях итоговая стоимость конверсии.

Сведем все полученные данные по Директу и Метрики в одну таблицу:

Сравнение моделей атрибуции Директа и Метрики с помощью R

Общая таблица сравнений статистика Директа и Метрики

Более того, я брал для сравнения только платный трафик. Но на сайте помимо него могут быть и другие - органический поиск, прямые заходы, переходы из социальных сетей, мессенджеров и т.д. Если вы будете сравнивать статистику в Мастере отчетов Директа по рекламным кампаниям и данные из Метрики по всем источникам трафика и разным моделям атрибуции, итоговые цифры будут отличаться еще больше.

Надеюсь, мне удалось экспериментально доказать и наглядно показать в двух последних публикациях отличие данных в Директе и Метрике 😉

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике