Использование R. Среда статистических вычислений R: опыт использования в преподавании Сравнение R с языками программирования MatLab, Python и Julia

Programming on R. Level 1. Basics

Язык R – самый популярный в мире инструмент статистического анализа данных. Он содержит широчайший спектр возможностей для анализа данных, их визуализации, а также создания документов и веб-приложений. Хотите освоить этот мощный язык под руководством опытного наставника? Приглашаем вас на курс «Программирование на языке R. Уровень 1. Базовые знания» .

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

На занятиях вы получите основные навыки анализа и визуализации данных в среде R . Большая часть времени отводится практическим заданиям и работе с реальными наборами данных. Вы изучите все новые инструменты работы с данными и научитесь их применять в своей работе.

После курса выдается удостоверение о повышении квалификации центра.

Давайте немного поговорим о языке программирования под названием R. В последнее время вы могли у нас в блогах прочитать статьи о и , тех сферах, где просто необходимо под рукой иметь мощный язык для работы со статистикой и графиками. И R как раз из таких. Новичку в мире программирования буде достаточно непросто в это поверить, но сегодня R уже популярнее SQL, он активно используется в коммерческих организациях, исследовательских и университетах.

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

Что такое язык R, зачем он вам нужен и как его можно использовать с умом, можно узнать из прекрасного Руслана Купцова, который он провёл чуть меньше года назад в рамках GeekWeek-2015.

Книги

Теперь, когда в голове есть определённый порядок, можно приступать к чтению литературы, благо её более чем достаточно. Начнём с отечественных авторов:


Интернет-ресурсы

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

Но опять проникшись заботой к тем, кто английский язык выучить ещё не успел, а вот изучить R ну очень хочет, упомянем несколько российских ресурсов:

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

CRAN - собственно, место где можно загрузить к себе на компьютер среду разработки R. Кроме того мануалы, примеры и прочее полезное чтиво;

Quick-R - коротко и понятно про статистику, методы её обработки и язык R;

Burns-Stat - про R и про предшественника его S с огромным количеством примеров;

R for Data Science - ещё одна книга от Гаррета Гроулмунда (Garrett Grolemund), переведённая в формат онлайн учебника;

Awesome R - подборка лучшего кода с официального сайта, размещённая на нашем любимом GitHub;

Mran - язык R от Microsoft;

Tutorial R - ещё один ресурс с упорядоченной информацией с официального сайта.

В августе 1993 г. двое молодых новозеландских ученых из университета Окленда анонсировали свою новую разработку, которую они назвали R. По замыслу создателей, Роберта Джентльмена (Robert Gentleman) и Росса Ихака (Ross Ihaka), она должна была стать новой реализацией языка S, отличающейся от S-PLUS некоторыми деталями, например, обращением с глобальными и локальными переменными, а также работой с памятью. Фактически, они создали не полный аналог S-PLUS, а новую «ветку» на «дереве S». Многие вещи, которые отличают R от S-PLUS, связаны с влиянием языка Scheme (функциональный язык программирования, один из наиболее популярных диалектов языка Lisp).

На середину 2016 года R догнал SAS и SPSS (которые являются платными) и вошел в тройку самых распространенных систем для обработки статистической информации. Также следует отметить, что R входит в 10 языков программирования общего назначения.

Возможности

В среде R реализованы многие статистические методы: линейные и нелинейным модели , проверка статистических гипотез , анализ временных рядов , классификация , кластеризация , графическая визуализация . Язык R позволяет определять собственные функции. Многие функции R написаны на самом R. Для вычислительно сложных задач имеется возможность реализации функций на C, C++ и Fortran. Продвинутые пользователи могут непосредственно обращаться с объектами R из кода на языке C. R является более строгим объектно-ориентированным языком, чем большинство языков, предназначенных для статистических вычислений. Графические функции позволяют создавать графики хорошего полиграфического качества, с возможностью включения математических символов. Имеется собственный LaTeX -подобный формат документации.

Хотя R чаще всего применяется для статистических вычислений, он также может использоваться в качестве средства матричных вычислений. Как и MATLAB , R трактует результат любой операции с числами как вектор единичной длины. Скаляров в R, вообще говоря, нет.

