Хочу всё знать: язык R. Язык программирования R и его место среди статистических программ Программирование в среде r

Любое решение R, работающий в Службы R Services (в базе данных) необходимо использовать пакеты, установленные в библиотеке R по умолчанию. Как правило R решения будет ссылаться на библиотеки пользователя, указав путь к файлу в код R, но это не рекомендуется для рабочей среды.

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

При установке Службы R Services (в базе данных), по умолчанию R базового устанавливаются пакеты, такие как stats и utils , вместе с RevoScaleR пакет, который поддерживает подключения к SQL Server.

Если требуется дополнительный пакет из CRAN или другой репозиторий, необходимо загрузить пакет и установить его на рабочей станции.

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

Существует несколько источников R-пакетов, самые известные - CRAN и Bioconductor. Официальный сайт языка R (https://www.r-project.org/) перечислены многие из этих ресурсов. Кроме того, многие пакеты публикуются на портале GitHub, где можно получить исходный код. Однако вам также могут предоставить R-пакеты, разработанные в вашей организации.

Независимо от источника пакеты для установки должны быть предоставлены в виде ZIP-архива. Кроме того чтобы использовать пакет с Службы R Services (в базе данных), не забудьте получить ZIP-файл в двоичном формате Windows. (Некоторые пакеты могут не поддерживать этот формат). Дополнительные сведения о содержимом файловый формат zip, и как создать пакет R, мы рекомендуем этого учебника, который можно загрузить в формате PDF из узла проекта R: Freidrich Leisch: создание пакетов R .

Как правило пакеты R можно установить легко из командной строки без загрузки их заранее, если компьютер имеет доступ к Интернету. Обычно это не так с серверами, использующими SQL Server . Таким образом Чтобы установить пакет R на компьютер, выполняющий не имеют доступ к Интернету, необходимо загрузить пакет в правильном формате ZIP-заранее и скопируйте ZIP-файлы в папку, доступную на компьютере.

В следующих разделах описываются два способа установки пакетов в автономном режиме:

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

    Приводятся инструкции по установке пакетов в автономном режиме путем ручного копирования ZIP-файлов.

Чтобы установить новый R-пакет на компьютере, на котором выполняется SQL Server 2016, необходимо иметь права администратора на этом компьютере.

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

Если вы устанавливаете новый пакет R на компьютере, который используется R рабочей станции и выполняется не в экземпляре SQL Server установлен, по-прежнему требуется права администратора на компьютере для установки пакета. После установки пакета его можно выполнять локально.

Место расположения библиотеки по умолчанию R для служб R

Если вы установили Службы R Services (в базе данных) экземпляра по умолчанию, библиотеки пакет R, используемые экземпляром находится в SQL Server папку экземпляра. Например:

  • Экземпляр по умолчанию MSSQLSERVER C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\R_SERVICES\library
  • Именованный экземпляр Мойименованныйэкземпляр C:\Program Files\Microsoft SQL Server\MSSQL13.MyNamedInstance\R_SERVICES\library

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

EXECUTE sp_execute_external_script @language = N "R" , @script = N "OutputDataSet <- data.frame(.libPaths());" WITH RESULT SETS (( VARCHAR (MAX ) NOT NULL )); GO

Дополнительные сведения см. в разделе .

SQL Server vNext предоставляет новые возможности для установки и управления пакетами R, которые предоставляют администратору базы данных и большую свободу по обработке и анализу данных и контролировать использование пакета и программы установки. Дополнительные сведения см. в разделе .

При использовании служб SQL Server 2106 R новые возможности пакета управления доступны не в данный момент. В то же время, что у вас есть эти параметры для определения, какие пакеты установлены на SQL Server компьютере, используйте один из следующих вариантов:

  • Просмотр библиотеки по умолчанию, при наличии разрешений на папку.
  • Выполнение команды из команды R для перечисления пакетов в расположение библиотеки R_SERVICES
  • На экземпляре, используйте хранимую процедуру как показано ниже:

    EXECUTE sp_execute_external_script @language =N "R" ,@script = N "str(OutputDataSet); packagematrix <- installed.packages(); NameOnly <- packagematrix[,1]; OutputDataSet <- as.data.frame(NameOnly);" ,@input_data_1 = N "SELECT 1 as col" WITH RESULT SETS ((PackageName nvarchar (250 )))

Хочу рассказать об использовании свободной среды статистического анализа R. Рассматриваю ее как альтернативу статистических пакетов типа SPSS Statistics. К моему глубокому сожалению, она совершенно неизвестна на просторах нашей Родины, а зря. Полагаю, что возможность написания дополнительных процедур статистического анализа на языке S делает систему R полезным инструментом анализа данных.

В весеннем семестре 2010 года мне довелось читать лекции и проводить практические занятия по курсу «Статистический анализ данных» для студентов отделения интеллектуальных систем РГГУ.

Мои студенты предварительно изучали семестровый курс теории вероятностей, покрывающий основы дискретных вероятностных пространств, условные вероятности, теорему Байеса, закон «больших чисел», некоторые сведения о нормальном законе и Центральную предельную теорему.

Лет пять назад я уже проводил занятия по (тогда еще объединенному) семестровому курсу «Основы теории вероятностей и математической статистики», поэтому я расширил свои заметки (выдаваемые перед каждым занятием студентам) по статистике. Сейчас, когда в РГГУ имеется студенческий сервер isdwiki.rsuh.ru отделения, я параллельно выкладываю их на FTP.

Встал вопрос: какую программу использовать, для проведения практических занятий в компьютерном классе? Часто используемый Microsoft Excel был отклонен как из-за проприетарности, так и из-за некорректности реализации некоторых статистических процедур. Об этом можно прочитать, например, в книге А.А.Макарова и Ю.Н.Тюрина «Статистический анализ данных на компьютере». Электронные таблицы Calc из бесплатного офисного пакета Openoffice.org русифицировали так, что мне с трудом удается найти требуемую функцию (их названия еще и сократили отвратительно).

Наиболее часто используется пакет SPSS Statistics. В настоящее время фирма SPSS поглощена фирмой IBM. Среди преимуществ IBM SPSS Statistics выделю:

  • Удобная загрузка данных различных форматов (Excel, SAS, через OLE DB, через ODBC Direct Driver);
  • Наличие как командного языка, так и разветвленной системы меню для прямого доступа к различным процедурам статистического анализа;
  • Графические средства вывода результатов;
  • Встроенный модуль Statistics Coach, интерактивным образом предлагающий адекватный метод анализа.
Недостатками IBM SPSS Statistics на мой взгляд являются:
  • Платность даже для студентов;
  • Необходимость получения (дополнительно оплачиваемых) модулей, содержащих специальные процедуры;
  • Поддержка только 32-разрядных операционных систем Linux, хотя Windows поддерживаются как 32-разрядные, так и 64-разрядные.
В качестве альтернативы я выбрал систему . Эта система начала разрабатываться усилиями Роберта Джентльмена и Росса Ихака на факультете статистики университета Мельбурна в 1995 году. Первые буквы имен авторов определили ее название. Впоследствии к развитию и расширению этой системы подключились ведущие специалисты-статистики.

Достоинствами обсуждаемой системы я считаю:

  • Распространение программы под GNU Public License;
  • Доступность как исходных текстов, так и бинарных модулей в обширной сети репозитариев CRAN (The Comprehensive R Archive Network). Для России - это сервер cran.gis-lab.info ;
  • Наличие установочного пакета под Windows (работает как на 32-х, так и на 64-х разрядной Vista). Случайно выяснилось, что установка не требует прав администратора под Windows XP;
  • Возможность установки из репозитария в Linux (у меня работает на 64-разрядной версии Ubuntu 9.10);
  • Наличие собственного языка программирования статистических процедур R, фактически ставшим стандартом. Он, например, полностью поддерживается новой системой IBM SPSS Statistics Developer;
  • Этот язык является расширением языка S, разработанным в Bell Labs, в настоящее время составляющим основу коммерческой системы S-PLUS. Большинство программ, написанных для S-PLUS, может легко быть исполнено в среде R;
  • Возможность обмена данным с электронными таблицами;
  • Возможность сохранения всей истории вычислений для целей документирования.
К первому занятию были подготовлены CD, на которые были записаны установочные файлы, документация и руководства. О последних скажу подробнее. В CRAN имеются подробные руководства пользователя по установке, языку R (и его подмножеству S), написанию дополнительных статистических процедур, экспорту и импорту данных. В разделе Contributed Documentation имеется большое число публикаций преподавателей-статистиков, использующих этот пакет в учебном процессе. К сожалению, на русском языке ничего нет, хотя, например, есть даже на польском. Из англоязычных книг отмечу «Using R for introductory statistics» профессора Джона Верзани из городского университета Нью-Йорка и «Introduction to the R project for Statistical Computing» профессора Росситера (Голландия) из Международного института Геоинформатики и наблюдений Земли.

Первое занятие было посвящено установке и обучению пользоваться пакетом, знакомство с синтаксисом языка R. В качестве тестовой задачи использовались вычисления интегралов методом Монте-Карло. Вот пример вычисления вероятности с.в. с экспоненциальным распределением с параметром 3 принять значение меньше 0.5 (10000 - число попыток).
> x=runif(10000,0,0.5)
> y=runif(10000,0,3)
> t=y<3*exp(-3*x)
> u=x[t]
> v=y[t]
> plot(u,v)
> i=0.5*3*length(u)/10000

Первые две строчки задают равномерное распределение точек в прямоугольнике x, затем отбираются те точки, которые попали под график экспоненциальной плотности 3*exp(-3*x), функция plot отображает точки в окне графического вывода, наконец, вычисляется искомый интеграл.
Второе занятие было посвящено вычислению описательных статистик (квантилям, медиане, среднему, дисперсии, корреляции и ковариации) и выводу графиков (гистограммы, ящик-с-усами).
В последующих занятиях использовалась библиотека «Rcmdr». Это - графический интерфейс пользователя (GUI) для среды R. Библиотека создается усилиями профессора Джона Фокса из университета McMaster в Канаде.

Установка этой библиотеки производится выполнением команды install.packages(«Rcmdr», dependencies=TRUE) внутри среды R. Если сама среда - интерпретатор языка R, то надстройка «Rcmdr» - это дополнительное окно, снабженное системой меню, содержащей большое число команд, соответствующих стандартным статистическим процедурам. Это особенно удобно для курсов, где главное - научить студента нажимать на кнопочки (к моему сожалению, такие встречаются сейчас все в большем количестве).

Из предыдущего моего курса были расширены заметки к семинарам. Они также доступны через FTP с сайта isdwiki.rsuh.ru. Эти заметки содержали таблицы критических значений, которые использовались для вычислений у доски. В этом году студентам предлагалось решать эти задачи на компьютере, а также проверять таблицы, использовав (нормальные) аппроксимации, также указанные в заметках.

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

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

Если перед Вами стоит задача изучения статистики, а особенно написание нестандартных процедур статистической обработки данных, то рекомендую обратить свое внимание на пакет R.

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

Что такое R?

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

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

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


R - это сообщество/движение.
Так как R - это бесплатный продукт с открытым кодом, то его разработкой, тестированием и отладкой занимается не отдельная компания с нанятым персоналом, а сами пользователи. За два десятилетия из ядра разработчиков и энтузиастов сформировалось огромное сообщество. По последним данным, более 2 млн человек так или иначе помогали развивать и продвигать R на добровольной основе, начиная от переводов документации, создания обучающих курсов и заканчивая разработкой новых приложений для науки и промышленности. В интернете существует огромное количество форумов, на которых можно найти ответы на большинство вопросов, связанных с R.

Как выглядит среда R?

Существует много "оболочек" для R, внешний вид и функциональность которых могут сильно отличаться. Но мы коротко рассмотрим лишь три наиболее популярных варианта: Rgui, Rstudio и R, запущенный в терминале Linux/UNIX в виде командной строки.


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

На данный момент насчитываются десятки качественных статистических пакетов, среди которых явными лидерами являются SPSS, SAS и MatLab. Однако, в 2013 году, несмотря на высокую конкуренцию, R стал самым используемым программным продуктом для статистического анализа в научных публикациях (http://r4stats.com/articles/popularity/). Кроме того, в последнее десятилетие R становится все более востребованным и в бизнес-секторе: такие компании-гиганты, как Google, Facebook, Ford и New York Times активно используют его для сбора, анализа и визуализации данных (http://www.revolutionanalytics.com/companies-using-r). Для того чтобы понять причины растущей популярности языка R, обратим внимание на его общие черты и отличия от других статистических продуктов.

В целом большинство статистических инструментов можно разделить на три типа:

  1. программы с графическим интерфейсом , основанные на принципе "кликни здесь, тут и получи готовый результат";
  1. статистические языки программирования , в работе с которыми необходимы базовые навыки программирования;
  1. "смешанный" , в которых есть и графический интерфейс (GUI ), и возможность создания скриптовых программ (например: SAS, STATA, Rcmdr).

Особенности программ с GUI

Программы с графическим интерфейсом имеют привычный для обычного пользователя вид и легки в освоении. Но для решения нетривиальных задач они не подходят, так как имеют ограниченный набор стат. методов и в них невозможно писать собственные алгоритмы. Смешанный тип сочетает в себе удобство GUI оболочки и мощь языков программирования. Однако, при детальном сравнении статистических возможностей с языками программирования SAS и STATA проигрывают и R, и MatLab (сравнение статистических методов R, MatLab, STATA, SAS, SPSS). К тому же за лицензию для этих программ придется выложить приличную сумму денег, а единственным бесплатной альтернативой является Rcmdr: оболочка для R с GUI (Rcommander).

Сравнение R с языками программирования MatLab, Python и Julia

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

Другими "конкурирующими" языками являются Python и Julia. По моему мнению, Python, являясь универсальный языком программирования, больше подходит для обработки данных и сбора информации с применением веб-технологий, чем для статистического анализа и визуализации (основные отличия R от Python хорошо описаны ). А вот статистический язык Julia - довольно молодой и претенциозный проект. Основной особенностью этого языка является скорость вычислений, в некоторых тестах превышающая R в 100 раз! Пока Julia находится на ранней стадии развития и имеет мало дополнительных пакетов и последователей, но в отдаленный перспективе Julia - это, пожалуй, единственный потенциальный конкурент R.

Заключение

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

Достоинства среды R:

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

Недостатки:

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

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

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

На написание данной статьи меня сподвиг следующий топик: В поисках идеального поста, или загадки хабра . Дело в том, что после ознакомления с языком R я крайне искоса смотрю на любые попытки, что-то посчитать в экселе. Но надо признать, что и с 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)==4) { scoressplitted<-t(scoressplitted) 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 заключается в следующем:

  1. Эта программа бесплатна (распространяется под лицензией GPL),
  2. Под эту программу написано много пакетов для решения большого спектра задач. Все они так же бесплатны.
  3. Программа очень гибкая: размеры любых векторов и матриц могут изменяться по желанию пользователя, данные не имеют жёсткую структуру. Это свойство оказывается крайне полезным в случае с прогнозированием, когда исследователю нужно дать прогноз на произвольный срок.

Последнее свойство особенно актуально, так как другие статистические пакеты (такие как SPSS, Eviews, Stata) предполагают, что нас может интересовать только анализ данных, которые имеют фиксированную структуру (например, все данные в рабочем файле должны быть одинаковой периодичности с одинаковыми датами начала и конца).

Впрочем, R - это не самая дружелюбная программа. На время работы с ней забудьте про мышку - практически все самые важные действия в ней выполняются с использованием командной строки. Однако для того чтобы сделать жизнь чуть легче, а саму программу чуть более приветливой, есть программа-frontend (внешний интерфейс) под названием RStudio. Скачать её можно отсюда . Устанавливается она после того, как уже установлен сам R. В RStudio много удобных инструментов и приятный интерфейс, тем не менее анализ и прогнозирование в нём всё так же осуществляются с использованием командной строки.

Давайте попробуем взглянуть на эту замечательную программу.

Знакомство с RStudio

Интерфейс RStudio выглядит следующим образом:

В правом верхнем углу в RStudio указано имя проекта (которое пока что у нас «None» — то есть отсутствует). Если нажать на эту надпись и выбрать «New Project» (новый проект), то нам предложат создать проект. Для базовых целей прогнозирования достаточно выбрать «New Directory» (новая папка для проекта), «Empty Project» (пустой проект), а затем - ввести название проекта и выбрать директорию, в которой его сохранить. Включите воображение и попробуйте придумать название сами:).

Работая с одним проектом, вы всегда сможете обратиться к сохранённым в нём данным, командам и скриптам.

В левой части окна RStudio располагается консоль. Именно в неё мы и будем вписывать различные команды. Например, напишем следующую:

x < - rnorm (100 , 0 , 1 )

Эта команда сгенерирует 100 случайных величин из нормального распределения с нулевым математическим ожиданием и единичной дисперсией, после чего создаст вектор под названием «x» и запишет полученные 100 величин в него. Символ «<-» эквивалентен символу «=» и показывает какое значение присвоить нашей переменной, стоящей слева. Иногда вместо него удобней использовать символ «->», правда наша переменная в таком случае должна стоять справа. Например, следующий код создаст объект «y» абсолютно идентичный объекту «x»:

x -> y

Эти векторы теперь появились в правой верхней части экрана, под закладкой, которая у меня озаглавлена «Environment»:

Изменения в закладке «Environment»

В этой части экрана будут отображаться все объекты, которые мы сохраняем во время сессии. Например, если мы создадим такую вот матрицу:

\(A = \begin{pmatrix} 1 & 1 \\ 0 & 1 \end{pmatrix} \)

такой вот командой:

A < - matrix (c (1 , 0 , 1 , 1 ) , 2 , 2 )

то она появится в закладке «Environment»:

