Учимся работать в среде R: практическое руководство по Rgui

Оболочка Rgui Эта статья в первую очередь будет интересна тем, кто хочет поработать в R, но пока не знает, с чего начать (о том, что такое R и чем он отличается от других статистических программ, можно прочитать здесь). Сегодня мы рассмотрим, как установить R на свой компьютер, из чего состоит стандартная графическая оболочка Rgui и как в ней работать. Учиться работать в R мы будем на примере реальных данных из исследований: узнаем несколько функций для отображения описательной статистики данных, построим графики и проведем дисперсионный анализ. Итак, приступим!


Как установить R (Rgui) на свой компьютер?

Я советую начинать знакомство с R в стандартной графической оболочке Rgui. Стандартной она называется потому, что встроена в ядро разработки языка программирования R и является неотъемлемой его частью. Rgui имеет хорошую документацию и освещенность в интернете: большинство русских и зарубежных онлайн-курсов, справочников и учебников написаны именно для нее. В добавок, минималистичный интерфейс буквально "заставляет" пользователя активно работать в командной строке, использование которой является необходимым навыком при проведении статистических тестов, построении высококачественной графики и создании собственных программ.

Установка Rgui довольна проста и не занимает много времени. Напомню, что R - это бесплатный продукт, который можно установить как на Windows, так и на MacOSx и Linux дистрибутивы. Ниже приведены инструкции по установке на различные операционные системы. На официальном сайте (https://cran.r-project.org/) находим свою операционную систему и кликаем на соответствующую ссылку.

Установка Rgui

Windows

  1. В списке "subdirectories" выбираем "base".
  2. В открывшемся окне кликаем на ссылку "Download R 3.2.3 for Windows".
  3. Ожидаем окончания загрузки установочного файла, открываем его, выбираем язык и следуем инструкциям "мастера установки".

MacOSx

  1. Скачиваем установочный файл с последней версией R.
  2. Открываем загруженный пакет данных, принимаем лицензионное соглашение и указываем диск, на который установится Rgui.

Linux

Пользователи Linux устанавливают Rgui при помощи команд в терминале. Обращаю Ваше внимание, что для разных дистрибутивов используется разный алгоритм команд. Список команд и детальные инструкции по установке R на Debian, Redhat, Suse и Ubuntu можно найти на официальном сайте R.


Из чего состоит оболочка Rgui и как в ней работать?

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

Rgui внешний вид

Меню

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

Панель инструментов

Состоит из ряда графических кнопок ("Сохранить", "Копировать" и других), расположенных под областью меню. Функционально кнопки панели инструментов копируют опции меню, но отличаются от них доступностью в один клик.

Консоль и Графический модуль

Консоль - это рабочая область R, внизу которой находится командная срока. Именно туда пользователь вводит команды, и там же видит результат. Другими словами, командная строка работает по принципу "вопрос-ответ". Ответ консоли может выглядеть как описательная статистика для таблицы, результат статистического теста или моделирования. Однако, при необходимости визуализации данных результат будет находиться не в консоли, а в отдельном окне, называемым графическим модулем. Кликнув на модуль, Вы можете сохранить график как растровое (.jpeg, png, .tiff) или векторное (.svg, .eps) изображение.

Скриптовое окно

Данная область просто незаменима при написании собственных алгоритмов команд, называемых скриптами или скриптовыми программами. Я рекомендую все команды писать именно в скриптовом окне и лишь потом переводить их в консоль (для этого воспользуйтесь комбинацией клавиш CTRL+R). На это есть две причины. Во-первых, если Вы пользуетесь только консолью и совершили ошибку в предыдущих командах, то Вам придется перезапустить все команды заново, что достаточно проблематично. Во-вторых, записав алгоритм команд в скриптовом окне, Вы можете сохранить его как скрипт (текстовый файл с разрешением .R). Позже можно продолжить работать со скриптом, загрузив его через меню Rgui или же поделиться этим файлом с коллегами. Также в этом окне Вы можете запускать и редактировать чужие скриптовые программы.


От теории к практике

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

  • описательная статистика данных;
  • визуализация данных в среде R;
  • статистический тест.

Специально для практики в R существует встроенный пакет "datasets" с таблицами данных из реальных исследований. Я предлагаю проанализировать данные по влиянию кормовой диеты на вес цыплят.

Описательная статистика

Как я уже говорил выше, все команды в Rgui желательно писать в скриптовом окне и лишь потом переводить в командную строку. Поэтому в панели "Меню" откроем вкладку "Файл" и выберем "Новый скрипт". В появившемся скриптовом окне напишем нашу первую команду, активирующую пакет "datasets" в среде R: library (datasets). После чего переведем в консоль при помощи комбинации "CTRL R" или простым копированием текста.

Скриптовое окно RguiТеперь познакомимся с таблицей данных "chickwts", которую мы будем анализировать. Для этого просто напишем ее имя в скрипт и затем, как обычно, переведем в консоль: chickwts. В консоли Вы увидите ответ командной строки, отображающий всю таблицу данных. Как Вы можете видеть, она состоит из двух колонок: "weight" (вес) и "feed" (корм), и 71 строки с данными. Однако, когда таблица данных объемная, то такой способ отображения данных не очень удобен. При помощи команды head можно ограничиться показом первых шести строк. После команды в скобках мы пишем имя объекта, к которому будет применяться команда: head (chickwts).

Так как данные бывают разных типов, то также можно воспользоваться функцией str, которая покажет структуру таблицы в консоли: str (chickwts). В нашем случае колонка weight содержит числовой тип данных, а колонка feed - 6 категорий, обозначающих разные кормовые диеты.

Другой полезной опцией для отображения информации об объекте является команда summary. Она выводит описательную статистику  для каждой колонки (для числовых данных: минимум, 1-й квартиль, медиана, среднее, 3-й квартиль и максимум; для категориальных: количество наблюдений для каждой категории). Воспользуемся этой функцией: summary (chickwts). На рисунке Вы видите результаты всех наших команд в консоли слева и скрипт справа.

Описательная статистика R
Чтобы сделать комментарий в скрипте, используйте хэштег (#). R игнорирует все, что будет стоять за этим знаком в строке. Комментирование кода является важными инструментом, особенно в работе над общим проектом. Поэтому если есть хоть какая-то неясность в коде, комментируйте ее коротко и ясно (даже для самого себя).

Визуализация данных

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

Гистограмма RguiБыло бы интересно узнать, как распределен вес цыплят из нашей таблицы данных. Вероятно, самым простым решением будет создание гистограммы. Для этого нужно ввести команду hist, а внутри скобок написать название данных и определить дополнительные параметры, такие как col цвет, main название графика и прочее. Например:

hist (chickwts$weight,
main = "Гистограмма веса цыплят",
col = "green", xlab = "Вес (г)")

Знак доллара ($) используется для того, чтобы сказать R, что данная колонка weight находится внутри таблицы chickwts.

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

boxplot (chickwts$weight ~ chickwts$feed, col = "light blue", 
main = "Диаграмма веса цыплят при различных диетах",
xlab = "Вид корма", ylab = "Вес (г)")

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

Статистический анализ

Так как распределение внутри каждой группы близко к нормальному (исходя из диаграммы), то для оценки статистической значимости этих различий мы можем воспользоваться параметрическим статистическим методом, таким как дисперсионный анализ (ANOVA). Для этого мы создадим статистическую модель и назовем ее nash.test:
nash.test <- lm (chickwts$weight ~ chickwts$feed)

Из кода видно, что мы создаем линейную модель зависимости веса (chickwts$weight) от корма (chickwts$feed). При помощи уже известной нам функции summary выводим описание нашей статистической модели в окно консоли: summary (nashtest).

Дисперсионный анализ R
Как видно из результатов дисперсионного анализа, вес цыплят на кормовой диете casein статистически отличается от других кормов, за исключением корма sunflower (Pr = p-value): цыплята, потребляющие casein, набирают массу быстрее (смотрите параметр Estimate). Вы можете продолжить анализ, используя тест Тьюки (TukeyHSD) и другие стат. методы, но к сожалению, это выходит за рамки нашей статьи.

Заключение

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

От себя могу порекомендовать в дальнейшем активно пользоваться R в паре с Google, т.к. вопросов будет много, но к счастью, большинство из них хорошо освещены в интернете. И конечно, я всегда рад ответить на Ваши вопросы в комментариях. Так что спрашивайте, не стесняйтесь! Также, если Вы считаете, что эта статья может быть полезной и интересной для Ваших знакомых, то поделитесь ей с помощью социальных кнопок, расположенных ниже.

Комментарии: 3
  1. Татьяна

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

    1. Samoedd (Автор записи)
      https://samoedd.com/

      Привет, Татьяна!

      В идеале, для каждой кормовой группы нужно провести статистический тест на нормальность, например тест Шапиро (shapiro.test). Или же построить график qqplot для каждой группы и проанализировать его на отклонения. Подробнее о нормальности данных я напишу в другой статье, посвященной тесту Стьюдента и дисперсионному анализу (t-test и ANOVA).

      Однако, иногда можно сделать предположительное заключение о нормальности исходя из boxplot графиков или функции summary. Если значения медианы и средней для конкретной группы близки друг к другу, или ящик с усами (boxplot) выглядит симметрично относительно средней линии, расположенной внутри ящика, то можно предположить, что распределение данных близко к нормальному.

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

      Спасибо за хороший вопрос!

    2. Татьяна

      Спасибо, теперь понятно! Отличная статья! Ждем новых

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *