R lang: The R Project for Statistical Computing
Язык R в помощь хабра-статисту / Хабр
На написание данной статьи меня сподвиг следующий топик: В поисках идеального поста, или загадки хабра. Дело в том, что после ознакомления с языком R я крайне искоса смотрю на любые попытки, что-то посчитать в экселе. Но надо признать, что и с R я познакомился лишь неделю назад.
Цель: Собрать средствами языка R данные с любимого HabraHabr’а и провести, собственно то, для чего и был создан язык R, а именно: статистический анализ.
Итак, прочтя этот топик вы узнаете:
- Как можно использовать R для извлечения данных из Web ресурсов
- Как преобразовывать данные для последующего анализа
- Какие ресурсы крайне рекомендуются к прочтению всем желающим познакомиться с R поближе
Ожидается, что читатель достаточно самостоятелен, чтобы самому ознакомиться с основными конструкциями языка. Для этого как никак лучше подойдут ссылки в конце статьи.
Подготовка
Нам понадобятся следующие ресурсы:
После установки вы должны увидеть что-то типа этого:
В правой нижней панели на вкладке Packages вы можете найти список установленных пакетов. Нам понадобится дополнительно установить следующие:
- Rcurl — для работы с сетью. Все кто работал с CURL сразу поймет все открывающиеся возможности.
- XML — пакет для работы с DOM деревом XML документа. Нам понадобится функционал нахождения элементов по xpath
Жмите «Install Packages», выбирайте нужные, а затем выделите их галочкой, чтобы они загрузились в текущее окружение.
Получаем данные
Чтобы получить DOM объект документа полученного из интернета достаточно выполнить следующие строчки:
url<-"http://habrahabr.ru/feed/posts/habred/page10/"
cookie<-"Мои сверхсекретные печеньки"
html<-getURL(url, cookie=cookie)
doc<-htmlParse(html)
Обратите внимание на передаваемые cookie. Если вы захотите повторить эксперемент, то вам надо будет подставить свои cookie, которые получает ваш браузер после авторизации на сайте. Далее нам надо получить интересующие нас данные, а именно:
- Когда запись была опубликована
- Сколько было просмотров
- Сколько человек занесло запись в избранные
- Сколько было нажатий на +1 и -1 (суммарно)
- Сколько было +1 нажатий
- Сколько -1
- Текущий рейтинг
- Количество комментариев
Не в даваясь особо в подробности приведу сразу код:
published<-xpathSApply(doc, "//div[@class='published']", xmlValue)
pageviews<-xpathSApply(doc, "//div[@class='pageviews']", xmlValue)
favs<-xpathSApply(doc, "//div[@class='favs_count']", xmlValue)
scoredetailes<-xpathSApply(doc, "//span[@class='score']", xmlGetAttr, "title")
scores<-xpathSApply(doc, "//span[@class='score']", xmlValue)
comments<-xpathSApply(doc, "//span[@class='all']", xmlValue)
hrefs<-xpathSApply(doc, "//a[@class='post_title']", xmlGetAttr, "href")
Здесь мы использовали поиск элементов и атрибутов с помощью xpath.
Далее крайне рекомендуется сформировать из полученных данных data.frame — это аналог таблиц базы данных. Можно будет делать запросы разного уровня сложности. Иногда диву даешься, как элегантно можно сделать в R ту или иную вещь.
posts<-data.frame(hrefs, published, scoredetailes, scores, pageviews, favs, comments)
После формирования data.frame необходимо будет подправить полученные данные: преобразовать строчки в числа, получить реальную дату в нормальном формате и т.д. Делаем это таким образом:
posts$comments<-as.numeric(as.character(posts$comments))
posts$scores<-as.numeric(as.character(posts$scores))
posts$favs<-as.numeric(as.character(posts$favs))
posts$pageviews<-as.numeric(as.character(posts$pageviews))
posts$published<-sub(" декабря в ","/12/2012 ",as.character(posts$published))
posts$published<-sub(" ноября в ","/11/2012 ",posts$published)
posts$published<-sub(" октября в ","/10/2012 ",posts$published)
posts$published<-sub(" сентября в ","/09/2012 ",posts$published)
posts$published<-sub("^ ","",posts$published)
posts$publishedDate<-as.Date(posts$published, format="%d/%m/%Y %H:%M")
Так же полезно добавить дополнительные поля, которые вычисляются из уже полученных:
scoressplitted<-sapply(strsplit(as.character(posts$scoredetailes), "\\D+", perl=TRUE),unlist)
if(class(scoressplitted)=="matrix" && dim(scoressplitted)[1]==4)
{
scoressplitted<-t(scoressplitted[2:4,])
posts$actions<-as.numeric(as.character(scoressplitted[,1]))
posts$plusactions<-as.numeric(as.character(scoressplitted[,2]))
posts$minusactions<-as.numeric(as.character(scoressplitted[,3]))
}
posts$weekDay<-format(posts$publishedDate, "%A")
Здесь мы всем известные сообщения вида «Всего 35: ↑29 и ↓6» преобразовали в массив данных по тому, сколько вообще было произведено действий, сколько было плюсов и сколько было минусов.
На этом, можно сказать, что все данные получены и преобразованы к готовому для анализа формату. Код выше я оформил в виде функции готовой к использованию. В конце статьи вы сможете найти ссылку на исходник.
Но внимательный читатель уже заметил, что таким образом, мы получили данные лишь для одной страницы, чтобы получить для целого ряда. Чтобы получить данные для целого списка страниц была написана следующая функция:
getPostsForPages<-function(pages, cookie, sleep=0)
{
urls<-paste("http://habrahabr.ru/feed/posts/habred/page", pages, "/", sep="")
ret<-data.frame()
for(url in urls)
{
ret<-rbind(ret, getPosts(url, cookie))
Sys.sleep(sleep)
}
return(ret)
}
Здесь мы используем системную функцию Sys.sleep, чтобы не устроить случайно хабраэффект самом хабру:)
Данную функцию предлагается использовать следующим образом:
posts<-getPostsForPages(10:100, cookie,5)
Таким образом мы скачиваем все страницы с 10 по 100 с паузой в 5 секунд. Страницы до 10 нам не интересны, так как оценки там еще не видны. После нескольких минут ожидания все наши данные находятся в переменной posts. Рекомендую их тут же сохранить, чтобы каждый раз не беспокоить хабр! Делается это таким образом:
write.csv(posts, file="posts.csv")
А считываем следующим образом:
posts<-read.csv("posts.csv")
Ура! Мы научились получать статистические данные с хабра и сохранять их локально для следующего анализа!
Анализ данных
Этот раздел я оставлю недосказанным. Предлагаю читателю самому поиграться с данными и получить свои долеко идущие выводы. К примеру, попробуйте проанализировать зависимость настроения плюсующих и минусующих в зависимости от дня недели. Приведу лишь 2 интересных вывода, которые я сделал.
Пользователи хабра значительно охотнее плюсуют, чем минусуют.
Это видно по следующему графику. Заметьте, на сколько «облако» минусов равномернее и шире, чем разброс плюсов. Корреляция плюсов от количества просмотров значительно сильнее, чем для минусов. Другими словами: плюсуем не думая, а минусуем за дело!
(Прошу прощения за надписи на графиках: пока не разобрался, как выводить их правильно на русском языке)
Действительно есть несколько классов постов
Это утверждение в упомянутом посте использовалось как данность, но я хотел убедиться в этом в действительности. Для этого достаточно посчитать среднюю долю плюсов к общему количеству действий, тоже самое для минусов и разделить второе на первое. Если бы все было однородно, то множество локальных пиков на гистограмме мы не должны наблюдать, однако они там есть.
Как вы можете заметить, есть выраженные пики в районе 0.1, 0.2 и 0.25. Предлагаю читателю самому найти и «назвать» эти классы.
Хочу заметить, что R богата алгоритмами для кластеризации данных, для аппроксимации, для проверки гипотез и т.п.
Полезные ресурсы
Если вы действительно хотите погрузиться в мир R, то рекомендую следующие ссылки. Пожалуйста, поделитесь в комментариях вашими интересными блогами и сайтами на тему R. Есть кто-нибудь пишущий об R на русском?
Считаю, что такие языки как R, haskell, lisp, javascript, python — должен знать каждый уважающий себя программист: если не для работы, то как минимум для расширения кругозора!
P.S. Обещанный исходник
Руководство по изучению языка R и его использование в Data Science
Подборка ресурсов для изучения языка программирования R, которая поможет начать изучение «с нуля» и пройти этот путь быстро и эффективно.
Для людей, столкнувшихся лицом к лицу с языком программирования R, существует одна общая проблема — это отсутствие структурированного плана изучения. Они не знают, с чего начать, куда двигаться, какой путь выбрать. А огромное количество информации по этой теме в Сети зачастую лишь сбивает с толку.
После перебирания бесконечных ресурсов и архивов получилось данное всеобъемлющее пособие по языку программирования R, которое поможет начать изучение «с нуля» и пройти этот путь быстро и эффективно.
Прежде, чем отправиться в путь, ответьте для себя на вопрос: почему R? Как он сможет помочь? Посмотрите вот этот 90-секундный ролик от Revolution Analytics, чтобы понять, чем может быть полезен язык программирования R. К слову, Revolution Analytics не так давно была приобретена Microsoft.
Теперь, когда вы решились, самое время настроить машину. Первое, что нужно сделать — это загрузить базовую версию языка программирования R и инструкцию по ее установке с CRAN — Comprehensive R Archive Network (Всеобъемлющая архивная сеть R).
Затем можно поставить различные дополнительные библиотеки. Существует over9000 разных дополнений для языка программирования R – и это может сбить с толку. Посему, мы будем руководствоваться лишь установкой базовых пакетов, для начала. По этой ссылке можно посмотреть библиотеки из CRAN Views. Собственно, там можно выбрать те подтипы библиотек, которые вам интересны.
Как подключать библиотеки, смотрите здесь;
Некоторые важные библиотеки, о которых стоит знать, смотрите тут;
Необходимо установить все три нижеследующих GUI вместе с зависимыми пакетами:
- Rattle – для анализа данных (Ссылка) или
install.packages(“rattle”, dep=c(“Suggests”))
- R Commander — для базовой статистики (Ссылка) или
install.packages(“Rcmdr”)
- Deducer (вместе с JGR) для визуализации данных (Ссылка)
Также нужно установить RStudio. Работать на языке программирования R в ней значительно быстрее и проще, так как RStudio позволяет писать множественные строки кода, подключать и поддерживать библиотеки и вообще более продуктивно обустроить свою рабочую среду.
Задание:
- Установить R и RStudio;
- Установить библиотеки Rcmdr, rattle и Deducer. Установить все предложенные или сопутствующие пакеты, включая GUI;
- Загрузить эти библиотеки, используя соответствующие команды, поочередно открыть GUI.
Чтобы начать, необходимо постичь основы языка программирования R, его библиотек и структур данных. Начать изучение лучше всего с Datacamp. Особое внимание обратите на бесплатный курс введения в язык программирования R (вот тут можно почитать). К концу этого курса вы сможете писать небольшие скрипты на R, а также понять принципы анализа данных. В качестве альтернативы можно пройти «Школу программирования на R» вот здесь.
Если вы хотите изучать R офлайн в свободное время, можно использовать интерактивный пакет со Swirlstats.
Особое внимание следует уделить изучению read.table, структур данных, таблиц, сводок, описаний, загрузки и установки библиотек, визуализации данных с использованием команд.
Задание:
- Подписаться на ежедневную рассылку, относительно проекта R здесь;
- Создать аккаунт на Github;
- Учиться разбираться с установкой проблемных библиотек, используя Google для справки;
- Установить swirl-пакеты (см. выше) и изучать программирование на R;
- Черпать знания с Datacamp.
Дополнительные источники:
Если интерактивное программирование — не ваш стиль, можно смотреть двухминутные туториалы по языку программирования R тут. Данный видеокурс частично затрагивает поднятые здесь вопросы. Также можно ознакомиться с этим постом, чтобы получить более ясное представление о функциях языка R.
Вам придется много работать для чистки данных, особенно если доведется обрабатывать текстовую информацию. Самое правильное, что можно сделать для начала – это пройти соответствующие упражнения. О соединении с базами данных можно узнать с помощью библиотеки RODBC, а о написании sql-запросов к структурам данных через sqldf.
Задание:
- Почитайте о разделенном, прикладном и комбинированном подходах к анализу данных в Journal of Statisical Software;
- Попытайтесь изучить подход «аккуратных данных» для проведения анализа;
- Почитайте о работе языка программирования R с реляционными базами данных в статье на decisionstats.com;
- Сделайте несколько упражнений на понимание качества данных;
- Не сидите только на анализе цифр. Разберите с помощью R спортивную аналитику на примере крикета.
Если вам нужно больше практики, на Datacamp можно оформить подписку на все обучающие программы за $25/месяц. Но начать стоит с введения в plyr вот здесь.
Вот здесь и начинается самая веселая часть! Ниже – рекомендации к прочтению и выполнению. Практику начнем с некоторых общих операций.
Дополнительные источники:
- Если вам нужна книга по бизнес-аналитике на языке программирования R, то вот — «R for Business Analytics» от Аджая Ори;
- Если нужна книга для изучения R по-быстрому, то ее можно найти тут.
- Почитайте об Эдварде Тафте и его мыслях о том, как стоит (и не стоит) делать визуализацию данных здесь.
- Также, почитайте о подводных камнях при разработке дашбордов в материале Стивена Фью.
- Освойте грамотное построение графиков и практические способы их построения на R. По ссылке доступен курс по ggplot2 от доктора Хардли Уикхэма, создателя ggplot2 — одной из самых лучших библиотек для R на сегодняшний день.
- Если вы заинтересованы в пространственной визуализации данных, не проходите мимо библиотеки ggmap.
- Если интересуетесь анимацией данных, взгляните на эти примеры. Взять библиотеку для анимации можно здесь.
- С помощью Slidify можно визуализировать данные в виде слайдов на HTML5.
Сейчас мы подошли к наиболее ценным для аналитика навыкам – глубокому анализу и машинному обучению. Исчерпывающий набор информации о глубоком анализе с помощью R можно найти на RDM. А также свободно распространяемую и простую для понимания книгу по этой теме за авторством Грэхэма Уильямса можно найти здесь.
Обзор таких алгоритмов, как регрессия, дерева решений, ансамбли моделирования и кластеризация, а также опции для машинного обучения, доступные в R, можно найти по этой ссылке.
Дополнительные источники:
- «Data Mining with Rattle and R» — хорошая книга по глубокому анализу данных.
- Почитать о прогнозировании временных рядов на языке программирования R можно тут.
- Кое-что по машинному обучению в R есть здесь, а также здесь можно записаться на бесплатные курсы.
Поздравления! Вы добились своего. Теперь у вас есть все, что нужно, осталось оттачивать технические навыки.
- Итак, теперь необходимо практиковаться, и для этого как нельзя лучше подойдут соревнования с коллегами-аналитиками на Kaggle. Начать этот практический курс можно отсюда.
- Оставаться на связи с коллегами по R-цеху можно подписавшись на R-bloggers.
- Для большего социального взаимодействия можно использовать в Твиттере хештег # rstats.
- Если на чем-то застряли, этот сайт поможет быстро разобраться и даст нужное количество информации.
Теперь, когда вы знаете об анализе данных с помощью R все, что нужно, настало время получить некоторые дополнительные задания. Есть вероятность, что кое-что из этого вы уже видели, но, все же, ознакомьтесь с этими материалами тоже.
- Занятие на тему совместного использования R и MongoDB есть тут.
- Еще один хороший материал по анализу Больших Данных с помощью R в NoSQL-эру.
- К слову, используя Shiny из RStudio, можно сделать интерактивное веб-приложение.
- Гайд для интересующихся в изучении синтаксиса R и Python здесь.
P.S. В случае, если вам приходится много работать с большими данными, взгляните на библиотеку RevoScaleR от Revolution Analytics. Это коммерческая библиотека, но она бесплатна для академического пользования. Пример проекта приведен здесь
Первоисточник
Перевел Сергей Ворничес
Необходимо ли вам изучать язык R?
Четыре серьезных довода в пользу того, чтобы опробовать эту платформу с открытым исходным кодом для анализа данных
Кэтрин Делзелл
Опубликовано 24.10.2014
Вы наверняка слышали о R. Возможно, вы читали соответствующую статью Сэма Сиверта (Sam Siewert) под названием Большие данные в облаке. Вы знаете, что R — это язык программирования и что он имеет определенное отношение к статистике, но подходит ли он вам?
Доводы в пользу R
R — язык, ориентированный на статистику. Его можно рассматривать в качестве конкурента для таких аналитических систем, как SAS Analytics, не говоря уже о таких более простых пакетах, как StatSoft STATISTICA или Minitab. Многие профессиональные статистики и методисты в правительственных организациях, в коммерческих компаниях и в фармацевтической отрасли решают свои задачи с помощью таких продуктов, как IBM SPSS или SAS, без написания какого-либо кода на языке R. Таким образом, в значительной степени решение об изучении и использовании R — это вопрос корпоративной культуры и профессиональных предпочтений применительно к рабочим инструментам. В своей статистической консультационной практике я использую несколько инструментов, однако большая часть того, что я делаю, сделана на R. Следующие примеры объясняют, почему дело обстоит именно таким образом.
- R — это мощный скриптовый язык. Недавно меня попросили проанализировать результаты одного масштабного исследования. Исследователи просмотрели 1600 научных работ и закодировали их содержимое по нескольким критериям — количество критериев было действительно большим, особенно с учетом множественных вариаций и ветвлений. После переноса в электронную таблицу Microsoft® Excel® эти данные содержали более 8000 столбцов, большинство из которых были пустыми. Исследователи хотели подсчитывать общие количества по различным категориям и под разными заголовками. R является мощным скриптовым языком и поддерживает Perl-подобные регулярные выражения для обработки текста. Для обработки неупорядоченных данных требуются возможности языка программирования; продукты SAS и SPSS имеют скриптовые языки для задач, для решения которых недостаточно ниспадающего меню, однако R был создан именно как язык программирования и поэтому является более подходящим инструментом для этой цели.
- R — лидер направления. Многие новые разработки в области статистики сначала появляются как пакеты для платформы R («R-пакеты») и только потом приходят на коммерческие платформы. Недавно я получила данные медицинского исследования по повторным обращениям пациентов. По каждому пациенту в этих данных имелось количество элементов лечения, предложенных врачом, и количество элементов, которые реально запомнил пациент. Естественной моделью для этой ситуации является т. н. бета-биномиальное распределение. Оно известно с 1950-х годов, однако процедуры оценки, связывающие модель с интересующими нас ковариациями, появились лишь недавно. Такие данные обычно обрабатываются с помощью т.н. GEE-методов (Generalized Estimating Equations), однако эти методы являются асимптотическими и исходят из предположения, что выборка имеет большие размеры. Мне требовалась обобщенная линейная модель с бета-биномиальным распределением. Один из недавно появившихся R-пакетов осуществляет оценку согласно этой модели: пакет betabinom, автором которого является Бен Болкер (Ben Bolker). Инструмент SPSS не имеет таких возможностей.
- Интеграция со средствами публикации документов. R органично интегрируется с системами публикации документов, что позволяет встраивать статистические результаты и графику из среды R в документы публикационного качества. Эта возможность не нужна абсолютно всем, однако если вы хотите написать книгу о своем анализе данных или просто не любите копировать свои результаты в документы текстового процессора, то самый короткий и самый элегантный маршрут состоит в использовании R и LaTeX.
- Бесплатность Я — владелец небольшой компании, поэтому мне нравится, что 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 во многом походит на синтаксис языка C, но без его сложностей. К примеру, S берет на себя заботу об управлении памятью и об объявлении переменных, поэтому у пользователя нет необходимости описывать и отлаживать подобные вещи. Более низкие накладные расходы на программирование позволяют быстро проводить несколько исследований с одним и тем же набором данных.
- С самого начала язык S допускал создание высокоуровневых графических артефактов и позволял добавлять опции к любому открытому графическому окну. Этот язык позволяет с легкостью выделить интересные места, запросить их значения, добавить сглаживющие кривые к точечной диаграмме и т.д.
- В 1992 г. в языке S была дополнительно реализована объектная ориентированность. В языке программирования объекты осуществляют структурирование данных и функций в соответствии с интуитивными представлениями пользователя. Человеческое мышление всегда является объектно-ориентированным, а статистические умозаключения – в особенности. Статистик работает с частотными таблицами, с временными рядами, с матрицами, с электронными таблицами, содержащими данные разных типов, с моделями и т.д. В каждом случае необработанные числа наделяются атрибутами и сопровождаются теми или иными ожиданиями. Например, временной ряд состоит из наблюдений и соответствующих моментов времени. Для каждого типа данных ожидаются стандартные статистические показатели и графики. В случае временных рядов можно сформировать график временного ряда и коррелограмму; для эмпирически подобранной модели можно графически изобразить приближения и остатки. Язык 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 — верхнетреугольная матрица).
Примерно в то же самое время, когда был выпущен язык 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 способен читать данные в различных форматах; однако в этом примере я использую набор данных michelson
из пакета MASS. Этот пакет сопровождает этапную книгу Венаблса (Venables) и Рипли (Ripley) под названием Modern Applied Statistics with S-Plus (Современная прикладная статистика с использованием S-Plus) (см. раздел Ресурсы). Набор данных michelson
содержит результаты известных экспериментов Майкельсона–Морли по измерению скорости света.
Команды, показанные в листинге 1, загружают пакет MASS, получают данные из michelson
и позволяют рассмотреть их. На рис.2 показаны эти команды с соответствующими ответами от R. Каждая строка содержит R-функцию с ее аргументами в квадратных скобках ([]
).
Листинг 1. Старт сеанса R
2+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. Простая функция на языке R
MyExample = 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 говорили, что это медленный язык, поскольку он является интерпретируемым, и что объем данных, которые он способен проанализировать, ограничен памятью компьютера. Все это соответствует действительности, однако для современных компьютеров это, как правило, некритично, при условии, что приложение не является действительно огромным (т.е. не относится к категории Больших данных).
- Сохранение результатов— Функция
boxplot()
помимо диаграммы возвращает несколько полезных статистических данных; их можно сохранить в объекте языка R посредством оператора присваивания (например,michelson.bp = ...
), а затем извлечь в случае необходимости. Результат любого оператора присваивания доступен на протяжении всей сессии R и может стать предметом последующего анализа. Функция
boxplot
возвращает матрицу статистических данных, использованных для построения ящичной диаграммы (медианы, квантили и т.д.), число элементов в каждой коробке и значения выбросов (показаны на
рис. 3 как незаштрихованные круги). См.
рис. 4.Рисунок 4. Статистические данные из функции boxplot
- Язык формул— R (и S) — это компактный язык для представления статистических моделей. Код
Speed ~ Expt
в аргументе дает функции указание строить ящичную диаграмму значений Speed (скорость) для каждого уровня Expt (номер эксперимента). Если бы я хотела провести дисперсионный анализ для выявления существенных изменений значения Speed от эксперимента к эксперименту, я использовала бы ту же самую формулу:
lm(Speed ~ Expt)
. Язык формул позволяет выражать широкое разнообразие статистических моделей, включая перекрестные и вложенные эффекты, а также постоянные и случайные факторы. - Определяемые пользователем функции R— Это язык программирования.
R остается актуальным и в 21 веке
Разведочный подход Дж. Тьюки к анализу данных стал нормой для учебного процесса. Он преподается в учебных заведениях и применяется специалистами по статистике. Язык R поддерживает этот подход, и это одно из объяснений того, почему он до сих пор сохраняет популярность. Объектная ориентация также помогает языку R оставаться актуальным, поскольку для анализа новых источников данных требуются новые структуры данных. В настоящее время платформа InfoSphere® Streams поддерживает анализ на языке R для данных, отличных от тех, на которые ориентировался Джон Чамберс.
Инструментарий R-project Toolkit на платформе InfoSphere Streams
InfoSphere Streams — это передовая вычислительная платформа, которая предоставляет возможность быстро принимать, анализировать и сопоставлять информацию в приложениях, разработанных пользователями, по мере поступления информации из тысяч источников в реальном времени. Это решение способно обрабатывать данные с очень высокой пропускной способностью: до нескольких миллионов событий или сообщений в секунду. В состав этой платформы входит инструментарий R-project Toolkit. Узнайте больше и загрузите ознакомительную версию.
Язык R и платформа InfoSphere Streams
InfoSphere 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. В свое время имели место попытки добавить к среде R интерфейсную часть в виде электронной таблицы, однако они не завоевали популярности. Отсутствие функциональности электронной таблицы не только затрудняет ввод данных, но и осложняет визуальное рассмотрение данных в R (в отличие от SPSS или Excel).
- R осложняет решение обычных задач. К примеру, при проведении медицинских исследований первый этап обработки данных состоит в вычислении сводной статистики по всем переменным и в составлении перечня отсутствующих ответов и пропущенных данных. В SPSS этот процесс реализуется буквально тремя щелчками мыши, однако R не имеет встроенной функции для вычисления этой вполне очевидной информации и ее последующего отображения в табличной форме. Нужный код достаточно легко написать самому, однако иногда хочется, чтобы такие вещи можно было делать щелчком мыши.
- Процесс обучения языку R является нетривиальным. Новичок может открыть управляемую с помощью меню статистическую платформу и получить результат за всего за несколько минут. Не каждый хочет становиться программистом для того, чтобы быть аналитиком, а, возможно, не каждому это и нужно.
- R имеет открытый исходный код. Сообщество R является многочисленным, зрелым и активным; вне всякого сомнения, R входит в число наиболее успешных проектов с открытым исходным кодом. Как я уже говорила, реализация языка R имеет возраст более 20 лет, а реализация языка S — еще больше. Это проверенная концепция и испытанный продукт. Однако, как и для любого другого продукта с открытым исходным кодом, надежность зависит от прозрачности. Мы верим в программный код, поскольку мы сами способны проверять его и поскольку другие люди способны проверять его и сообщать о выявляемых при этом ошибках. Иная ситуация имеет место в корпоративном проекте, который берет на себя обязанности по тестированию и валидации своего программного продукта. При этом в случае редко используемых R-пакетов у нас нет достаточных оснований предполагать, что эти пакеты действительно обеспечивают получение корректных результатов.
Заключение
Необходимо ли вам изучать язык R? Вполне возможно, что нет; необходимо— это слишком сильное утверждение. Но является ли R ценным инструментом для анализа данных? Несомненно. Этот язык специально разработан таким образом, чтобы отражать способы мышления и работы статистиков. R закрепляет хорошие привычки и улучшает анализ. По-моему, это хороший инструмент для такой работы.
Ресурсы для скачивания
Похожие темы
- Оригинал статьи: Do I need to learn R?.
- The New S Language: A Programming Environment for Data Analysis
and Graphics (R.A. Becker, John M. Chambers, A.R. Wilks; издательство Chapman & Hall, 1988). Эта основополагающая работа известна в кругах R и S как The Blue Book («Синяя книга»). Книга содержит полное описание языка S и перечень всех его встроенных функций. - Graphical Methods for Data Analysis (John M. Chambers, William S. Cleveland, Beat Kleiner, Paul A. Tukey; издательство Duxbury Press, 1983).
- Exploratory Data
Analysis, (John Tukey) Обратите внимание, что Джон Тьюки (John Tukey) и Пол Тьюки (Paul Tukey) — это разные люди. В этой книге изложена концепция, которая была реализована в языке S. - Modern Applied Statistics with S-Plus, (W.N. Venables, B.D. Ripley; издательство Springer-Verlag, 1997). Классическое введение в объектную ориентированность языка S-Plus (и языка R). Наборы данных и многие функции, использованные в этой книге, включены в пакет MASS языка R.
- R for Dummies (Joris Meys, Andrie de Vries; 2012). Доступное описание языка R для начинающих.
- R in a
Nutshell (Joseph Adler; издательство O’Reilly, 2009). Фундаментальное введение в R для специалистов, осуществляющих стандартный статистический анализ наборов данных умеренного объема. Не охватывает большие данные. - В издательстве Springer публикуется серия книг с оранжевыми обложками и заголовками типа Time Series Analysis in R и An Introduction to Applied Multivariate Analysis with R.
These are a good introduction for the R user with a particular application
Каждая из этих книг представляет собой хорошее введение для пользователей R, интересующихся определенной прикладной областью. В отличие от введений общего характера, книги этой серии в большей степени ориентированы на соответствующие пакеты для определенных предметных областей и в меньшей степени на базовые аспекты R. - Многие «книги» по R в действительности являются работами по прикладной статистике с использованием R. Вероятно, самый сложный момент в использовании R — понимание статистических методов, реализованных в этом языке. В этой категории одной из моих любимых является книга Data
Analysis and Graphics Using R — An Example-Based Approach (John Maindonald, John Braun; издательство Cambridge UP, 2010). Она охватывает множество полезных статистических методов и показывает, как использовать эти методы в R. Кроме того, к книге прилагается вспомогательный R-пакет с данными и функциями. - The Art of
R Programming, (Norman Matloff; издательство O’Reilly, 2011). Это не книга по статистике, а скорее одно из немногих учебных пособий, рассматривающих R именно как язык программирования. Она жизненно необходима вам, если вы планируете писать на R значительное количество программного кода, а не просто запускать пакеты. - Если вы может позволить себе покупку лишь одной книги по R, то книга Data
Mining with R, (Luis Torgo) не годится на эту роль. Однако если вы планируете иметь более одной книги, то эта книга послужит вам хорошим пособием промежуточного уровня. В этой книге, состоящей из трех различных примеров из области углубленного анализа данных, последовательно излагаются все этапы исследования, включая очистку данных и учет отсутствующих значений. - Введение в InfoSphere Streams Превосходная вводная статья по платформе Streams.
- Overview of the R-project toolkit (Обзор инструментария R-project Toolkit) Описание Streams-инструментария для интеграции кода на языке R в приложения на языке SPL.
- Найдите ресурсы, которые помогут вам приступить к работе с InfoSphere Streams — высокопроизводительной вычислительной платформой IBM.
- Перечень продуктов по платформе InfoSphere
Platform для проектов с интенсивным использованием информации. - Новейшие видеоролики по большим данным
для новичков и специалистов. - Опробуйте InfoSphere Streams: загрузите пробную версию со сроком действия 90 суток или попробуйте его в облаке.
- Многие продукты IBM SPSS можно опробовать бесплатно.
- IBM SPSS Decision Management— автоматизация и оптимизация принятия транзакционных решений перед развертыванием
- SPSS Modeler— инструмент для углубленного анализа данных, помогающий пользователю создавать прогнозирующие модели быстро и интуитивным образом, без программирования
- SPSS Text Analytics for Surveys— применение мощных технологий обработки естественных языков, специально спроектированных для исследования текста.
- SPSS Visualization Designer— простое создание и совместное использование впечатляющей визуализации для улучшения обмена аналитическими результатами
- Загрузите R и документацию на сайте CRAN.
- Найдите ресурсы, которые помогут вам приступить к работе с InfoSphere BigInsights — аналитической платформой, основанной на программном обеспечении с открытым кодом Hadoop и расширяющей его возможности благодаря таким функциям, как Big SQL, анализ текста и BigSheets.
- Загрузите продукт InfoSphere BigInsights Quick Start Edition, который доступен как нативный установочный пакет или как VMware-образ.
- Найдите ресурсы, которые помогут вам приступить к работе с InfoSphere Streams — высокопроизводительной вычислительной платформой, которая предоставляет возможность быстро принимать, анализировать и сопоставлять информацию в приложениях, разработанных пользователями, по мере поступления информации из тысяч источников в реальном времени.
- Загрузите продукт InfoSphere Streams, который доступен как нативный установочный пакет или как VMware-образ.
- Оцените продукт InfoSphere Streams на платформе IBM SmartCloud Enterprise.
Хочу всё знать: язык R | GeekBrains
Полное погружение в Data Science.
https://d2xzmw6cctk25h.cloudfront.net/post/808/og_cover_image/dde018213ec1a530cd9b90c9d198015d
Давайте немного поговорим о языке программирования под названием R. В последнее время вы могли у нас в блогах прочитать статьи о Big Data и Data Science, тех сферах, где просто необходимо под рукой иметь мощный язык для работы со статистикой и графиками. И R как раз из таких. Новичку в мире программирования буде достаточно непросто в это поверить, но сегодня R уже популярнее SQL, он активно используется в коммерческих организациях, исследовательских и университетах.
Не вникая в правила, синтаксис и конкретные области применения, просто давайте рассмотрим основные книги и ресурсы, которые помогут вам с нуля изучить R.
GeekBrains рекомендует
Что такое язык R, зачем он вам нужен и как его можно использовать с умом, можно узнать из прекрасного вебинара Руслана Купцова, который он провёл чуть меньше года назад в рамках GeekWeek-2015.
Книги
Теперь, когда в голове есть определённый порядок, можно приступать к чтению литературы, благо её более чем достаточно. Начнём с отечественных авторов:
«Статистический анализ и визуализация данных с помощью R», Мастицкий С.Э., Шитиков В.К.
«Наглядная статистика. Используем R!», А.Б. Шипунов, Е.М. Балдин и др.
Несмотря на то, что в эти книги имеют безусловную ценность для человека, изучающего язык R, они немного перегружены статистическими подходами. То есть если вы только учитесь в университете или недавно его окончили, то это проблем не вызовет. Однако если вам 13 или 35, то к статистическому анализу лучше подойти как раз сперва изучив язык.
Поэтому рассмотрим книги на английском языке, которые в этом помогут чуть лучше:
«Learning R», Richard Cotton
«Introduction to Data Science with R», Garrett Grolemund
«Introductory Statistics with R», Peter Dalgaard
Эти книги, пусть они и на иностранном языке, описывают язык R более доступно именно для новичка.
Естественно, для языка, который существует уже более 20 лет, было написано и переведено на русский немало книг. Вот парочка:
«Анализ сетей (графов) в среде R», Дуглас Люк
«Введение в статистическое обучение с примерами на языке R», Джеймс Г., Уиттон Д., Хасти Т., Тибширани Р.
Как видно из названий этой литературы, здесь вновь язык R рассматривается в прямой связи со статистикой, но так как азам вы уже обучились, то эффект будет исключительно положительный.
Ну и подводя некий этой этому разделу, в последней ссылке вы найдёте список всей рекомендованной разработчиками R англоязычной литературы:
R-Project
Интернет-ресурсы
Любой человек, желающий изучить какой-либо язык программирования обязательно должен посетить в поисках знаний два ресурса: официальный сайт его разработчиков и самое крупное онлайн сообщество. Что ж. не будем делать исключение и для R:
Официальный сайт;
Онлайн-сообщество.
Но опять проникшись заботой к тем, кто английский язык выучить ещё не успел, а вот изучить R ну очень хочет, упомянем несколько российских ресурсов:
Викиучебник;
Книги и статьи Евгения Балдина про R, статистику и не только;
Вот в общем и всё, если не считать разрозненных материалов блогеров. Впрочем, если вам известны российские сайты, где можно почитать много информации про R, обязательно оставляйте ссылки в комментариях.
А пока довершим картину небольшим списком англоязычных, но от этого не менее познавательных сайтов:
CRAN – собственно, место где можно загрузить к себе на компьютер среду разработки R. Кроме того мануалы, примеры и прочее полезное чтиво;
Quick-R – коротко и понятно про статистику, методы её обработки и язык R;
Burns-Stat – про R и про предшественника его S с огромным количеством примеров;
R for Data Science – ещё одна книга от Гаррета Гроулмунда (Garrett Grolemund), переведённая в формат онлайн учебника;
Awesome R – подборка лучшего кода с официального сайта, размещённая на нашем любимом GitHub;
Mran – язык R от Microsoft;
Tutorial R – ещё один ресурс с упорядоченной информацией с официального сайта.
Шпаргалка по языку R / Хабр
Многие слышали про R — язык программирования и систему статистических вычислений. Язык весьма популярен за рубежом, а вот в России, к сожалению, на нём пишут относительно мало. Да и ресурсы на русском языке можно по пальцам пересчитать. Я считаю, что ситуацию нужно как-то исправлять.
На официальном сайте есть такая замечательная штука, как R reference card. В базовых пакетах R содержится множество очень полезных функций, которые делают программирование действительно быстрым и лаконичным. Но новички, как правило, большую часть самых прекрасных функций не знают. Да и не откуда узнать — мануалы очень большие, мало кто их полностью читает. А вот R reference card позволяет совершить быстрое путешествие по основной функциональности и вынести для себя много полезного.
Я решил перевести этот замечательный документ на русский язык. Но не просто перевести, а сделать его немного получше. Я чуток поменял структуризацию, для каждой функции поставил ссылку на документацию, убрал избыточные описания.
Предлагаю вам ознакомиться с результатом. Готов к любым замечаниям и предложениям, чтобы сделать этот список ещё лучше. Надеюсь, что данный обзор R окажется полезным для многих людей, которые решили начать писать на этом прекрасном языке.
Ещё мне хотелось бы сказать пару слов про пакеты. Пакетов в R очень много. Только в стандартном репозитории их 4300+. К сожалению, многие полезные пакеты малоизвестны, т.к. про них никто ничего не пишет. Нет, ну конечно есть мануалы. Но мануалы пригождаются большей частью тогда, когда ты уже используешь пакет, а тебе, к примеру, нужно уточнить какие-то нюансы в использовании функции или вроде того. А вот обзорное впечатление о пакете по мануалу получить не так просто.
Кроме того, меня часто печалит, что в мануалах нет картинок. Чтобы толком понять, что рисует та или иная функция — нужно ручками запускать каждый пример.
Поэтому в обозримом будущем я планирую составить популярные описания (с картинками и примерами) некоторых полезных пакетов. Обзоры будут выставляться тут. Начну с тех пакетов, которыми пользуюсь сам, но если у вас есть заявки на какие-то пакеты, полюбившиеся вам — то прошу в комментарии.
R Language — Начало работы с R Language
замечания
При создании документации ознакомьтесь с документацией по общим правилам.
- В отличие от других языков переменные в R не требуют объявления типа.
- Одной и той же переменной могут быть назначены разные типы данных в разные моменты времени, если это необходимо.
- Индексирование атомных векторов и списков начинается с 1, а не 0.
- R-
arrays
(и частный случай матриц) имеют атрибутdim
который отличает их от «атомных векторов» R, которые не имеют атрибутов. - Список в R позволяет вам собирать различные объекты под одним именем (то есть имя списка) упорядоченным способом. Эти объекты могут быть матрицами , векторами , кадрами данных , даже другими списками и т. Д. Даже не требуется, чтобы эти объекты были связаны друг с другом каким-либо образом.
- Переработка отходов
- Отсутствующие значения
Получать помощь
Вы можете использовать функцию help()
или ?
для доступа к документам и поиска помощи в R. Для более общих поисков вы можете использовать help.search()
или ??
,
#For help on the help function of R
help()
#For help on the paste function
help(paste) #OR
help("paste") #OR
?paste #OR
?"paste"
Посетите https://www.r-project.org/help.html для получения дополнительной информации.
Привет, мир!
"Hello World!"
Кроме того, проверьте подробное обсуждение того, как, когда и зачем печатать строку .
Установка R
Возможно, вы захотите установить RStudio после того, как вы установили R. RStudio — это среда разработки для R, которая упрощает многие задачи программирования.
Только для Windows:
Visual Studio (начиная с версии 2015 Update 3) теперь имеет среду разработки для R, называемую R Tools , которая включает в себя живой интерпретатор, IntelliSense и модуль отладки. Если вы выберете этот метод, вам не нужно будет устанавливать R, как указано в следующем разделе.
- Перейдите на сайт CRAN , нажмите на загрузку R для Windows и загрузите последнюю версию R.
- Щелкните правой кнопкой мыши файл установщика и запустите его как администратор.
- Выберите язык для установки.
- Следуйте инструкциям по установке.
Альтернатива 1
(0. Убедитесь, что XQuartz установлен)
- Перейдите на сайт CRAN и загрузите последнюю версию R.
- Откройте образ диска и запустите программу установки.
- Следуйте инструкциям по установке.
Это установит как R, так и R-MacGUI. Он поместит GUI в / Applications / Folder как R.app, где его можно либо дважды щелкнуть, либо перетащить в Doc. Когда новая версия будет выпущена, процесс (re) -installation перезапишет R.app, но будет сохранен предыдущий вариант основных версий R. Фактический код R будет находиться в каталоге /Library/Frameworks/R.Framework/Versions/. Использование R в RStudio также возможно и будет использовать один и тот же R-код с другим графическим интерфейсом.
Альтернатива 2
- Установите homebrew (отсутствующий менеджер пакетов для macOS), следуя инструкциям на https://brew.sh/
-
brew install R
Те, кто выбирает второй метод, должны знать, что сторонник вилки Mac советует против него и не будет отвечать на вопросы о трудностях в списке рассылки R-SIG-Mac.
Вы можете получить версию R, соответствующую вашему дистрибутиву, с помощью apt-get
. Однако эта версия часто будет значительно отставать от самой последней версии, доступной на CRAN. Вы можете добавить CRAN в свой список признанных «источников».
sudo apt-get install r-base
Вы можете получить более новую версию непосредственно из CRAN, добавив CRAN в список источников. Следуйте указаниям от CRAN для получения более подробной информации. Обратите внимание, в частности, на необходимость также выполнить это, чтобы вы могли использовать install.packages()
. Пакеты Linux обычно распространяются как исходные файлы и нуждаются в компиляции:
sudo apt-get install r-base-dev
sudo dnf install R
R напрямую доступен в Extra
package.
sudo pacman -S r
Более подробную информацию об использовании R под Archlinux можно найти на странице ArchWiki R.
Интерактивный режим и сценарии R
Самый простой способ использования R — интерактивный режим. Вы вводите команды и сразу получаете результат от R.
Использование R в качестве калькулятора
Запустите R, набрав R
в командной строке вашей операционной системы или выполнив RGui
в Windows. Ниже вы можете увидеть скриншот интерактивной сессии R в Linux:
Это RGui в Windows, самая основная рабочая среда для R под Windows:
После знака >
можно ввести выражения. После того, как выражение напечатано, результат показан R. На скриншоте выше R используется в качестве калькулятора: Тип
1+1
чтобы сразу увидеть результат, 2
. Ведущий [1]
указывает, что R возвращает вектор. В этом случае вектор содержит только одно число (2).
Первый сюжет
R может использоваться для генерации графиков. В следующем примере используется набор данных PlantGrowth
, который поставляется в качестве примера набора данных вместе с R
Введите int следующие строки в запрос R, которые не начинаются с ##
. Строки, начинающиеся с ##
, предназначены для документирования результата, который будет возвращен R.
data(PlantGrowth)
str(PlantGrowth)
## 'data.frame': 30 obs. of 2 variables:
## $ weight: num 4.17 5.58 5.18 6.11 4.5 4.61 5.17 4.53 5.33 5.14 ...
## $ group : Factor w/ 3 levels "ctrl","trt1",..: 1 1 1 1 1 1 1 1 1 1 ...
anova(lm(weight ~ group, data = PlantGrowth))
## Analysis of Variance Table
##
## Response: weight
## Df Sum Sq Mean Sq F value Pr(>F)
## group 2 3.7663 1.8832 4.8461 0.01591 *
## Residuals 27 10.4921 0.3886
## ---
## Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
boxplot(weight ~ group, data = PlantGrowth, ylab = "Dry weight")
Создается следующий график:
data(PlantGrowth)
загружают примерный набор данных PlantGrowth
, который представляет собой данные о сухих массах растений, которые подвергались двум различным условиям лечения или вообще не подвергались лечению (контрольная группа). Набор данных доступен под названием PlantGrowth
. Такое имя также называется переменной .
Для загрузки собственных данных могут оказаться полезными следующие две страницы документации:
str(PlantGrowth)
показывает информацию о загруженном наборе данных. Вывод указывает, что PlantGrowth
— это data.frame
, который является именем R для таблицы. data.frame
содержит два столбца и 30 строк. В этом случае каждая строка соответствует одному растению. Подробности двух столбцов показаны в строках, начинающихся с $
: первый столбец называется weight
и содержит числа ( num
, сухой вес соответствующего растения). Вторая колонка, group
, содержит обработку, на которую растение подвергалось. Это категориальные данные, которые называются factor
R. Прочитайте больше информации о кадрах данных .
Чтобы сравнить сухие массы трех разных групп, односторонний ANOVA выполняется с использованием anova(lm( ... ))
. weight ~ group
означает «Сравнить значение столбца weight
, группировку по значениям столбца group
». Это называется формулой в R. data = ...
указывает имя таблицы, в которой данные могут быть найдены.
Результат показывает, среди прочего, что существует значительная разница (Column Pr(>F)
), p = 0.01591
) между некоторыми из трех групп. Последующие тесты, такие как Tukey’s Test, должны выполняться для определения того, какие средства групп значительно различаются.
boxplot(...)
создает boxplot(...)
график данных. где значения, которые должны быть построены, исходят из. weight ~ group
означает: «Заговор значения веса столба по сравнению с значениями столбца group
. ylab = ...
указует метку оси у Дополнительной информации:. Базовые заговоры
Введите q()
или Ctrl- D, чтобы выйти из сеанса R.
Чтобы документировать ваши исследования, удобно сохранять команды, которые вы используете для расчета в файле. Для этого вы можете создавать R-скрипты . Сценарий R — это простой текстовый файл, содержащий команды R.
Создайте текстовый файл с именем plants.R
и заполните его следующим текстом, где некоторые команды знакомы с приведенным выше кодом кода:
data(PlantGrowth)
anova(lm(weight ~ group, data = PlantGrowth))
png("plant_boxplot.png", width = 400, height = 300)
boxplot(weight ~ group, data = PlantGrowth, ylab = "Dry weight")
dev.off()
Выполните скрипт, введя свой терминал (терминал вашей операционной системы, а не интерактивный сеанс R, как в предыдущем разделе!)
R --no-save <plant.R >plant_result.txt
Файл plant_result.txt
содержит результаты ваших вычислений, как если бы вы ввели их в интерактивную подсказку R. Таким образом, ваши расчеты задокументированы.
Новые команды png
и dev.off
используются для сохранения boxplot на диск. Две команды должны заключать команду построения графика, как показано в примере выше. png("FILENAME", width = ..., height = ...)
открывает новый PNG-файл с указанным именем файла, шириной и высотой в пикселях. dev.off()
завершит dev.off()
и сохранит график на диск. Выход не сохраняется до dev.off()
.
R (язык программирования) — это… Что такое R (язык программирования)?
У этого термина существуют и другие значения, см. R.
R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Язык создавался как аналогичный языку S, разработанному в Bell Labs и является его альтернативной реализацией, хотя между языками есть существенные отличия, но в большинстве своём код на языке S работает в среде R. Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (англ. Ross Ihaka) и Робертом Джентлменом (англ. Robert Gentleman) (первая буква их имён — R), на момент 2011 года язык и среда поддерживаются и развиваются организацией R Foundation.
R широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом для статистических программ[2].
R доступен под лицензией GNU GPL. Распространяется в виде исходных кодов, а также откомпилированных приложений под ряд операционных систем: FreeBSD, Solaris[3] и другие дистрибутивы Unix и Linux, Microsoft Windows, Mac OS X.
В R используется интерфейс командной строки, хотя доступны и несколько графических интерфейсов пользователя, например пакет R Commander, RKWard, RStudio, Weka, Rapid Miner, KNIME, а также средства интеграции в офисные пакеты.
В 2010 году R вошёл в список победителей конкурса журнала InfoWorld в номинации на лучшее открытое программное обеспечение для разработки приложений[4].
Особенности
R поддерживает широкий спектр статистических и численных методов и обладает хорошей расширяемостью с помощью пакетов. Пакеты представляют собой библиотеки для работы специфических функций или специальных областей применения. В базовую поставку R включен основной набор пакетов, а всего по состоянию на 2006 год доступно более 800 пакетов.
Ещё одной особенностью R являются графические возможности, заключающиеся в возможности создания качественной графики, которая может включать математические символы.
Примеры
Средний балл выпускника вуза
# В переменную a поместить список всех оценок: a <- c(4,3,3,3,3,4,4,4,4,4,5,4,4,4,5,5,5,5,+ 3,5,5,4,4,3,3,4,4,3,5,5,4,3,3,4,4,3,3,5,4,5,5) # В переменную n поместить количество оценок: length(a) -> n # Средний балл: m <- mean(a) # Таблица (горизонтальная) с подсчётом количества оценок: t <- table(a) # Преобразование в более удобный формат данных (вертикальную таблицу): f <- as.data.frame(t) # Вычисление процентной доли и запись её в третий столбец: mapply(function(r) r*100/n, f[,2]) -> f[,3] # Заголовки столбцов: colnames(f) <- c("Оценка", "Кол-во", "%") # Вывод результатов: a n m f
Результат:
[1] 4 3 3 3 3 4 4 4 4 4 5 4 4 4 5 5 5 5 3 5 5 4 4 3 3 4 4 3 5 5 4 3 3 4 4 3 3 5 [39] 4 5 5 [1] 41 [1] 4 Оценка Кол-во % 1 3 12 29.26829 2 4 17 41.46341 3 5 12 29.26829
Полезные инструменты
Для удобства работы с R разработан ряд графических интерфейсов, в том числе:
Кроме того, в ряде текстовых и кодовых редакторов предусмотренные специальные режимы для работы с R, в частности:
Доступ к функциям и среде выполнения R возможен из Python с использованием пакета RPy[12].
Коммерциализация
Компания Revolution Analytics, основанная в 2007 году, целиком свой бизнес посвящает коммерциализации языка программирования R, в её коммерческом пакете Revolution R примечательны такие компоненты (не распространяемые со свободной версией языка), как ParallelR (поддержка многопоточности среды выполнения), R Productivity Environment (интегрированная среда разработки), RevoScaleR (поддержка массово-параллельной обработки в рамках концепции «больших данных»), RevoDeployR, библиотеки по интеграции с веб-службами, поддержка форматов статистических пакетов корпорации SAS Institute[13].
В октябре 2011 года корпорация Oracle выпустила аппаратно-программный комплекс Big Data Appliance — NoSQL-кластер серверов массово-параллельной обработки, с интегрированным программными средствами на основе языка R и Apache Hadoop[14][15], а в феврале 2012 года язык встроен в Oracle Database[16]. Также массово-параллельный анализ средствами R поддержан в аппаратно-программных комплексах Netezza корпорации IBM[17][18].
Также язык R поддерживают коммерческие программные среды Tibco Spotfire[19], SPSS (начиная с версии 16.0)[20], Statistica (начиная с версии 9.0)[21], Platform Symphony[22], SAS[23].
CRAN
R и дополнительные пакеты распространяются через CRAN (акроним Comprehensive R Archive Network). В настоящее время в мире доступны более 60 зеркал CRAN. Головной узел — (http://cran.r-project.org/) расположен в Вене (Австрия).
Информационный бюллетень R
Два-три раза в год выходит свободно-распространяемый информационный журнал R Journal[24]. Он содержит информацию по статистической обработке данных и разработке, что может быть интересно как пользователям, так и разработчикам R. С января 2001 г. по октябрь 2008 г. он выходил в качестве бюллетеня R News[25].
Примечания
- ↑ A Brief History R: Past and Future History, Ross Ihaka, Statistics Department, The University of Auckland, Auckland, New Zealand, available from the CRAN website
- ↑ Teaching-with-R.pdf (англ.)
- ↑ R-Project on Solaris
- ↑ InfoWorld Bossie Awards 2010
- ↑ SciViews
- ↑ Togaware: Rattle: Gnome Cross Platform GUI for Data Mining using R
- ↑ R syntax — jEdit Community
- ↑ http://www.kate-editor.org/syntax/2.5/r.xml
- ↑ http://syn.sourceforge.net/
- ↑ Tinn-R | Download Tinn-R software for free at SourceForge.net
- ↑ WalWare — Homepage
- ↑ http://rpy.sourceforge.net RPy on SourceForge
- ↑ ‘Red Hat for stats’ goes toe-to-toe with SAS
- ↑ Oracle Unveils the Oracle Big Data Appliance
- ↑ Oracle rolls its own NoSQL and Hadoop
- ↑ Prickett Morgan, Timothy Oracle tucks R stats language into database (англ.). The Register (10 February 2012). Архивировано из первоисточника 3 июня 2012. Проверено 10 февраля 2012.
- ↑ Harris, Derrick. IBM Creates Big Data Frankenstein With Netezza-R Fusion (англ.), The New York Times (2011-03-141). Проверено 19 ноября 2011.
- ↑ Rosenberg, Dave Open-source ‘R’ gets Hadoop integration (англ.). CNet. CBS. Архивировано из первоисточника 17 февраля 2012. Проверено 19 ноября 2011.
- ↑ Spotfire Integration with S+ and R
- ↑ RSS Matters
- ↑ R Language Platform | StatSoft
- ↑ R» integrated with Symphony
- ↑ Calling Functions in the R Language (SAS/IML)
- ↑ R Journal
- ↑ CRAN: R News
Ссылки
R: Что такое R?
Введение в R
R — это язык и среда для статистических вычислений и графики. Это проект GNU, похожий на язык и среду S, который был разработан в Bell Laboratories (ранее AT&T, теперь Lucent Technologies) Джоном Чемберсом и его коллегами. R можно рассматривать как другую реализацию S. Есть некоторые важные отличия, но большая часть кода, написанного для S, выполняется без изменений под R.
R предоставляет широкий спектр статистических (линейное и нелинейное моделирование, классические статистические тесты, анализ временных рядов, классификация, кластеризация и т. Д.) И графических методов и обладает высокой расширяемостью.Язык S часто является средством выбора для исследований в области статистической методологии, а R обеспечивает путь с открытым исходным кодом к участию в этой деятельности.
Одной из сильных сторон R является простота создания хорошо продуманных графиков, пригодных для публикации, включая математические символы и формулы, где это необходимо. Значительное внимание было уделено значениям по умолчанию для незначительных вариантов дизайна в графике, но пользователь сохраняет полный контроль.
R доступен как бесплатное программное обеспечение в соответствии с условиями Стандартной общественной лицензии GNU Free Software Foundation в форме исходного кода.Он компилируется и работает на широком спектре платформ UNIX и подобных систем (включая FreeBSD и Linux), Windows и MacOS.
Среда R
R — это интегрированный набор программных средств для обработки данных, вычислений и графического отображения. Включает
- эффективное средство обработки и хранения данных,
- набор операторов для вычисления массивов, в частности матриц,
- большой, согласованный, интегрированный набор промежуточных инструментов для анализа данных,
- графические средства для анализа данных и отображения на экране или на бумаге, а
- — это хорошо разработанный, простой и эффективный язык программирования, который включает условные выражения, циклы, определяемые пользователем рекурсивные функции и средства ввода и вывода.
Термин «среда» предназначен для характеристики ее как полностью спланированной и согласованной системы, а не как постепенное наращивание очень специфических и негибких инструментов, как это часто бывает с другим программным обеспечением для анализа данных.
R, как и S, разработан на основе настоящего компьютерного языка и позволяет пользователям добавлять дополнительные функции, определяя новые функции. Большая часть самой системы написана на диалекте R языка S, что упрощает пользователям выполнение сделанных алгоритмических выборов.Для задач с интенсивными вычислениями код C, C ++ и Fortran может быть связан и вызван во время выполнения. Опытные пользователи могут написать код C для непосредственного управления объектами R.
Многие пользователи думают о R как о статистической системе. Мы предпочитаем думать об этом как о среде, в которой реализуются статистические методы. R может быть расширен (легко) с помощью пакетов . В дистрибутив R входит около восьми пакетов, и многие другие доступны через семейство Интернет-сайтов CRAN, охватывающих очень широкий спектр современной статистики.
R имеет собственный формат документации, подобный LaTeX, который используется для предоставления исчерпывающей документации, как в интерактивном режиме в различных форматах, так и в печатном виде.
.Учебное пособие по
R — Изучите программирование на R
Хотя RStudio — прекрасный инструмент для начала изучения R, это всего лишь интерфейс для консоли R. Важно быть знакомым с запуском программ R непосредственно через командную строку или терминал, поскольку у вас не всегда может быть доступ к графическому интерфейсу, если вы запускаете программы R на сервере.
Если R установлен правильно, вы можете открыть консоль R, набрав «R» на терминале и нажав Return / Enter.
Когда вы запустите R, первое, что вы увидите, это консоль R с приглашением по умолчанию «>».Мы можем начать вводить команды прямо в приглашении и нажать «Return», чтобы выполнить его.
Например, попробуйте ввести следующие команды в строке R
> n <- c (2, 3, 5, 10, 14)
> означает (п)
[1] 6,8
Как видите, каждая команда выполняется, как только вы нажимаете клавишу возврата, и если есть какой-либо вывод (среднее значение в приведенном выше примере), он отображается.
Если команда не завершена, когда вы нажмете «Return», подсказка изменится на «+» и будет продолжать принимать ввод, пока команда не будет синтаксически завершена.
В качестве альтернативы мы можем выполнять команды R, хранящиеся во внешнем файле, используя функцию source () следующим образом.
> источник ("example.R")
Чтобы выйти из командной строки, мы можем вызвать функцию q () (как в quit).
> q ()
Различные способы запуска сценариев R
Иногда может потребоваться запустить программу R внутри пакета или сценария оболочки. Есть разные способы добиться этого.
Метод 1. Использование команды R CMD BATCH
Сохраните сценарий R в текстовом файле с расширением.R и введите следующую команду.
R ПАКЕТ CMD /home/demo/learnR/Rprogramming.R
Вывод этой команды будет сохранен в файле с именем Rprogramming.Rout
Метод 2: Использование Rscript
Используйте следующую команду
Rscript /home/demo/learnR/Rprogramming.R
Разница между R CMD
и Rscript
заключается в том, что Rscript
печатает вывод в STDOUT вместо файла.
Если вы хотите превратить вашу программу R в исполняемый файл, вы можете указать, что вы хотите, чтобы файл запускался с использованием Rscript
, добавив следующую строку в начале вашего R-скрипта.
#! / Usr / bin / env Rscript
Например, если ваша программа R выглядит как
#! / usr / bin / env Rscript
п <- с (2, 3, 5, 10, 14)
среднее (п)
Вы можете выполнить его прямо из терминала как ./Rprogramming.R
.
Что такое \ r в языке C?
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.