Любая функция, которую мы используем, требует, чтобы мы задали некоторые значения определённым параметрам. В функции matrix () есть следующие параметры:

  • data – вектор с данными, который должен быть записан в матрицу,
  • nrow – число строк в матрице,
  • ncol – число столбцов в матрице,
  • byrow - логический параметр. Если «TRUE» (истина), то наполнение матрицы будет осуществляться по строкам (слева направо, строка за строкой). По умолчанию этот параметр имеет значение «FALSE» (ложь),
  • dimnames - лист с именами строк и столбцов.

Некоторые из этих параметров имеют значения по умолчанию (например, byrow = FALSE ), в то время как другие могут быть опущены (например, dimnames ).

Одна из фишек «R» заключается в том, что к любой функции (например, к нашей matrix () ) можно обратиться, задавая значения на прямую:

Другой вариант - это нажать на имя объекта в закладке «Environment».

Matrix

где matrix - это название интересующей нас функции. RStudio специально для вас в таком случае откроет панель «Help» с описанием:

Найти помощь по функции можно так же, набрав название функции в окне «поиск» (иконка с линзой) в закладке «Help».

В случае, если вы не помните точно, как пишется название функции или какие в ней используются параметры, достаточно начать писать её название в консоли и нажать кнопку «Tab»:

Помимо всего этого в RStudio можно писать скрипты. Они могут понадобиться вам в том случае, если вам нужно написать программу либо вызвать последовательность функций. Создаются скрипты используя кнопку с плюсиком в верхнем левом углу (в выпадающем меню нужно выбрать «R Script»). В открывшемся после этого окне вы сможете писать любые функции и комментарии. Например, если мы хотим построить линейный график по ряду x, это можно сделать следующим образом:

plot (x )

lines (x )

Первая функция строит простейший точечный график, а вторая функция добавляет поверх точек линии, соединяющие точки последовательно. Если выделить эти две команды и нажать «Ctrl+Enter», то они будут выполнены, в результате чего RStudio откроет закладку «Plot» в правом нижнем углу и отобразит в ней построенный график.

Если все набранные команды нам ещё понадобятся в будущем, то этот скрипт можно сохранить (дискетка в левом верхнем углу).

В случае, если вам нужно обратиться к команде, которую вы уже набирали когда-то в прошлом, в правой верхней части экрана есть закладка «History». В ней можно найти и выбрать любую интересующую вас команду и двойным нажатием вставить её в консоль. В самой консоли можно обращаться к предыдущим командам, используя кнопки «Up» (вверх) и «Down» (вниз) на клавиатуре. Сочетание клавиш «Ctrl+Up» позволяет в консоли показать список всех последних команд.

