Статистика с большой буквы или R

Статистическая обработка данных — один из важных этапов получения новых знаний в науке или бизнесе. Соответственно, и статистический софт занимает  свою благодатную нишу в пределах которой идет нешуточная конкуренция. В этой гонке есть свои лидеры: мощные широко известные инструменты вроде Statistica и SPSS. На одном уровне с ними находится, пока еще редко используемая в России, среда статистических вычислений, а так же язык программирования для статистической обработки данных и работы с графикой — система с коротким названием R.

R используется для анализа данных как в научной среде, так и в бизнесе. Такие разные компании как Google, Pfizer, Merck, Bank of America, InterContinental Hotels Group и Shell используют этот статистический инструмент. Среда R легко привлекает к себе новых пользователей среди статистиков, инженеров и ученых тем, что они могут быстро освоить его даже не имея навыков программирования.

«Значение R трудно переоценить» - говорит Daryl Pregibon, исследователь, работающий в компании Google, который постоянно применяет R в своей работе, - «Он позволяет статистикам проводить очень сложные виды анализа без глубокого знания вычислительных систем» [1].

История системы R началась в Новой Зеландии. В начале девяностых годов прошлого века двое ученых из Университета Окленда Ross Ihaka и Robert Gentleman решили разработать простой язык, который можно было бы использовать в учебных целях. Поскольку оба были хорошо знакомы с языком S, то создали его новую реализацию, которая имеет некоторые отличия от своего прототипа, например, особенности работы с памятью и переменными.

Назвав свое творение по первой букве собственных имен, авторы в августе 1993 года выложили его на StatLib (http://lib.stat.cmu.edu). Вскоре от пользователей нового языка стали поступать отзывы, а один из наиболее активных участников сообщества Martin Machler из Федеральной политехнической школы Цюриха (ETH Zurich), предложил распространять R на условиях свободной лицензией GPL. В результате, начиная с июня 1995 года среда и язык статистических вычислении R является свободным программным обеспечением с открытым исходным кодом. Это означает, что любой человек может бесплатно скачать и использовать систему, а при желании, вносить изменения в исходный код.

Развитие R на данном этапе было относительно закрытым процессом. Ross Ihaka, Robert Gentleman и Martin Machler получали сообщения об ошибках по электронной почте и время от времени выпускали обновленные версии. Вскоре были созданы списки рассылки, благодаря которым развитие системы вышло на новый уровень и была создана, так называемая «R Core Development Team» (основная группа разработчиков), состоящая из ученых-статистиков, часть из которых — это профессора известных университетов. Первый официальный релиз этой группы был R 0.60 в декабре 1997 года Для усовершенствования системы дистрибуции, в том же году был создан CRAN (Comprehensive R Archive Network, http://cran.r-project.org) - репозиторий, содержащий саму систему, библиотеки, документацию и другие, связанные с R материалы.

Интересно, что начиная с 1998 года, к основной группе разработчиков присоединился John Chambers - бывший исследователь из Bell Labs, создатель языка программирования S, а сейчас профессор статистики в Стэнфордском университете. Почему его заинтересовал язык R? Потому что он привлек к себе внимание многих людей и показал свою эффективность за достаточно короткое время. Конечно, не вызывает сомнений тот факт, что без существования S невозможно было бы появление R. Однако столь быстрое его развитие и популярность обусловлены принципиальными различиям между этими продуктами: среда R доступна каждому, тогда как высокая цена S-PLUS стала барьером для широкого распространения детища Bell Labs. В интервью корреспонденту New York Times John Chambers сказал, что успех R превзошел все ожидания, которые он возлагал на S [2]. Следует добавить, что производители коммерческих программных продуктов не обошли вниманием R. Так StatSoft интегрировала свой продукт Statistica с этим языком (http://www.statsoft.com/solutions/r-language-platform), не отстает и SPSS, их программа так же поддерживает работу с R (http://insideout.spss.com/2009/01/13/spss-statistics-and-r), интерфейс для взаимодействия с языком R предлагает и SAS (http://support.sas.com/rnd/app/studio/Rinterface2.html). Подобные примеры внедрения в разные программы свидетельствует о том, что язык статистических вычислений R может по праву считаться универсальным инструментом статистиков.

Остается выяснить еще один вопрос: как так получилось, что полностью бесплатный продукт до сих пор жив и развивается? На самом деле ничего сверхъестественного в этом нет. Для поддержки проекта R, основной группой разработчиков была создана организация «The R Foundation for Statistical Computing» или просто «R Foundation». Цели R Foundation в общих чертах схожи с целями аналогичных фондов других открытых программ. Поддержку фонду оказывают крупные фармацевтические компании, университеты, производители софта, финансовые компании и частные лица. Список членов и доноров «R Foundation» можно найти на сайте проекта R (http://www.r-project.org/foundation/memberlist.html).

Но если система R так хороша, то почему она малоизвестна в нашей стране, а среди тех кто о ней слышал не каждый применяет ее на практике? Причины две: доступность нелицензионного проприетарного софта и явный недостаток русскоязычной информации о среде R. Есть еще один довод против — это интерфейс, а точнее отсутствие привычного нам графического интерфейса в R. Есть сторонние разработки, но они не идут ни в какое сравнение с другими программами. Более того, стандартная комплектация R предполагает работу в командной строке. Хотя, поработав в таком режиме, понимаешь, что это оптимальный вариант для математической программы.

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

Начинаем работу. После запуска вам будет показано вводное сообщение, и система будет ждать ваших указаний.

R version 2.10.1 (2009-12-14)

Copyright (C) 2009 The R Foundation for Statistical Computing

ISBN 3-900051-07-0

 

R -- это свободное ПО, и оно поставляется безо всяких гарантий.

Вы вольны распространять его при соблюдении некоторых условий.

Введите 'license()' для получения более подробной информации.

 

R -- это проект, в котором сотрудничает множество разработчиков.

Введите 'contributors()' для получения дополнительной информации и

'citation()' для ознакомления с правилами упоминания R и его пакетов

в публикациях.

 

Введите 'demo()' для запуска демонстрационных программ, 'help()' -- для

получения справки, 'help.start()' -- для доступа к справке через браузер.

Введите 'q()', чтобы выйти из R.

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

> 2+2

[1] 4

> 5*8-7

[1] 33

> 4*(5+6)

[1] 44

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

Посмотрим как выполняются простейшие вычисления описательных статистик.

a<-c(4,9,8,6,4,2,7,6,5,4,3,1,8,6)

> summary(a)

   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.

  1.000   4.000   5.500   5.214   6.750   9.000

В данном примере я задал значения для переменной a при помощи оператора присваивания <- и функции с(), объединяющей набор чисел в один вектор. Для расчета описательных статистик этого вектора я использовал функцию summary(), которая позволяет получить общее представление о некоторой совокупности. В выводе этой функции содержатся максимальное и минимальное значение выборки, медиана и среднее арифметическое, а так же 25-й и 75-й процентили или верхний и нижний квантили.

Таким образом, общий принцип работы заключается в следующем: вносим интересующие нас данные в переменные и обрабатываем при помощи самых разнообразных команд. Команды — это функции языка R. Переменные же создаются либо простым перечислением значений, как это было показано на примере с функцией c(), либо импортом из внешних файлов. Самый простой способ — это импорт из *.csv-файла. Кроме того, в репозитории CRAN есть пакеты для взаимодействия с базами данных, что упрощает работу с большим объемами информации.

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

> data<-read.table("file.csv", sep=";", dec=",", header=TRUE)

Функция read.table() импортирует таблицу из файла в переменную data. Первый аргумент — это имя файла, если файл лежит в рабочей директории, то полный путь указывать необязательно. Параметр sep задает разделитель полей, dec — указывает разделитель в десятичных дробях. Этот аргумент следует задавать каждый раз, когда десятичный разделитель в исходном файле не является точкой, как это принято в среде R. И последним указан аргумент header. Если задать ему значение TRUE, то первая строка таблицы будет расцениваться как заголовок и используется для задания имен столбцов в переменной data.

Для того, чтобы выяснить какие аргументы принимает та или иная функция, а так же для получения всей прочей информации в среде R имеется справочная система. Справка вызывается командой help(«название_функции») или ?«название_функции», что одно и то же.

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

> source("myscript.R", echo=TRUE)

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

> savehistory(file="myscript.R")

Для облегчения разработки скриптов существуют текстовые редакторы с подсветкой синтаксиса R, так в Linux можно использовать gedit, а для Windows есть программа Tinn-R. Ну, а самые отчаянные могут писать свои скрипты в Emacs с установленным пакетом ESS, благодаря которому R запускается прямо в окне редактора.

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

Среда статистических вычислений R словно детский конструктор состоит из набора деталей. При установке вы получаете только те, без которых работа в принципе невозможна, а так же небольшое количество так называемых «рекомендованных» пакетов. Но в репозитории CRAN находятся еще более полутора тысяч библиотек практически на все случаи жизни. Для добавления пакетов в систему можно использовать функцию install.packages(), которая сама выполнит всю работу по установке, просто дайте ей доступ в интернет. Если же вы работаете в Windows или MacOS, то вам будут доступны еще и соответствующие пункты в меню.

Заслуживают внимания и графические функции R. Поскольку статистика это не только цифры, но еще и графики, в этом языке реализована хорошая система для их построения. Описывать сами функции я здесь не стану, но для их изучения могу посоветовать книгу R Graphics (P. Murell) а так же сайт R Graph Gallery (http://addictedtor.free.fr/graphiques).

Подводя итог можно сказать, что система R — это один из мощных инструментов для статистического анализа. Гарантией его надежности является качественный состав основной группы разработчиков, а так же поддержка крупнейших компаний лидеров разных направлений бизнеса. Тот факт, что R распространяется бесплатно позволяет применят его каждому: от сотрудника большой организации, не жалеющей денег на исследования, до студента, изучающего статистику. На этом я завершаю свою обзорную статью о среде и языке статистических вычислений R. А для подробного ознакомления могу порекомендовать свой список полезных интернет ресурсов по теме (http://delicious.com/Voliadis/r) и несколько статей в моем блоге (http://voliadis.ru).

 

Бибилиография

1. Ashlee Vance. Data Analysts Captivated by R’s Power. The New York Times, 6.01.2009. URL: http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html

2. Ashlee Vance. R You Ready for R? The New York Times. Bits. 8.01.2009. URL: http://bits.blogs.nytimes.com/2009/01/08/r-you-ready-for-r/

3. Ross Ihaka. R : Past and Future History. URL: http://cran.r-project.org/doc/html/interface98-paper/paper.html

4. Kurt Hornik, Friedrich Leisch. Vienna and R: Love, Marriage and the Future. URL: http://www.statistik.tuwien.ac.at/oezstat/festschr02/papers/hornik_leisch.pdf

11.01.2010 / 10430 / Загрузок: 0 / Voliadis /
Всего комментариев: 0
avatar
SixSigmaOnline.ru © 2009-2018            Хостинг от uWeb