Скрипты

Просто открыть сессию R и вводить в окно программы команды, одну за другой - это лишь один из возможных способов работы. Гораздо более продуктивный метод, который является заодно и серьёзнейшим преимуществом R - это создание скриптов (программ), которые потом загружаются в R и интерпретируются им. С самого начала работы следует создавать скрипты, даже для таких задач, которые кажутся пустяковыми - в будущем это значительно сэкономит время. Создание скриптов по любому поводу и даже без особого повода - одна из основ культуры работы в R.

Пакеты

Ещё одно важное преимущество R - наличие для него многочисленных расширений или пакетов. Несколько базовых пакетов присутствуют сразу после установки R на компьютер, без них система просто не работает (скажем, пакет, который так и называется base, или пакет grDevices, который управляет выводом графиков), а также «рекомендованные» пакеты (пакет для специализированного кластерного анализа cluster, пакет для анализа нелинейных моделей nlme и другие). Кроме того, можно поставить любой из почти восьми тысяч (на середину 2016 года) доступных на CRAN пакетов. При наличии доступа в Интернет это можно сделать прямо из R командой install.packages()

Ссылки

  • CRAN (Comprehensive R Archive Network) - центральная система хранения и распространения R и его пакетов.

Что такое R пакет?

R пакет является расширением, созданным для решения конкретной задачи на . Пакеты без которых трудно было бы представить работу в R, включены в базовую сборку и автоматически доступны после установки R на Ваш компьютер (так называемое ядро R). Например, пакет stat позволяет проводить статистические тесты, а благодаря пакету graphics возможно построение графиков в R. Однако большинство пакетов имеют узкоспециализированное применение и для работы с ними требуется "расширить" свою библиотеку R, установив необходимый для работы пакет на свой компьютер.

С технической точки зрения, R пакет - это совокупность , данных и документации к ним, собранных в единое целое по стандартной схеме. Каждый пакет должен быть протестирован на предмет ошибок и соответствий стандартам официального архива R пакетов (CRAN). В случае обнаружения несоответствий, пакет не будет принят в CRAN. Благодаря такому подходу принципы работы с любым R пакетом одинаковы, чем обуславливается простота и удобство их использования. К осени 2018 года число пакетов в CRAN превысило !!!

Как установить и загрузить пакет в R?

Установить R пакет можно несколькими способами. Начнем с самого распространенного случая: установка пакета из CRAN. Для этого просто введите функцию install.packages в консоль, а аргументах которой напишите название искомого пакета (для примера возьмем пакет ggplot2 ):

install.packages("ggplot2")

В открывшемся окне со списком стран выберите любое зеркало для скачивания. Процесс установки пакета в Вашу библиотеку начнется автоматически. Иногда Вы можете заметить, что вместо одного пакета в Вашу библиотеку загружается несколько. Происходит это из-за того, что зачастую пакет использует функции или данные из других пакетов без которых установленный R пакет не сможет полноценно работать. Таким образом, пакет с зависимостями (dependencies ) "подтягивает" другие пакеты и устанавливается в библиотеку вместе с ними.

После установки пакета необходимо загрузить его в Вашу текущую сессию, используя функцию library() :

library("ggplot2")

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

Установка R пакета через GitHub

Однако не все R пакеты доступны в CRAN. Многие исследователи коллективно работают над R пакетами на платформе GitHub , где они делятся идеями, оповещают о найденных багах, исправляют их и уведомляют об этом остальных пользователей в онлайн режиме. Чаще всего на GitHub публикуются пакеты, которые все еще находятся в стадии разработки/тестирования, поэтому стабильность их работы не гарантирована. Для того, чтобы скачать R пакет с GitHub, необходимо установить сначала пакет "devtools" , загрузить его в среду R и использовать функцию install_github() , где указываем в аргументах имя главного разработчика пакета и через слэш называние пакета:

install.packages("devtools") library("devtools") install_github("Author/PackageName")

Устанавливаем R пакет вручную (архив tar.gz или zip)

Некоторые пакеты находятся на других платформах (например ResearchGate), на сайтах исследовательских групп или личном вебсайте разработчика, откуда можно скачать R пакет на компьютер в виде архива с расширением.tar.gz или.zip. В этом случае, следует загружать пакет вручную, воспользовавшись все той же командой install.packages() . Однако в первом аргументе функции надо указать уже не имя пакета, а адрес скачанного архива, а также ввести дополнительные аргументы:

install.packages("Desktop/PackageName.tar.gz", repos = NULL, type="source")

Чтение документации - ключ к работе с R пакетами!

Документация является важнейшим элементом взаимодействия пользователя с Rпакетом. Она может быть представлена в виде поста на вебсайте, обучающего видео, научной публикации или справочного пособия. Первые три варианта позволяют наглядно продемонстрировать идею и возможности пакета. Именно с них я рекомендую начать знакомство с неизвестным для Вас пакетом (если они доступны в интернете).

Справочное пособие (Reference Manual ), напротив, является техническим описанием R пакета, его функций и данных. В отличие от других видов документации справочное пособие есть у любого пакета доступного в CRAN. Оно написано в определенном формате и синхронизировано с кодом функций. В результате, справочную информацию можно искать при помощи справочных команд в среде R. Например, чтобы узнать описание установленного пакета ggplot2 , просто вводим имя пакета, поставив перед ним знак вопроса:

?ggplot2

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

Все тоже самое можно найти в PDF формате на официальном сайте CRAN (например, справочное пособие пакета ggplot2). На первой странице находится описание R пакета, затем - список его функций и таблиц данных, далее - подробное техническое описание каждой из них в алфавитном порядке.

Заключение

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

А в следующей статье мы будем собирать R пакет своими руками!

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

Солержание

  1. Какой софт нам потребуется
  2. CRAN или GitHub
    • Возможности пакета rvkstat
    • Пример кода для работы с пакетом rvkstat
  3. rmytarget - загрузка данных из API MyTarget
    • Возможности пакета rmytarget
    • Пример кода для работы с rmytarget
    • Основные функции пакета rym
    • Пример работы с пакетом rym
  4. Заключение

Какой софт нам потребуется

Т.к. в данной статье мы говорим про язык R, то вам потребуется сам и среда разработки RStudio .


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

Как начать работу с R пакетами

Ничего сложного для начала работы с R пакетами нет, осуществляется это следующим образом:

  1. Установка пакета, как правило с помощью базовой команды install.packages ;
  2. Подключение пакета, каждый раз при старте нового сеанса работы с R, данная оперция может быть выполнена с помощью команды library или require .

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


Для установки приведённых в статье пакетов с GitHub вам предварительно необходимо установить пакет devtools, для этого выполните команду install.packages("devtools") .

CRAN или GitHub

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


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

Какие навыки нужны для работы с R пакетами

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


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

ryandexdirect - загрузка данных из Яндекс.Директ

Установка пакета с CRAN: install.packages("ryandexdirect")
Установка пакета с GitHub: devtools::install_github("selesnow/ryandexdirect")
Официальная документация: ссылка


Данный пакет предназначен для работы с API одной из наиболее популярных рекламных площадок в СНГ - Яндекс.Директ.

Возможности пакета ryandexdirect

  1. Авторизация в API Яндекса;
  2. Загрузка списка рекламных кампаний, ключевых слов, объявлений;
  3. Загрузка статистических данных из аккаунтов Яндекс.Директ с помощью сервиса Reports .
  4. Остановка и возобновление показов объявлений на уровне рекламных кампаний, ключевых слов и объявлений.
  5. Запрос остатка средств и других параметров общего счёта.
  6. Загрузка справочной информации (курсы валют, географический справочник и т.д.)

Основные функции

Основные функции доступные в ryandexdirect, которые могут вам понадобиться для работы с API Яндекс.Директ:

  • yadirAuth - Авторизация в API;
  • yadirGetAds , yadirGetCampaignList , yadirGetKeyWords - Загрузка списка объявлений, рекламных кампаний, ключевых слов;
  • yadirStartAds , yadirStartCampaigns , yadirStartKeyWords -

Пример кода для загрузки статистики с помощью пакета ryandexdirect

