Язык программирования для статистиков

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

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

Что такое R?

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

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

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

Читайте также:  Linux ubuntu язык программирования

Авторы языка 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:

  • бесплатная и кроссплатформенная;
  • богатый арсенал стат. методов;
  • качественная векторная графика;
  • более 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 или обсудить содержание самой статьи, то оставьте свой комментарий под этим постом. Если Вы думаете, что она может быть полезной и интересной для Ваших знакомых, то поделитесь ей с помощью социальных кнопок, расположенных ниже.

Источник

Оцените статью