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

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

Что такое R?

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

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

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

Авторы языка RR - это сообщество/движение. 
Так как 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. программы с графическим интерфейсом, основанные на принципе "кликни здесь, тут и получи готовый результат";
  2. статистические языки программирования, в работе с которыми необходимы базовые навыки программирования;
  3. "смешанный", в которых есть и графический интерфейс (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:

  • бесплатная и кроссплатформенная;
  • богатый арсенал стат. методов;
  • качественная векторная графика;
  • более 7000 проверенных пакетов;
  • гибкая в использовании:
    - позволяет создавать/редактировать скрипты и пакеты,
    - взаимодействует с другими языками, такими: C, Java и Python,
    - может работать с форматами данных для SAS, SPSS и STATA;
  • активное сообщество пользователей и разработчиков;
  • регулярные обновления, хорошая документация и тех. поддержка.

Недостатки:

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

Список полезных источников

  1. Официальный сайт: http://www.r-project.org/
  2. Сайт для начинающих: http://www.statmethods.net/
  3. Один из лучших справочников: The R Book, 2nd Edition by Michael J. Crawley, 2012
  4. Список доступной литературы на русском + хороший блог по теме: r-analytics.blogspot.fi

 

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

Комментарии: 8
  1. Роман

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

    1. Samoedd (Автор записи)
      https://samoedd.com

      Здравствуйте, Роман!
      Да, по-тихонечку публикую здесь подобную информацию. Можете посмотреть статьи с тегом R, или воспользоваться поиском.

  2. Николай Четанов

    Есть кое-чего как бы. http://www.ievbras.ru/ecostat/Kiril/default.htm Две последние книги должны заинтересовать.

    1. Samoedd (Автор записи)
      https://samoedd.com/

      Спасибо большое за информацию, Николай!

      С книгами авторов сайта знаком, очень хорошие. А вот про сам сайт не знал, однозначно в закладки! Всем рекомендую!

  3. Иван

    Интересное введение в мир статистики! А по поводу русскоязычных ресурсов, стоит наверно несколько развить тему, ссылки на сайты, форумы дать… хотя, насколько я понял, на русском особо ничего нет, а жаль, но ты наверно исправишь эту ситуацию:)
    Да и не только по языку R, а и по статистике в целом сделать такой обзор ресурсов можно, но это наверно ты будешь делать в последующих статьях…
    Еще можно обзор книг сделать.

    1. Samoedd (Автор записи)
      https://samoedd.com/

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

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

  4. Alexey Demin

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

    1. Samoedd (Автор записи)
      https://samoedd.com/

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

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

Оставить комментарий

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