# Прогноз бюджета и отчёты сервиса WordStat

#### Alexey Seleznev

#### 2023-03-17

    library(ryandexdirect)

# Отчёт WordStat

WordStat — это бесплатный сервис Яндекса, предназначенный для оценки пользовательского интереса к различным тематикам и подбора ключевых слов для SEO-оптимизации и контекстной рекламы.

Для того, что бы получить отчёты из данного сервиса с помощью пакета `ryandexdirect` необходимо использовать функцию `ydirGetWordStatReport()`.

Функция `ydirGetWordStatReport()` возвращает те же сведения, которые доступны в сервисе Подбор слов. Статистика рассчитывается за прошедший месяц.

## Видео урок

Помимо данной виньетки данная тема рассмотренна в видео уроке, который доступен по ссылке.

## Аргументы функции ydirGetWordStatReport

- Phrases - Вектор ключевых фраз, по которым требуется получить статистику поисковых запросов (не более 10 фраз в кодировке UTF-8). Ключевые фразы могут содержать минус-фразы. Минус-фразу из нескольких слов следует заключить в скобки, например: `холодильник -морозильник -(морозильная камера) -ремонт`.
- GeoID - Вектор идентификаторов регионов. Позволяет получать статистику поисковых запросов, сделанных только в указанных регионах. Чтобы исключить регион, перед его идентификатором ставят минус, например [1,-219] — получить статистику для Москвы и Московской области, кроме Черноголовки. Статистика выдается суммарно по всем плюс-регионам, из которых исключены все минус-регионы. Получить справочник регионов можно с помощью функции `yadirGetDictionary()`

Остальные аргументы функции отвечают исключительно за авториацию, и с ними вы можете ознакомится в виньетке `vignette('yandex-direct-auth', "ryandexdirect")`.

## Пример загрузки отчёта по ключевым словам из Wordstat

В одном запросе вы можете получитьданные максимум по 10 ключевым фразам.

Ключевые фразы могут содержать минус-фразы. Минус-фразу из нескольких слов следует заключить в скобки, например: `холодильник -морозильник -(морозильная камера) -ремонт`.

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

    s_ws_rep <- yadirGetWordStatReport(c('купить смартфон',
                                         'купить сотовый телефон',
                                         'купить мобильный',
                                         'samsung -(серого цвета)'),
                                       Login = "selesnow")

В ходе формирования и парсинга запроса в консоли вы можете наблюдать за прогрессом выполнения операции.

    .Send report
    .Report status: Pending
    .Report status: Pending
    .Report status: Pending
    .Report status: Done
    .Get report
    .Parse report
    .Delete report
    Success!
    Duration: 29 sec.
    Request ID: 2685785695974693399
    WordStat Report ID: 2016016472
    Report SearchedAlso has 55 rows
    Report SearchedWith has 900 rows
    For get report data x[['ReportName']]

- Send report - Отчёт отправлен на API сервер
- Report status: Pending - Отчёт формируется на сервере API
- Report status: Done - Отчёт сформирован
- Get report - Получен отчёт от API сервера
- Parse report - Выполняется преобразование полученного от API результата в таблицы
- Delete report - Выполняется удаление отчёта с сервера API

В результате работы вы получите список, который состоит из двух таблиц: SearchedWith и SearchedAlso.

Обратиться к каждой из этих таблиц можно двумя способами:

    # Что искали с заданными ключевыми словами
    s_ws_rep$SearchedWith
    s_ws_rep[['SearchedWith']]

    # Запросы, похожие на заданные ключевые слова
    s_ws_rep$SearchedAlso
    s_ws_rep[['SearchedAlso']]

Образение через `$` и по имени в двойных квадратных скобках равнозначны.

Если вам необходимо получить справочник проектов, и получить статистику по Москве, Санкт - Петербургу, Екатеринбург и Владивостоку, то изначально вам необходимо запросить справочник регионов с помощью функции `yadirGetDictionary()` и получить идентификаторы нужных регионов, а потом передать их в аргумент `GeoId`.

    library(dplyr)

    # запрашиваем справочник регионов
    regions <- yadirGetDictionary(Login = "selesnow")

    # оставляем толлько нужные регионы
    rep_regions <- regions %>%
                      filter(GeoRegionName %in% c("Москва",
                                                  "Санкт-Петербург",
                                                  "Екатеринбург",
                                                  "Владивосток"))

    # запрашиваем отчёт
    reg_ws <- yadirGetWordStatReport(Phrases = c('купить смартфон -xiaomi',
                                                 'купить xiaomi'),
                                     GeoID   = rep_regions$GeoRegionId,
                                     Login   = "selesnow")

Так же вы можете указать минус регионы, например если вы хотите получить статистику по всей России без Москвы, Санкт - Петербуруа, Екатеринбурга и Владивостока. Для этого запросите справочник регионов, сначала получите идентификатор России (225), затем идентификаторы минус регионов, и перед идентификаторами минус регинов поставьте знак ‘-’.