library(ryandexdirect) stat <- yadirGetReport(ReportType = "ACCOUNT_PERFORMANCE_REPORT", DateRangeType = "CUSTOM_DATE", DateFrom = "2018-01-01", DateTo = "2018-05-10", FieldNames = c("AdNetworkType", "Impressions", "Clicks", "Cost"), FilterList = c("CampaignId IN 123456 ,987654","Clicks GREATER_THAN 100"), IncludeVAT = "YES", IncludeDiscount = "NO", Login = "ваш логин", TokenPath = "C:/token_yandex")

RAdwords - загрузка данных из Google Ads (ex Google AdWords)

Установка пакета с CRAN: install.packages("RAdwords")
Установка пакета с GitHub: devtools::install_github("jburkhardt/RAdwords")
Официальная документация: ссылка

Возможности пакета RAdwords

Основные функции пакета RAdwords

На самом деле пакет в принципе содержит не особо много функций, но я за всё время пользовался всего тремя:

  • doAuth - Авторизация;
  • statement - Формирование тела запроса к API;

Пример работы с пакетом RAdwords

library(RAdwords) # запрос токена adw_token <- doAyth() # формирование запроса body <- statement(select=c("AccountDescriptiveName", "ExternalCustomerId", "AccountCurrencyCode", "AdNetworkType1", "RegionCriteriaId", "CountryCriteriaId", "CityCriteriaId", "Device", "Month", "Year", "Impressions", "Clicks", "Interactions", "VideoViews", "Cost", "Conversions"), report="GEO_PERFORMANCE_REPORT", start="2018-09-01", end="2018-09-20") my_data <- getData(clientCustomerId = "000-000-0000", google_auth = adw_token , statement = body, transformation = T)


Список доступных в API Google Ads отчётов, и полей вы можете найти по ссылке в официальной справке.

adwordsR - более новый и функциональный пакет для загрузка=и данных из Google Ads (ex Google AdWords)

Установка пакета с CRAN: install.packages("adwordsR")
Установка пакета с GitHub: devtools::install_github("cran/adwordsR")


Пакет adwordsR по смыслу схож с RAdwords, но он более новый, и имеет гораздо больший набор функций.

Возможности пакета adwordsR

Помимо описанных выше возможностей пакета RAdwords, adwordsR даёт вам широкие возможности по работе с TargetingIdeaService, службе с помощью которой можно получать варианты таргетинга прямо из инструмента или платформы, что помогает автоматизировать оптимизацию аккаунта.

Основные функции пакета adwordsR

  • generateAdwordsToken - Запрос токена для работы с API Google Ads;
  • loadAdwordsToken - Загрузка запрошенного, и сохранённого ранее токена;
  • getReportData - Загрузка статистики из аккаунта Google Ads.

Пример работы с пакетом adwordsR

library(adwordsR) # Запрос токена adw_token <- generateAdwordsToken(saveNewToken = TRUE, addGitignore = FALSE) # Загрузка ранее сохранённого токена adw_token <- loadAdwordsToken() # Запрос данных AdWordsData <- getReportData(reportType = "CAMPAIGN_PERFORMANCE_REPORT", startDate = "2018-08-01", endDate = "2018-08-15", clientCustomerId = "000-000-0000", credentials = adw_token, attributes = "CampaignName,CampaignStatus", segment = "Date,AdNetworkType1", metrics = "AverageCost,Clicks,Conversions", includeZeroImpressions = TRUE, useRequestedHeaders = FALSE)

rfacebookstat - загрузка данных из рекламных кабинетов Facebook

Установка пакета с CRAN: install.packages("rfacebookstat")
Установка пакета с GitHub: devtools::install_github("selesnow/rfacebookstat")
Официальная документация: ссылка

Возможности пакета rfacebookstat

  1. Авторизация в API Facebook
  2. Загрузка списка доступных вам бизнес-менеджеров;
  3. Загрузка списка рекламных кампаний, групп объявлений, объявлений.
  4. Загрузка статистики на уровне рекламного аккаунта, рекламных кампаний, групп объявлений и объявлений.
  5. Загрузка списка пользователей у которых есть доступ к рекламному аккаунту.
  6. Управление доступами к рекламным аккаунтам.

Основные функции пакета rfacebookstat

Пример кода для работы с rfacebookstat

library(rfacebookstat) token <- fbGetToken(app_id = 00000000000000) fb_data <- fbGetMarketingStat(accounts_id = "act_00000000000000", level = "campaign", fields = "campaign_name,actions", action_breakdowns = "action_link_click_destination", date_start = "2017-11-01", date_stop = "2017-11-20", interval = "day", access_token = token)

rvkstat - загрузка данных из API Вконтакте

Установка пакета с GitHub: devtools::install_github("selesnow/rvkstat")
Официальная документация: ссылка


Достаточно мощный и многофункциольный пакет для работы с API социальной сети Вконтакте.

Возможности пакета rvkstat

  1. Авторизация в API Вконтакте;
  2. Загрузка данных из рекламных кабинетов Вконтакте;
  3. Загрузка справочной информации из Вконтакте;
  4. Загрузка некоторой информации о пользователе Вконтакте;
  5. Загрузка статистики из рекламного кабинета Вконтакте;
  6. Загрузка статистики о посещениях сообществ Вконтакте.

Основные функции пакета rvkstat

Пакет rvkstat на момент написания статьи содержит более 30 функции, вот наиболее полезные из них:

  • vkAuth - Авторизация;
  • vkGetAdStatistics - Загрузка статистики из рекламного кабинета;
  • vkGetAdCampaigns , vkGetAds - Загрузка списка рекламных кампаний и объявлений;
  • vkGetGroupStat - Загрузка статистики о посещении групп и сообществ Вконтакте.

Пример кода для работы с пакетом rvkstat

Возможности пакета rmytarget

  1. Авторизация в API MyTarget по схеме Code Grant;
  2. Загрузка списка рекламных кампаний, объявлений.
  3. Загрузка статистики на уровне рекламных кампаний и объявлений.

Основные функции пакета rmytarget

  • myTarAuth - Авторизация;
  • myTarGetAdList , myTarGetCampaignList - Загрузка списка объявлений и рекламных кампаний;
  • myTarGetStats - Загрузка статистики по объявлениям и рекламным кампаниям.

Пример кода для работы с rmytarget

library(rmytarget) # запрос списка объявлений Ads <- myTarGetAdList(login = "ваш логин") # запрос статистики по объявлениям a_stat <- myTarGetStats(date_from = "2016-08-01", date_to = "2016-08-10", object_type = "banners", object_id = Ads$id, stat_type = "day", login = "ваш логин")

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

Установка пакета с CRAN: install.packages("rym")
Установка пакета с GitHub: devtools::install_github("selesnow/rym")
Официальная документация: ссылка

Основные возможности пакета rym

Пакет rym позволяет вам работать со всеми доступными в Яндекс.Метрики API интерфейсами:

  1. Авторизация по протоколу oAuth2;
  2. Работа с API управления ;
  3. Работа с API отчётов ;
  4. Работа с API совместимым с Core API Google Analytics v3 ;
  5. Работа с Logs API .

Основные функции пакета rym

  • rym_auth - Авторизаця;
  • rym_get_counters - Загрузка списка счётчиков Яндекс.Метрики;
  • rym_get_ga - Загрузка данных из API совместимым с Core API Google Analytics;

Пример работы с пакетом rym

reporting.api.stat <- rym_get_data(counters = "00000000,111111111", date.from = "2018-08-01", date.to = "yesterday", dimensions = "ym:s:date,ym:s:lastTrafficSource", metrics = "ym:s:visits,ym:s:pageviews,ym:s:users", filters = "ym:s:trafficSourceName=="Переходы из поисковых систем" AND ym:s:isNewUser=="Yes"", sort = "-ym:s:date", accuracy = "full", login = "ваш логин", token.path = "metrica_token", lang = "ru")

Заключение

Итак с помощью приведённых в этой статье пакетов вы вполне можете автоматизировать сбор данных из таких источников как Яндекс.Директ, Google Ads, Facebook, Вконтакте, MyTarget и Яндекс.Метрика. Конечно это далеко не исчерпывающий список сервисов которые используются интрент маркетологами, но уместить все инструменты в одну статью достаточно проблематично, поэтому если данная статья получит положительные отзывы я напишу продолжение.



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