Вообще в RStudio много всяких полезных сочетаний клавиш, которые значительно облегчают работу с программой. Подробней о них можно почитать .

Как я уже упомянул ранее для R существует множество пакетов. Все они расположены на сервере CRAN и для установки любого из них нужно знать его название. Установка и обновление пакетов осуществляется с помощью закладки «Packages». Перейдя на неё и нажав на кнопку «Install», мы увидим примерно следующее меню:

Наберём в открывшемся окне: forecast — это пакет, написанный Робом Хайндманом (Rob J. Hyndman), содержащий кучу полезных для нас функций. Нажмём кнопку «Install» (установить), после чего пакет «forecast» будет установлен.

Как вариант мы можем установить любой пакет, зная его название, с помощью команды в консоли:

install . packages ("smooth" )

при условии, что он, конечно же, есть в репозитории CRAN. smooth — это пакет , функции в котором разрабатываю и поддерживаю я.

Некоторые пакеты доступны только в исходных кодах на сайтах типа github.com и требуют, чтобы их перед этим собрали. Для сборки пакетов под Windows может понадобиться программа Rtools .

Чтобы использовать какой-либо из установленных пакетов, его нужно подключить. Для этого его надо найти в списке и отметить галочкой либо использовать команду в консоли:

library (forecast )

В Windows может проявиться одна неприятная проблема: некоторые пакет легко скачиваются и собираются, но ни в какую не устанавливаются. R в этом случае пишет что-то типа: «Warning: unable to move temporary installation…». Всё, что нужно сделать в этом случае — добавить папку с R в исключения в антивирусе (либо выключить его на время установки пакетов).

После загрузки пакета, нам будут доступны все входящие в него функции. Например, функция tsdisplay () , использовать которую можно так:

tsdisplay (x )

Она построит нам три графика, которые мы обсудим в главе «Инструментарий прогнозиста ».

Помимо пакета forecast я достаточно часто для различных примеров использую пакет Mcomp . Он содержит ряды данных из базы «M-Competition». Поэтому рекомендую вам его тоже установить.

Очень часто нам будут нужны не просто наборы данных, а данные класса «ts» (временной ряд). Для того, чтобы из любой переменной сделать временной ряд, нужно выполнить следующую команду:

x < - ts (x , start = c (1984 , 1 ) , frequency = 12 )

Здесь параметр start позволяет указать дату, с которого начинается наш временной ряд, а frequency задать частоту данных. Число 12 в нашем примере указывает на то, что мы имеем дело с месячными данными. В результате выполнения этой команды мы трансформируем наш вектор «x» во временной ряд месячных данных, начинающийся с января 1984-го года.

Публикации по теме