В приведённом ниже примере кода это реализуется с помощью функции `mutate()` из пакета `dplyr`.

    library(dplyr)

    # запрашиваем справочник регионов
    regions <- yadirGetDictionary(Login = "selesnow")

    # получаем идентификатор России
    regions <- regions %>%
      filter(GeoRegionName %in% c("Россия"))

    # Получаем идентификаторы минус регионов, и ставим перед ними минус
    minus_regions <- regions %>%
                      filter(GeoRegionName %in% c("Москва",
                                                  "Санкт-Петербург",
                                                  "Екатеринбург",
                                                  "Владивосток")) %>%
                      mutate(GeoRegionId = paste0("-", GeoRegionId))

    # формируем запрос
    reg_ws <- yadirGetWordStatReport(Phrases = c('купить смартфон -xiaomi',
                                                 'купить xiaomi'),
                                     GeoID   = c(regions$GeoRegionId, minus_regions$GeoRegionId),
                                     Login   = "selesnow")

# Получить прогноз показов, кликов и затрат

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

## Аргументы функции yadirGetForecast

- Phrases - Вектор ключевых фраз, для которых требуется получить прогноз (не более 100 фраз)
- GeoID - Вектор, содержащий идентификаторы регионов для составления прогноза. Если не задан, прогноз составляется по всем регионам.
- Currency - Валюта, в которой должны быть выражены цены клика и суммарные затраты в отчете. Возможные значения: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN.
- AuctionBids - Выводить ли в отчете результаты торгов — Yes/No или `TRUE` / `FALSE`. Если не задано, подразумевается No.

Пример кода для получения прогноза с использованием всех аргументов, минус слов и минус регионов с результататми торгов:

    library(dplyr)

    # запрашиваем справочник регионов
    regions <- yadirGetDictionary(Login = "selesnow")

    # получаем идентификатор России
    regions <- regions %>%
      filter(GeoRegionName %in% c("Россия"))

    # получаем идентификатор минус регионов и помечаем их минусом
    minus_regions <- regions %>%
      filter(GeoRegionName %in% c("Москва",
                                  "Санкт-Петербург",
                                  "Екатеринбург",
                                  "Владивосток")) %>%
      mutate(GeoRegionId = paste0("-", GeoRegionId))

    # запрашиваем прогноз с результататми торгов
    forecast <- yadirGetForecast2(Phrases = c('купить смартфон -xiaomi',
                                             'купить xiaomi',
                                             'самсунг -(серого цвета)'),
                                 GeoID   = c(regions$GeoRegionId, minus_regions$GeoRegionId),
                                 AuctionBids = 'Yes',
                                 Login   = "selesnow")

В результате в объекте forecast будет список из двух таблиц: * PhrasesForecast - Таблица прогноза в разреще всех указанных фраз * CommonForecast - Общий суммарный прогноз

Обратится к таблицам можно по имени указав его через `$` или в двойных квадратных скобках.

    # прогноз в разрезе фраз
    forecast$PhrasesForecast

    # оющий прогнох
    forecast[['CommonForecast']]

## Описание полей полученной таблицы прогнозов

Таблица PhrasesForecast сожержит следующие поля:

- PhrasesForecast - Ключевая фраза, для которой составлен прогноз.
- IsRubric - Признак того, что фраза является рубрикой Яндекс.Каталога.
- Min - Средневзвешенная цена клика в нижнем блоке на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- Max - Средневзвешенная цена клика на первом месте в нижнем блоке на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- PremiumMin - Средневзвешенная цена клика в спецразмещении на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- PremiumMax - Средневзвешенная цена клика на первом месте в спецразмещении на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- Shows - Возможное количество показов объявления по данной фразе за прошедший месяц.
- Clicks - Возможное количество кликов по объявлению в нижнем блоке (кроме первого места) за прошедший месяц.
- FirstPlaceClicks - Возможное количество кликов по объявлению на первом месте в нижнем блоке, за прошедший месяц.
- PremiumClicks - Возможное количество кликов по объявлению в спецразмещении за прошедший месяц.
- CTR - CTR при показе в нижнем блоке, в процентах. Рассчитывается по формуле: `Clicks/Shows * 100`
- FirstPlaceCTR - CTR при показе на первом месте в нижнем блоке. Рассчитывается по формуле: `FirstPlaceClicks/Shows * 100`
- Currency - Валюта, в которой выражены цены клика и суммарные затраты в отчете. Возможные значения: RUB, CHF, EUR, KZT, TRY, UAH, USD, BYN.
- Position - Позиция показа: Pmn, где: m — номер блока (1 — спецразмещение, 2 — блок гарантированных показов); n — номер позиции в рамках блока. Например, P12 — второе место в спецразмещении, P21 — первое место в блоке гарантированных показов.
- Bid - Минимальная ставка за указанную позицию (в валюте, указанной в параметре `Currency`). Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- Price - Списываемая цена для указанной позиции (в валюте, указанной в параметре `Currency`). Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.

Таблица CommonForecast сожержит следующие поля:

- Geo - Список регионов, которые указаны при формировании отчета
- Min - Средневзвешенная цена клика в нижнем блоке на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- Max - Средневзвешенная цена клика на первом месте в нижнем блоке на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- PremiumMin - Средневзвешенная цена клика в спецразмещении на момент составления прогноза. Значение конвертируется в валюту, указанную в параметре `Currency`, и округляется вверх с точностью до шага торгов в этой валюте.
- Shows - Возможное количество показов объявления по данной фразе за прошедший месяц.
- Clicks - Возможное количество кликов по объявлению в нижнем блоке (кроме первого места) за прошедший месяц.
- FirstPlaceClicks - Возможное количество кликов по объявлению на первом месте в нижнем блоке, за прошедший месяц.
- PremiumClicks - Возможное количество кликов по объявлению в спецразмещении за прошедший месяц.