Что делает r
Перейти к содержимому

Что делает r

Язык программирования R и его место среди статистических программ

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

Что такое R?

Прежде чем дать четкое определение, следует отметить, что R — это нечто большее, чем просто программа: это и среда, и язык, и даже движение! Мы рассмотрим R с разных ракурсов.

R — это среда вычислений, разработанная учеными для обработки данных, математического моделирования и работы с графикой. R можно использовать как простой калькулятор, можно редактировать в нем таблицы с данными, можно проводить простые статистические анализы (например, t-тест, ANOVA или регрессионный анализ) и более сложные длительные вычисления, проверять гипотезы, строить векторные графики и карты. Это далеко не полный перечень того, что можно делать в этой среде. Стоит отметить, что она распространяется бесплатно и может быть установлена как на Windows, так и на операционные системы класса UNIX (Linux и MacOS X). Другими словами, R — это свободный и кроссплатформенный продукт.

R — это язык программирования, благодаря чему можно писать собственные программы (скрипты) при помощи управляющих конструкций, а также использовать и создавать специализированные расширения (пакеты). Пакет — это набор R функций, файлов со справочной информацией и примерами, собранных вместе в одном архиве. R пакеты играют важную роль, так как они используются как дополнительные расширения на базе R. Каждый пакет, как правило, посвящен конкретной теме, например: пакет ‘ggplot2’ используется для построения красивых векторных графиков определенного дизайна, а пакет ‘qtl’ идеально подходит для генетического картирования. Таких пакетов в библиотеке R насчитывается на данный момент более 7000! Все они проверены на предмет ошибок и находятся в открытом доступе.

Авторы языка R

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

Как выглядит среда R?

Существует много «оболочек» для R, внешний вид и функциональность которых могут сильно отличаться. Но мы коротко рассмотрим лишь три наиболее популярных варианта: Rgui, Rstudio и R, запущенный в терминале Linux/UNIX в виде командной строки.

Rgui — это стандартный графический интерфейс (https://cran.r-project.org/), встроенный в R по умолчанию. Эта оболочка имеет вид командной строки в окне, называемым консолью. Командная строка работает по принципу «вопрос-ответ».

Например:
> 2 + 2 * 2 # наш вопрос/запрос
[1] 6 # ответ компьютера

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

На приведенном ниже рисунке, показана полная версия Rgui: консоль (слева), скриптовое окно и графический модуль (справа).

Rgui внешний вид

Rstudio — интегрированная среда разработки (IDE) (https://www.rstudio.com/). В отличие от Rgui, у данной оболочки есть заранее разделенные области и дополнительные модули (например, история команд, рабочая область). По мнению некоторых пользователей, Rstudio имеет более удобный интерфейс, упрощающий работу с R. Ряд особенностей, таких как цветовая подсветка и автоматическое завершение кода, удобная навигация по скрипту и другие, делают Rstudio привлекательной не только для новичков, но и для опытных программистов.

Rstudio внешний вид

R в терминале Linux/UNIX. Данный вариант предпочтителен для анализа большого объема данных через сервер, суперкластер или суперкомпьютер. Большинство из них работают на операционных системах класса Linux/UNIX, доступ к которым осуществляется через терминал команд (например, bash). R в терминале представляет собой приложение, запущенное в виде командной строки (можете попрактиковаться здесь).

R в терминале

Язык R в мире статистических программ

На данный момент насчитываются десятки качественных статистических пакетов, среди которых явными лидерами являются SPSS, SAS и MatLab. Однако, в 2013 году, несмотря на высокую конкуренцию, R стал самым используемым программным продуктом для статистического анализа в научных публикациях (http://r4stats.com/articles/popularity/). Кроме того, в последнее десятилетие R становится все более востребованным и в бизнес-секторе: такие компании-гиганты, как Google, Facebook, Ford и New York Times активно используют его для сбора, анализа и визуализации данных (http://www.revolutionanalytics.com/companies-using-r). Для того чтобы понять причины растущей популярности языка R, обратим внимание на его общие черты и отличия от других статистических продуктов.

В целом большинство статистических инструментов можно разделить на три типа:

  1. программы с графическим интерфейсом, основанные на принципе «кликни здесь, тут и получи готовый результат»;
  1. статистические языки программирования, в работе с которыми необходимы базовые навыки программирования;
  1. «смешанный», в которых есть и графический интерфейс (GUI), и возможность создания скриптовых программ (например: SAS, STATA, Rcmdr).

Особенности программ с GUI

Программы с графическим интерфейсом имеют привычный для обычного пользователя вид и легки в освоении. Но для решения нетривиальных задач они не подходят, так как имеют ограниченный набор стат. методов и в них невозможно писать собственные алгоритмы. Смешанный тип сочетает в себе удобство GUI оболочки и мощь языков программирования. Однако, при детальном сравнении статистических возможностей с языками программирования SAS и STATA проигрывают и R, и MatLab (сравнение статистических методов R, MatLab, STATA, SAS, SPSS). К тому же за лицензию для этих программ придется выложить приличную сумму денег, а единственным бесплатной альтернативой является Rcmdr: оболочка для R с GUI (Rcommander).

Сравнение R с языками программирования MatLab, Python и Julia

Среди языков программирования, используемых в статистических расчетах, лидирующие позиции занимают R и Matlab. Они схожи между собой, как по внешнему виду, так и по функциональности; но имеют разные лобби пользователей, что и определяет их специфику. Исторически MatLab был ориентирован на прикладные науки инженерных специальностей, поэтому его сильными сторонами являются мат. моделирование и расчеты, к тому же он гораздо быстрее R! Но так как R разрабатывался как узкопрофильный язык для статистической обработки данных, то многие экспериментальные стат. методы появлялись и закреплялись именно в нем. Этот факт и нулевая стоимость сделали R идеальной площадкой для разработки и использования новых пакетов, применяемых в фундаментальных науках.

Другими «конкурирующими» языками являются Python и Julia. По моему мнению, Python, являясь универсальный языком программирования, больше подходит для обработки данных и сбора информации с применением веб-технологий, чем для статистического анализа и визуализации (основные отличия R от Python хорошо описаны здесь). А вот статистический язык Julia — довольно молодой и претенциозный проект. Основной особенностью этого языка является скорость вычислений, в некоторых тестах превышающая R в 100 раз! Пока Julia находится на ранней стадии развития и имеет мало дополнительных пакетов и последователей, но в отдаленный перспективе Julia — это, пожалуй, единственный потенциальный конкурент R.

Заключение

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

Зачем учить язык R: кому и когда он нужен

Автор: Алина Онюшкина

Язык программирования R помогает анализировать статистику и визуализировать большие объёмы данных. В этом материале разбираемся, что пишут на языке R, в чём его особенности и какие у него перспективы.

Особенности языка R

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

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

Как появился язык R

Язык R появился как аналог другого языка программирования — S. Язык S создал канадский программист Джон Чемберс в 1976 году для компании Bell Labs. С начала 1900-х годов эта компания была центром технологических экспериментов — выпускала телефоны, компьютеры и радары.

Язык S оказался быстрым и мощным, чтобы работать в сфере дата-сайнс. Но он был платным и был недоступен широкому кругу разработчиков. Поэтому в 1995 году два статистика из Новой Зеландии — Росс Ихака и Роберт Джентльмен разработали альтернативную версию языка S. Так появился R — язык с открытым исходным кодом, который до сих применяется в научных программах и упрощает работу статистиков по всему миру

Среда разработки R

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

У языка есть несколько оболочек, которые отличаются функциями и внешним видом. Вот основные среди них:

  • Rgui — это графический интерфейс. Внешне выглядит как окно с командной строкой. В этой консоли вы можете задать вопрос и получить ответ. Для более сложных вычислений в Rgui существует скриптовое окно, где вы пишете собственный скрипт или программу. Для визуализации данных интерфейс подключает графический модуль, в котором отображаются графики.
  • RStudio — это интегрированная среда разработки. Она разделена на области с дополнительными модулями для отображения графиков в отдельном окне и отслеживания истории правок. Многие разработчики считают RStudio более удобной для работы с R, ведь в ней есть цветовая подсветка и автоматическое завершение кода.
  • R в терминале Linux/Unix — наиболее подходящий вариант для работы с большим количеством данных через сервер или суперкомпьютер. Фактически, это приложение в виде командной строки, простое в использовании и без излишеств.

Где применяется язык R

Главное применение языка R — анализ данных и построение выводов на их основе. Язык R позволяет эффективно проводить следующие операции:

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

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

Его используют в компании Ford для прогноза спроса на определённые модели автомобилей, а соцсети с его помощью совершенствуют настройку таргета. Также R использовали для оценки перспектив вакцинации от вируса COVID-19

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

Преимущества R в дата-сайнс

Сила R в его гибкости — он облегчает жизнь программиста на всех этапах: от сбора данных до анализа и построения графики. Разработчики отмечают, что применение этого языка позволило им навсегда забыть о Excel.

Вот основные преимущества использования языка:

  • богатая экосистема с множеством мощных библиотек для анализа данных;
  • удобная среда разработки RStudio;
  • бесплатная экосистема под лицензией GNU;
  • совместимость с большинством операционных систем: Windows, macOS, Linux, Solaris;
  • большое комьюнити: по разным данным, в улучшении и доработке языка участвовало более 2 млн человек;
  • много справочной информации в открытом доступе: книги, блоги, видеоуроки;
  • обширная документация, в которой можно найти описание всех библиотек и дополнений;
  • синтаксис, заточенный под анализ данных и дата-сайнс.

Перспективы языка R

Сегодня R занимает 14 место в рейтинге популярности языков, но у него всё ещё есть перспективы для развития. R — не язык общего назначения, пользоваться им за пределами анализа данных и статистики вряд ли получится, зато он призван сделать работу в узкой специальности максимально комфортной.

R-программисты занимаются анализом данных и они особенно востребованы в научно-исследовательской отрасли. Практически в каждой вакансии дата-аналитика на сайте hh.ru требуется знание языка R, и зарплаты таких специалистов начинаются от 80 000 руб. в месяц. В большинстве вакансий, наряду со знанием R требуется понимание SQL или Python, а иногда всех языков сразу.

Как освоить язык R

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

Краткая инструкция для базового изучения языка R:

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

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

Рекомендуем остановиться на следующих книгах:

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

Шаг 4: найдите наставника. Опытный наставник укажет на ошибки и поможет их исправить. Это может быть более опытный коллега или куратор онлайн-курса.

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

Популярные курсы по обучению языку R

Курс «Язык R для аналитики» от Нетологии поможет за полтора месяца поднять свой уровень знаний в аналитики с новичка до мидл-специалиста. Вы научитесь программировать на языке R, сможете визуализировать данные и разрабатывать аналитические веб-приложения. В конце обучения вы создадите приложение для моделирования доходности личных накоплений

На курсе «Язык R для анализа данных» от Skillbox за четыре месяца вы научитесь обрабатывать данные, проводить разведывательный анализ, визуализировать данные и создавать интерактивные аналитические панели

Программа «Профессия Data Scientist» от Skillbox рассчитана на новичков. На курсе вы разберётесь в специфике языка, сможете обрабатывать и визуализировать статические данные. После изучения основ вы сможете продолжить обучение по одной из двух специализаций — аналитика или машинное обучение

Подведём итоги

R — узконаправленный язык, придуманный статистиками для статистиков. Он полезен научным работникам, аналитикам и специалистам в сфере дата-сайнс. R-разработчики часто нужны в среднем и крупном бизнесе. Отдельное направление в R — машинное обучение и нейросети. Изучив язык R у вас будет широкий выбор сферы деятельности.

Подборка актуальных онлайн-курсов по программированию на языке R поможет выбрать оптимальную именно для вас программу обучения

Язык R в помощь хабра-статисту

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

Цель: Собрать средствами языка R данные с любимого HabraHabr’а и провести, собственно то, для чего и был создан язык R, а именно: статистический анализ.

  • Как можно использовать R для извлечения данных из Web ресурсов
  • Как преобразовывать данные для последующего анализа
  • Какие ресурсы крайне рекомендуются к прочтению всем желающим познакомиться с R поближе

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

Подготовка
  • Rcurl — для работы с сетью. Все кто работал с CURL сразу поймет все открывающиеся возможности.
  • XML — пакет для работы с DOM деревом XML документа. Нам понадобится функционал нахождения элементов по xpath
Получаем данные

Чтобы получить DOM объект документа полученного из интернета достаточно выполнить следующие строчки:

  • Когда запись была опубликована
  • Сколько было просмотров
  • Сколько человек занесло запись в избранные
  • Сколько было нажатий на +1 и -1 (суммарно)
  • Сколько было +1 нажатий
  • Сколько -1
  • Текущий рейтинг
  • Количество комментариев

Здесь мы использовали поиск элементов и атрибутов с помощью xpath.
Далее крайне рекомендуется сформировать из полученных данных data.frame — это аналог таблиц базы данных. Можно будет делать запросы разного уровня сложности. Иногда диву даешься, как элегантно можно сделать в R ту или иную вещь.

После формирования data.frame необходимо будет подправить полученные данные: преобразовать строчки в числа, получить реальную дату в нормальном формате и т.д. Делаем это таким образом:

Так же полезно добавить дополнительные поля, которые вычисляются из уже полученных:

Здесь мы всем известные сообщения вида «Всего 35: ↑29 и ↓6» преобразовали в массив данных по тому, сколько вообще было произведено действий, сколько было плюсов и сколько было минусов.

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

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

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

Таким образом мы скачиваем все страницы с 10 по 100 с паузой в 5 секунд. Страницы до 10 нам не интересны, так как оценки там еще не видны. После нескольких минут ожидания все наши данные находятся в переменной posts. Рекомендую их тут же сохранить, чтобы каждый раз не беспокоить хабр! Делается это таким образом:

А считываем следующим образом:

Ура! Мы научились получать статистические данные с хабра и сохранять их локально для следующего анализа!

Анализ данных

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

Пользователи хабра значительно охотнее плюсуют, чем минусуют.

Это видно по следующему графику. Заметьте, на сколько «облако» минусов равномернее и шире, чем разброс плюсов. Корреляция плюсов от количества просмотров значительно сильнее, чем для минусов. Другими словами: плюсуем не думая, а минусуем за дело!
(Прошу прощения за надписи на графиках: пока не разобрался, как выводить их правильно на русском языке)

Действительно есть несколько классов постов

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

Как вы можете заметить, есть выраженные пики в районе 0.1, 0.2 и 0.25. Предлагаю читателю самому найти и «назвать» эти классы.
Хочу заметить, что R богата алгоритмами для кластеризации данных, для аппроксимации, для проверки гипотез и т.п.

Полезные ресурсы

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

Считаю, что такие языки как R, haskell, lisp, javascript, python — должен знать каждый уважающий себя программист: если не для работы, то как минимум для расширения кругозора!

Зачем нужен язык R

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

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

Свободный язык от аналитиков для аналитиков

Первая версия языка R появилась в 1993 году, на два года позже, чем Python. В то время Python ещё не был так популярен и у него не было столько библиотек для анализа данных, сколько есть сейчас. Поэтому учёные из факультета статистики Оклендского университета создали язык для своих внутренних задач. А так как их звали Росс и Роберт, то и язык они назвали в честь первой буквы в имени — R.

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

Особенность языка R

Так как этот язык придумывали для задач учёных, авторы не старались делать его интуитивно понятным. Они исходили из того, что этим языком будут пользоваться люди, хорошо знакомые с математическим анализом, статистическими методами и вероятностными отклонениями. Именно поэтому R может показаться очень сложным языком, хотя внутри он очень прост и логичен.

Пример программы

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

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

Зачем нужен язык R

Для чего нужен R

Основное применение языка R — анализ данных и построение выводов на их основе:

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

Отдельное направление в R — машинное обучение и нейросети. Так как язык R изначально был заточен на обработку огромных массивов данных, то на нём легко организовать модель глубокого обучения или сделать новую нейросеть.

Дополнительные модули

Чтобы работать с данными было ещё проще, сообщество учёных и разработчиков сделали много разных модулей, каждый под свою задачу (их ещё называют пакетами). Есть среди них и базовые модули, без которых в R работать не получится: базовый модуль base или модуль grDevices, который отвечает за вывод графиков на экран.

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

Что дальше

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *