Необходимо ли вам изучать язык R?Источник: ibm
Четыре серьезных довода в пользу того, чтобы опробовать эту платформу с открытым исходным кодом для анализа данных R - это универсальный язык программирования, разработанный для применения в таких областях, как разведочный анализ данных, классические статистические тесты и высокоуровневая графика. Благодаря своей обширной и непрерывно расширяющейся библиотеке пакетов язык R занимает ведущие позиции в статистике, в анализе данных и в добыче данных. Язык R доказал, что является действительно полезным инструментом в развивающейся области больших данных, и был интегрирован в ряд коммерческих пакетов, таких как IBM SPSS® и InfoSphere®, а также Mathematica. В данной статье ценность языка R рассматривается с точки зрения специалиста по статистике. Вы наверняка слышали о R. Возможно, вы читали соответствующую статью Сэма Сиверта (Sam Siewert) под названием Большие данные в облаке. Вы знаете, что R - это язык программирования и что он имеет определенное отношение к статистике, но подходит ли он вам? Доводы в пользу RR - язык, ориентированный на статистику. Его можно рассматривать в качестве конкурента для таких аналитических систем, как SAS Analytics, не говоря уже о таких более простых пакетах, как StatSoft STATISTICA или Minitab. Многие профессиональные статистики и методисты в правительственных организациях, в коммерческих компаниях и в фармацевтической отрасли решают свои задачи с помощью таких продуктов, как IBM SPSS или SAS, без написания какого-либо кода на языке R. Таким образом, в значительной степени решение об изучении и использовании R - это вопрос корпоративной культуры и профессиональных предпочтений применительно к рабочим инструментам. В своей статистической консультационной практике я использую несколько инструментов, однако большая часть того, что я делаю, сделана на R. Следующие примеры объясняют, почему дело обстоит именно таким образом.
Что такое R и для чего он предназначен140-символьное объяснениеR - это реализация языка S с открытым исходным кодом, представляющая собой среду программирования для анализа данных и для работы с графикой. В качестве языка программирования R подобен многим другим языкам. Любой человек, который когда-либо писал программный код, найдет в R множество знакомых моментов. Отличительные особенности R лежат в статистической философии, которую он исповедует. Статистическая революция: S и разведочный анализ данныхКомпьютеры всегда были эффективным инструментом для вычислений - но лишь после того, как кто-то написал и отладил программу для выполнения нужного алгоритма. Однако в 1960-1970-х годах компьютеры были еще очень слабы в области отображения информации, особенно графической. Эти технические ограничения, наряду с тенденциями в статистической теории, привели к тому, что практика статистики, как и подготовка статистиков, ориентировались на построение моделей и на проверку гипотез. В этом мире исследователи предлагали гипотезы, тщательно продумывали эксперименты, настраивали модели и проводили испытания. Подобный подход реализован в программных средствах, подобных SPSS, которые базируются на электронных таблицах и управляются с помощью меню. Фактически первые версии программных продуктов SPSS и SAS Analytics состояли из подпрограмм, которые можно было вызвать из основной программы (на Fortran или на другом языке) с целью подгонки и проверки модели из имеющегося набора моделей. В эту формализованную и перегруженную теорией среду Джон Тьюки (John Tukey) вбросил, как булыжник в стеклянную витрину, концепцию т. н. разведочного анализа данных (Exploratory Data Analysis, EDA). Сегодня трудно представить время, когда к анализу набора данных можно было приступать без использования ящичной диаграммы (box plot) для проверки на асимметрию и на выбросы или без проверки невязок линейной модели на нормальность с помощью квантильной диаграммы. Автором всех этих идей был Дж. Тьюки, и сегодня ни один вводный курс по статистике не обходится без них. Однако дело не всегда обстояло подобным образом. Цитата из книги: Graphical Methods for Data Analysis (Графические методы анализа данных)"В любом серьезном приложении на данные следует посмотреть несколькими способами, а затем построить несколько графиков и выполнить несколько исследований. Это позволит по результатам каждого очередного шага выбирать следующий шаг. Чтобы анализ данных был эффективным, он должен быть итеративным". - Джон Чамберс (John Chambers), см. разделРесурсы). EDA - это в большей степени подход, чем теория. Для успешного применения этого подхода необходимо соблюдать следующие эмпирические правила.
Подход Дж. Тьюки породил волну новых графических методов и робастных оценок. Кроме того, этот подход инициировал разработку новой программной среды, ориентированной на разведочные методы. Джон Чамберс вместе со своими коллегами из компании Bell Laboratories создал язык S в качестве платформы для статистического анализа, особенно той его разновидности, которую исповедовал Дж. Тьюки. Первая версия языка S, предназначенная для внутреннего использования в компании Bell, была разработана еще в 1976 г., однако лишь в 1988 году этот язык приобрел свою нынешнюю форму. К этому времени язык был доступен и пользователям за пределами Bell. В каждом своем аспекте язык S соответствует "новой модели" анализа данных.
Язык с характером: S, S-Plus и проверка гипотезВ своем первоначальном виде язык S относился к EDA-методам Дж. Тьюки весьма серьезно - до такой степени, что на языке S было неудобно делать что-либо иное, помимо EDA. Это был язык с характером. Например, S имел ряд полезных внутренних функций, однако у него отсутствовали некоторые вполне очевидные возможности, наличия которых можно было бы ожидать у статистического программного обеспечения. Так, отсутствовала функция для выполнения t-теста для двух выборок и не поддерживалось настоящее тестирование для гипотез любого вида. Однако, несмотря на аргументацию Дж. Тьюки, тестирование гипотез зачастую бывает весьма полезным. В 1988 г. компания из Сиэтла под названием Statistical Science приобрела лицензию на S и портировала улучшенную версию этого языка под названием S-Plus на платформу DOS, а затем и в среду Windows®. Обладая реальным представлением о том, что требуется ее клиентам, компания Statistical Science добавила в язык S-Plus функциональность классической статистики. Были добавлены функции для дисперсионного анализа (ANOVA), t -тест и другие модели. В соответствии с объектной ориентированностью языка S результат любой подобранной модели сам является объектом языка S. Вызовы соответствующей функции предоставляют приближения, остатки и p -значение при тестировании гипотезы. Объект модели может даже содержать промежуточные вычислительные шаги анализа, такие как QR-разложение матрицы плана (где Q - ортогональная матрица, а R - верхнетреугольная матрица). Для каждой задачи имеется пакет на языке R! Сообщество сторонников открытого кодаПримерно в то же самое время, когда был выпущен язык S-Plus, Росс Айхэка (Ross Ihaka) и Роберт Джентлмен (Robert Gentleman) из Оклендского университета в Новой Зеландии решили попробовать свои силы в написании интерпретатора. В качестве своей модели они выбрали язык S. Проект конкретизировался и получил поддержку. Они дали своему проекту название R. R - это реализация языка S с дополнительными моделями, разработанными в языке S-Plus. В некоторых случаях моделями в обоих языках занимались одни и те же люди. R - это проект с открытым исходным кодом, который доступен в соответствии с лицензией GNU. На этом фундаменте R продолжает развиваться, в значительной степени посредством добавления пакетов. R- пакет представляет собой коллекцию наборов данных, функций языка R, документации и динамически загружаемых элементов на языке C или Fortran. R-пакет может быть установлен как группа, которая будет доступна в рамках сеанса R. R-пакеты добавляют новую функциональность к языку R; посредством этих пакетов исследователи могут с легкостью обмениваться вычислительными методами со своими коллегами. Некоторые пакеты имеют ограниченную область применения, другие представляют целые области статистики, а некоторые отражают новейшие разработки. И действительно, многие новые разработки в области статистики сначала появляются как R-пакеты, и только потом реализуются в коммерческих программных продуктах. В тот момент, когда я писала этот текст, на веб-сайте CRAN, с которого осуществляется загрузка R, количество R-пакетов составляло 4701. Из них шесть пакетов было добавлено только в один этот день. Платформа R имеет пакет для решения любой задачи - по крайней мере именно такое впечатление складывается. Что происходит при использовании RПрмечание: Эта статья не является обучающим руководством по R. Следующий пример - это не более чем попытка показать, как выглядит сеанс R. Имеются двоичные дистрибутивы R для Windows, для Mac OS X и для нескольких вариантов Linux®. Кроме того, для тех, кому нравится компилировать самостоятельно, доступны и исходные коды. В среде Windows® установщик добавляет пункт R в Меню Start (Пуск). Чтобы запустить R в среде Linux, откройте окно терминала и при появлении подсказки введите с клавиатуры букву R. Вы должны увидеть нечто похожее на рис.1 . Рисунок 1. Рабочее пространство R
Введите команду в строке приглашения, и R отреагирует соответствующим образом. В реальной ситуации на этом этапе вы, вероятно, ввели бы данные в объект R из внешнего файла данных. R способен читать данные в различных форматах; однако в этом примере я использую набор данных Команды, показанные в листинге 1, загружают пакет MASS, получают данные из Листинг 1. Старт сеанса R2+2 # R может работать как калькулятор. R дает ответ "4" (правильный). library("MASS") # Загружает в память функции и наборы данных из # пакета MASS, который сопровождает книгу Modern Applied Statistics in S data(michelson) # Копирует набор данных michelson в рабочее пространство. ls() # Перечисляет содержимое рабочего пространства. В нем присутствуют данные #из набора michelson head(michelson) # Выводит на экран несколько первых строк этого набора данных. # Столбец Speed (скорость) содержит полученные Майкельсоном и Морли оценки # скорости света (менее 299000 км/с). # Майкельсон и Морли выполнили пять экспериментов по 20 прогонов в каждом. # Набор данных содержит индикаторные переменные для эксперимента и для прогона. help(michelson) # Вызывает экран справки, который описывает этот набор данных.
Рисунок 2. Старт сеанса и ответы R
Теперь посмотрим на данные (листинг 2). Результаты показаны на рис.3. Листинг 2. Ящичная диаграмма (box plot) на языке R# Базовая ящичная диаграмма (boxplot) with(michelson, boxplot(Speed ~ Expt)) # Я могу добавить цвет и метки. Я также могу сохранить результаты в виде объекта. michelson.bp = with(michelson, boxplot(Speed ~ Expt, xlab="Experiment", las=1, ylab="Speed of Light - 299,000 m/s", main="Michelson-Morley Experiments", col="slateblue1")) # Текущая оценка скорости света в этом масштабе составляет 734,5 # Добавление горизонтальной линии с целью выделения этого значения. abline(h=734.5, lwd=2,col="purple") #Добавление современного значения скорости света
Складывается впечатление, что Майкельсон и Морли систематически завышали оценку скорости света. Кроме того, в результатах экспериментов наблюдается некоторая неоднородность. Рисунок 3. Представление в виде ящичной диаграммы
Если меня удовлетворяют мои исследования, я могу сохранить все свои команды в виде одной функции языка R (листинг 3). Листинг 3. Простая функция на языке RMyExample = function(){ library(MASS) data(michelson) michelson.bw = with(michelson, boxplot(Speed ~ Expt, xlab="Experiment", las=1, ylab="Speed of Light - 299,000 m/s", main="Michelsen-Morley Experiments", col="slateblue1")) abline(h=734.5, lwd=2,col="purple") }
Этот простой пример иллюстрирует несколько важных особенностей языка R. Нуждается ли R в мощных аппаратных средствах?Я выполняла этот пример на нетбуке Acer под управлением Crunchbang Linux. R не требует мощного компьютера для проведения анализа малого и среднего масштаба. На протяжении 20 лет про R говорили, что это медленный язык, поскольку он является интерпретируемым, и что объем данных, которые он способен проанализировать, ограничен памятью компьютера. Все это соответствует действительности, однако для современных компьютеров это, как правило, некритично, при условии, что приложение не является действительно огромным (т.е. не относится к категории Больших данных).
R остается актуальным и в 21 векеРазведочный подход Дж. Тьюки к анализу данных стал нормой для учебного процесса. Он преподается в учебных заведениях и применяется специалистами по статистике. Язык R поддерживает этот подход, и это одно из объяснений того, почему он до сих пор сохраняет популярность. Объектная ориентация также помогает языку R оставаться актуальным, поскольку для анализа новых источников данных требуются новые структуры данных. В настоящее время платформа InfoSphere® Streams поддерживает анализ на языке R для данных, отличных от тех, на которые ориентировался Джон Чамберс. Инструментарий R-project Toolkit на платформе InfoSphere StreamsInfoSphere Streams - это передовая вычислительная платформа, которая предоставляет возможность быстро принимать, анализировать и сопоставлять информацию в приложениях, разработанных пользователями, по мере поступления информации из тысяч источников в реальном времени. Это решение способно обрабатывать данные с очень высокой пропускной способностью: до нескольких миллионов событий или сообщений в секунду. В состав этой платформы входит инструментарий R-project Toolkit. Узнайте больше и загрузите ознакомительную версию. Язык R и платформа InfoSphere StreamsInfoSphere Streams - это вычислительная платформа и интегрированная среда разработки для анализа данных, которые с высокой скоростью поступают из тысяч источников. Содержимое этих потоков данных обычно является неструктурированным или структурированным частично. Цель анализа состоит в выявлении изменяющихся закономерностей в данных и в принятии решений непосредственно на основе быстро меняющихся событий. Язык программирования для платформы InfoSphere Streams под названием SPL организует данные посредством парадигмы, которая отражает динамичную природу данных, а также необходимость быстрого анализа и реагирования. Мы далеко ушли от электронных таблиц и обычных плоских файлов классического статистического анализа, однако язык R способен адаптироваться. В версии 3.1 приложения на SPL способны передавать данные в R и таким образом задействовать обширную библиотеку R-пакетов. InfoSphere Streams поддерживает аналитику на R посредством создания соответствующих R-объектов для получения информации, содержащейся в кортежах SPL (базовая структура данных в языке SPL). Это позволяет передавать данные InfoSphere Streams в среду R для последующего анализа, а полученные результаты возвращать обратно в SPL. Для каких случаев R не годитсяСправедливости ради следует отметить, что некоторые вещи R делает не очень хорошо или вообще не делает. Кроме того, R не в одинаковой степени подходит каждому пользователю.
ЗаключениеНеобходимо ли вам изучать язык R? Вполне возможно, что нет; необходимо - это слишком сильное утверждение. Но является ли R ценным инструментом для анализа данных? Несомненно. Этот язык специально разработан таким образом, чтобы отражать способы мышления и работы статистиков. R закрепляет хорошие привычки и улучшает анализ. По-моему, это хороший инструмент для такой работы. РесурсыНаучиться
Получить продукты и технологии
Обсудить
|