Язык r библиотеки статистика

Среда статистических вычислений R: опыт использования в преподавании

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

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

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

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

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

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

Первые две строчки задают равномерное распределение точек в прямоугольнике [0,0.5]x[0,3], затем отбираются те точки, которые попали под график экспоненциальной плотности 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 данные с любимого HabraHabr’а и провести, собственно то, для чего и был создан язык R, а именно: статистический анализ.

Ожидается, что читатель достаточно самостоятелен, чтобы самому ознакомиться с основными конструкциями языка. Для этого как никак лучше подойдут ссылки в конце статьи.

Подготовка

Получаем данные

Чтобы получить DOM объект документа полученного из интернета достаточно выполнить следующие строчки:

Здесь мы использовали поиск элементов и атрибутов с помощью xpath.
Далее крайне рекомендуется сформировать из полученных данных data.frame — это аналог таблиц базы данных. Можно будет делать запросы разного уровня сложности. Иногда диву даешься, как элегантно можно сделать в R ту или иную вещь.

После формирования data.frame необходимо будет подправить полученные данные: преобразовать строчки в числа, получить реальную дату в нормальном формате и т.д. Делаем это таким образом:

Так же полезно добавить дополнительные поля, которые вычисляются из уже полученных:

Здесь мы всем известные сообщения вида «Всего 35: ↑29 и ↓6» преобразовали в массив данных по тому, сколько вообще было произведено действий, сколько было плюсов и сколько было минусов.

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

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

Здесь мы используем системную функцию Sys.sleep, чтобы не устроить случайно хабраэффект самом хабру:)
Данную функцию предлагается использовать следующим образом:

Таким образом мы скачиваем все страницы с 10 по 100 с паузой в 5 секунд. Страницы до 10 нам не интересны, так как оценки там еще не видны. После нескольких минут ожидания все наши данные находятся в переменной posts. Рекомендую их тут же сохранить, чтобы каждый раз не беспокоить хабр! Делается это таким образом:

А считываем следующим образом:

Ура! Мы научились получать статистические данные с хабра и сохранять их локально для следующего анализа!

Анализ данных

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

Пользователи хабра значительно охотнее плюсуют, чем минусуют.

Это видно по следующему графику. Заметьте, на сколько «облако» минусов равномернее и шире, чем разброс плюсов. Корреляция плюсов от количества просмотров значительно сильнее, чем для минусов. Другими словами: плюсуем не думая, а минусуем за дело!
(Прошу прощения за надписи на графиках: пока не разобрался, как выводить их правильно на русском языке)

Действительно есть несколько классов постов

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

Как вы можете заметить, есть выраженные пики в районе 0.1, 0.2 и 0.25. Предлагаю читателю самому найти и «назвать» эти классы.
Хочу заметить, что R богата алгоритмами для кластеризации данных, для аппроксимации, для проверки гипотез и т.п.

Полезные ресурсы

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

Считаю, что такие языки как R, haskell, lisp, javascript, python — должен знать каждый уважающий себя программист: если не для работы, то как минимум для расширения кругозора!

Источник

Я сам изучал R в течение последних нескольких недель.

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

Мотивация

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

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

Я очень советую именно R по многим причинам.

R становился всё известнее и известнее, пока не стал одним из самых популярных языков программирования. Его создали статистики (специалисты по статистике) для статистиков. Он хорошо сочетается с другими языками программирования, например с C++, Java, SQL. Более того, его воспринимают как язык, который отлично подходит для работы со статистикой. А в результате большое количество финансовых организаций и крупных вычислительных компаний применяют R в своих исследованиях и разработках.

Python — язык для решения задач общего характера, а R — язык программирования для аналитики.

Задачи и содержание

Этот текст объяснит следующие ключевые области языка R:

Приступим же!…

Я буду объяснять язык программирования, начиная с основ, в таком стиле, чтобы вам было легче разобраться. Стоит сказать, что ключ к прогрессу в разработке — это постоянная практика. Чем больше, чем лучше.

Этот материал должен стать целостной базой для вас — читателей.

1. Что же такое R?

Преимущества R:

Вдобавок к плюсам, о которых я написал выше:

Ограничения R:

Также есть и некоторые ограничения:

Давайте уже начнём его изучать

А теперь я представлю вам язык R в формате кратких описательных разделов.

2. Как установить R?

Можете установить R на эти платформы:

Первый шаг — загрузите R:

3. Где писать на R?

Есть разные графические интерфейсы. Очень советую R-Studio.

Загрузите десктопную версию RStudio:

Если вы работаете на Windows, в процессе установки R Studio по умолчанию попадет сюда:

4. Что такое пакет R и скрипт R?

Это два ключевых компонента в языке. В этом разделе поверхностно расскажу о концепциях.

Пакет R

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

Специалисты по данным могут писать и делиться своим кодом с другими. Будь это их собственный код с нуля или расширение пакетов других авторов. Пакеты позволяют специалистам по данным переиспользовать код и распространять его среди остальных.

Пакеты созданы, чтобы контейнировать функции и наборы данных.

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

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

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

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

Чтобы загрузить пакет, напечатайте:

Чтобы пользоваться функциональностью пакета, напишите в его имени::название функции.

Например, если мы хотим применить функцию “AdBCDOne” из пакета “carat”, можем сделать следующее:

R Script

Можем создать много скриптов в пакете.

В качестве примера, если вы создали два скрипта R:

И если вы хотите вызвать функции publication.R в blog.R, то вам стоит пользоваться командой source(“target R script”) . Она импортирует publication.R в blog.R:

Создаём пакет скрипта

Процесс относительно простой. В сущности вот, что нужно сделать:

Очень важно разобраться в разных типах данных и структурах в R. Так вы сможете пользоваться языком эффективно. В этом разделе я опишу концепции.

Типы данных

Вот базовые типы данных в R:

Структуры данных

В R достаточно много структур данных. Привожу самые важные:

Я расскажу обо всех этих типах и структурах данных, так что начинаем строить фундамент.

6. Как объявлять переменные?

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

Переменная нужна, чтобы сохранять значение, которое может меняться в вашем коде.

Чтобы понять, важно запомнить, что такое окружение в R. В сущности окружение — это место, где хранятся переменные. Это набор пар, где первый элемент — это символ (переменная), а второй — её значение.

Окружение имеет иерархическую структуру (похожую на дерево). Следовательно, окружение может иметь родителя и множество дочерних ответвлений. Корневое окружение — это окружение без родителя.

Надо декларировать переменную и присвоить ей значение при помощи следующего:

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

Чтобы создать набор целых чисел, мы можем сделать следующее:

1 — первое значение, а 5 — последнее значение из набора.

В результате выведутся числа от 1 до 5.

Помните, что IDE R-Studio отслеживает переменные:

Функцию ls() можно писать, чтобы показать переменные и функции в текущем окружении.

7. Как писать комментарии?

Комментарии нужны в коде, чтобы помогать понимать его тем, кто будет с ним разбираться. Читателям, другим специалистам по данным и самому себе. Бывает и такое.

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

Можем добавить комментарий одной строкой:

Можем добавить комментарий в несколько строк при помощи двойных кавычек:

«комментарий на
несколько строк
«

Памятка: в R-Studio выделите код, который вы собираетесь закомментировать и нажмите сочетание клавиш Ctrl+Shift+C.

Так вы автоматически сделаете нужную часть программы комментарием.

8. Что такое векторы?

Вектор считается одной из самых важных структур данных в R. В сущности вектор представляет собой набор элементов, где у всех элементов должен быть одинаковый тип данных: например, только логический (истинно/ложно — TRUE/FALSE), числовой, знаковый.

Также можем создать пустой вектор:

По умолчанию тип вектора логический. По команде ниже выведется слово “logical”, так как это и есть тип данных вектора:

Чтобы создать вектор со своими элементами, пишите функцию конкатенации (объединения строк):

Результат выполнения этого кода будет таким:

[1] “Farhad”
[2] “Malik”
[3] “FinTechExplained”

Если мы захотим найти длину вектора, можем воспользоваться функцией length():

Результат вывода строки выше будет 3. Потому что в заданном векторе x 3 элемента. Чтобы добавить элементы в вектор, можем комбинировать элемент с вектором.

Например, чтобы добавить слово “world” к началу вектора с одним элементом слова “hello”, нужно написать так:

В результате напечатается “world” “hello”.

Если мы смешиваем типы элементов, то R в свою очередь будет приспосабливать тип вектора в ответ на это. Тип вектора (режим) будет становиться таким, каким должен быть по своему расчёту, чтобы подходить этому вектору:

И хотя второй элемент имеет логическое значение, тип будет выведен как “character” (символ).

Над векторами можно производить операции.

Для примера, вот вам умножение скаляра на вектор:

В результате напечатается 2,4,6.

Также можем сложить два вектора:

Результат будет: 5 7 9

Если векторы — это знаки и мы хотим сложить их вместе, то:

Error in x + y : non-numeric argument to binary operator (ошибка в выражении x + y: нечисловой аргумент для бинарного оператора).

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector