Как построить график в r studio

Обновлено: 04.07.2024

Пакет ggplot2 предназначен для построения двумерных графиков и диаграмм.

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

Основные кирпичики графического конструктора (первые три их них являются обязательными составляющими):

  1. data - data.frame , содержащий данные для представления.
  2. aes() - задает связь между данными и их представлением, определяет какие переменные отображаются на осях, какие переменные отвечают за цвет и форму данных, представленных на графике.
  3. geom_ - группа функций, отвечающих за то что, вы непосредственно видите на графике (точки, гистограммы, линии, текст и т.п.).
  4. scale_ - группа функций, соотносящих реальные данные с их графическим представлением. Это может быть цвет, форма, размер, диапазон осей координат и т.п.
  5. stat_ - группа функций, добавляющих на график различные статистические показатели, например, такие как, среднее значение по группе, линейная или иная аппроксимация данных и т.п.
  6. coord_ - группа функций, которая задает систему координат для представления данных на плоскости. Это могут быть обычные картезианские координаты, полярные координаты, или географические координаты для представления соответствующих данных.
  7. facet_ - группа функций, которые позволяют группировать графики по заданному параметру и представлять результаты в виде набора графиков (сетки из графиков).
  8. theme - группа функций, позволяющих менять оформление графика, например размер и цвет шрифта координатных осей и делений на них, фон графика и всего рисунка и т.п.

Подготовка данных для визуализации

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

Округлим результаты для лучшего восприятия данных

Добавим к этим данным наблюдаемые значения растворимости

И добавим колонку в которой укажем, какому набору принадлежат данные кросс-валидации или тестовой выборке.

Объединим эти два набора данных в один. Поскольку порядок следования данных в колонках совпадает можно применить функцию объединения по строкам rbind

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

Задание.

Нарисуем графики распределения предсказанных и наблюдаемых значений для каждой из моделей. По мере продвижения к цели будут продемонстрированы некоторые возможности ggplot2 .

Пример точечной диаграммы для одной модели

Начнем с самого простого. Нарисуем точечную диаграмму распределения наблюдаемых и предсказанных значений для модели gbm . Т.е. используем три обязательных компонента data , aes и geom_ .

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

У нас на графике совместно представлены данные для кросс-валидации и внешнего теста, разделим их по цвету точек.

Добавим дифференциацию точек по форме, задав соответствующее условие.

Если мы хотим увеличить размер точек (задать фиксированный размер), то для этого используются параметры функции geom_point .

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

Добавим на наш график диагональную линию соответствующую идеальному случаю прогноза.

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

Добавляем stat_

Добавим на график элемент stat_ - в нашем случае это будет прямая представляющая собой линейную зависимость предсказанных и наблюдаемых значений. Обратите внимание, что мы к ранее созданному объекту класса ggplot может добавлять новые элементы (режим конструктора!).

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

В дальнейшем мы будем использовать полный вызов функции.

Удалим из аппроксимирующей зависимости отображение диапазона ошибки аппроксимации, отобразим линии на всем диапазоне графика и представим их цветом соответствующем набору данных.

scale_

Применим какую-либо функцию из семейства функций scale_ , например, изменим цветовое представление графика.

Выглядит не очень удачно. Зададим цвета самостоятельно.

Цвет можно определять также и соответствующим RGB кодом цвета.

Соответствующими функциями scale_ можно инвертировать оси координат.

Изменение координатных осей

Координатные оси можно поменять местами при необходимости

Управление отрисовкой отдельных элементов диаграммы - theme

Управлять отрисовкой отдельных элементов можно использую функции семейства theme_ .

В пакете ggplot2 предусмотрен ограниченный набор функций theme_ . Чтобы самостоятельно управлять отрисовкой отдельных элементов графика следует воспользоваться функцией theme .

Например, изменим цвет, положение, размер шрифта и угол наклона подписей по оси Х.

Изменим цвет рамки и заливки для области построения диаграммы.

Удалим с диаграммы все линии сетки (основные и промежуточные)

facet_

Разделим диаграммы для двух наборов данных.

Пример построения гистограмм

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

Зададим ширину каждого столбца в гистограмме

Раскрасим столбцы в соответствии с выборками

Добавим для большей привлекательности белые линии в качестве границ

Разделим гистограмму на две в соответствии с выборками.

Чтобы расположить их друг под другом зададим параметр ncol

Можно изменить диапазон значений по каждой или по обеим осям такой диаграммы. Например, зададим, чтобы диаграмммы по оси Y имели независмые шкалы.

Диаграмма плотности распределения

Вместо гистограмм можно представить распределение данных в виде диаграммы плотности распределения.

Точечные диаграммы для всех моделей и выборок

Отобразим в виде точечных диаграмм наблюдаемые и прогнозируемые значения для каждой модели и для каждого набора данных одновременно.

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

Теперь можно рисовать

Пример столбчатой диаграммы

Другой пример - покажем в виде столбчатой диаграммы ошибки моделей (MSE) для кросс-валидации и внешнего теста.
Предварительно вычислим ошибку для каждой точки и построим диаграмму с одновременным подсчетом MSE модели.

Сохранение диаграмм

Для этого используется функция ggsave , которая имеет много параметров, позволяющих управлять результатом.

Функция сохранения поддерживает различные форматы файлов (png, tiff и т.д.).

R — очень мощный инструмент для работы со статистикой: от предварительной обработки до построения моделей любой сложности и соответствующей графики.

Простой гугл-запрос выдаст большое количество литературы по тому, как «легко и быстро» использовать R. Здесь будут и огромные книги, и многочисленные заметки на Stack Overflow, которые, на первый взгляд, кажутся бесконечной кладезью примеров, из которой каждый в два счета соберет необходимый код для решения конкретной задачи. Однако, на деле это совсем не так. Материалов, которые бы рассказали, например, как построить простой график «с нуля» с готовыми рецептами для решения затруднений, которые возникнут по ходу решения этой задачи, очень мало.

Для решения практических задач нужны конкретные пошаговые инструкции, а не подробное описание всей мощи того или иного пакета. Кроме того, готовые учебные примеры (те же ирисы) зачастую малополезны, поскольку сразу пропускают один из самых важных этапов работы со статистикой — предварительный сбор и обработку самих данных. А ведь именно на эту работу зачастую уходит чуть ли не бóльшая часть всего времени! Отдельной проблемой оказывается создание графиков, которые соответствуют формальным, а чаще — неформальным, — стандартам определенной профессиональной среды.

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

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

Базовая настройка R

Для работы нужна стандартная связка: R + RStudio. Они доступны бесплатно для всех распространенных платформ. Сначала устанавливается R, затем RStudio. Здесь проблем обычно не возникает.

Перед работой лучше сразу сохранить новый скрипт где-нибудь в своей файловой системе и сразу установить рабочую директорию R в папку, где хранится скрипт (меню Session — Set Working Directory — To Source File Location). Последнее замечание важно, потому что иначе запуск любого внешнего или собственного скрипта после перезагрузки RStudio не случится. По какой-то причине RStudio по умолчанию не делает этого, что было бы логично.

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

Наиболее широкой используемой библиотекой для графики в R является пакет ggplot2, который будем использовать и мы.

Также стоит сразу установить пакеты readxl (для чтения файлов .xls, .xlsx) и dplyr (для работы с массивами), scales (для работы с различными шкалами данных), Cairo (для вывода графики из ggplot в файлы). Всё это можно сделать одной командой:

Сбор и подготовка данных

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

Вопросов здесь два:

  1. Как выбрать правильный формат файла?
  2. Как лучше всего структурировать данные?

С форматом дилемма проста: CSV против Microsoft Excel (не так уж важно, «новый» .xlsx старый» .xls). Многие считают, что CSV выигрывает за счет простоты (по сути, это обычный текстовый файл, в котором значения столбцов отделяются запятой или точкой с запятой) и скорости. Но я выбираю Excel в силу двух причин: во-первых, в таком файле можно хранить несколько таблиц одновременно на разных вкладках, во-вторых, что более важно, не приходится задумываться о выборе правильного разделителя колонок и десятичного знака. Для CSV это часто приходится прописывать вручную в коде R и следить за тем, чтобы файл с данными сохранялся с такими же настройками.

Структурирование данных — вопрос более сложный, требующий базового понимания того, как должны быть устроены базы данных. Если не вдаваться в теорию реляционных баз данных про разные нормальные формы, то таблица данных должна быть избыточной, то есть содержать лишние столбцы. Это нужно для того, чтобы потом уже в скрипте в R иметь возможность гибко отбирать те или иные фрагменты информации для дальнейшей обработки. Например, если мы хотим изобразить примитивный временной ряд, то мы должны сделать колонки, соответствующие всем возможным группировочным признакам. Например, если это ряд ежегодных наблюдений над численностью населения условного города Северовосточинска, то нам понадобятся следующие столбцы: year (год), var (название показателя), value (значение показателя).

year var value
1990 Численность населения 102
1991 Численность населения 103
1992 Численность населения 104

К этому стилю представления информации мы будем приводить любые исходные данные.

Пример

Задача: построить сопоставление динамики объемов лесозаготовки в России, Сибирском федеральном округе и Красноярском крае в 2009—2018 гг.

Данные для этой задачи получить довольно просто: достаточно найти соответствующий показатель в Единой межведомственной информационно-статистической системе. Дальше возникает тонкость. Можно сразу скачать данные в формате .xlsx и затем вручную структурировать их так, как показано выше. К счастью, некоторые источники информации (например, ЕМИСС) позволяют делать это возможностями самого сервиса, что сильно упрощает работу и сокращает время, требуемое для ее выполнения.

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

title location year value
Объем заготовленной древесины Россия в целом 2009 158868,3
Объем заготовленной древесины Россия в целом 2010 173633.7
Объем заготовленной древесины Сибирский ФО 2009 47161.58
Объем заготовленной древесины Красноярский край 2009 12111.48
Объем заготовленной древесины Красноярский край 2010 12078.6

Теперь можно назвать этот лист logging , сохранить всю книгу в файл graphs.xlsx и переходить в RStudio.

Подключаем нужные библиотеки.

Если график готовится для русскоязычного издания, нужно обязательно настроить соответствующую локаль. Самый современный вариант, который будет работать в большинстве случаев — это, разумеется, кодировка UTF-8:

Если система старая (какой-нибудь древний Windows или Linux), то понадобится сначала понять, какая кодировка используется по умолчанию — это всё уже не такая простая задача, которая далека от цели данной статьи.

Теперь нужно загрузить данные в R.

Опция sheet здесь задает имя листа внутри книги Excel, из которого будут загружаться данные.

Построим самый простой вариант требуемого графика.



В принципе, практически «из коробки» получился весьма достойный график, который вполне пригоден для начального анализа изучаемого процесса, но с точки зрения возможной публикации требует еще значительной доработки.

Сначала приведем сам по себе графический стиль к более академическому. В пакете ggplot2 есть несколько готовых базовых тем оформления. Наиболее подходящей для нашего случая можно признать тему theme_classic . В рамках ее настройки можно сразу задать базовый кегль шрифта и его гарнитуру. Мои личные предпочтения принадлежат современной шрифтовой системе PT Sans, PT Serif, PT Mono. Но, разумеется, можно задать более классический Times или Helvetica. Также, у издания, в котором планируется публикация, на этот счет могут быть особые указания. Базовый кегль опытным путем определен как 12 пт.



Далее передвинем легенду из правого поля графика вниз (с помощью инструкции theme ) и одновременно зададим осмысленные названия осям (инструкция labs ). Вдоль оси Y напишем название показателя с единицами измерения («Объемы лесозаготовки, млн куб. м»), а подписи по оси X удалим вовсе, поскольку ясно, что там отмечены годы.



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

Одновременно нужно изменить единицы измерения в надписи:

И сразу немного улучшим стиль изображения, добавив точки для обозначения каждого наблюдаемого значения, для чего допишем инструкцию:

Также можно явно задать стиль самих линий. Логично показатель для России сделать сплошной линией, а для СФО и Красноярского края — разными версиями прерывистых:

Теперь общий код и график выглядят так:



Остается решить более содержательную задачу — повысить информативность нашего графика. Сейчас по нему видно, что в целом показатель для всех объектов наблюдения рос, причем примерно с 2014 года сильнее, чем прежде. Но было бы куда нагляднее, если бы мы изобразили прямо на графике еще и значения в первый и последние годы и, скажем, в пиковом 2011-м. В этом поможет новая инструкция geom_text :

На первый взгляд, выглядит довольно сложно, и надо сказать, что действительно собрать ее было не так просто. Постараюсь объяснить, что здесь происходит. Сама по себе geom_text добавляет на график текстовые надписи. Для этого инструкции необходим набор данных data . Если бы мы указали в нем непосредственно df_logging , то получили бы надписи над каждой точкой. Так делают довольно часто, но для достаточно простых динамических рядов, как наши, такой подход только создаст ненужный визуальный шум, не снабдив нас новой информацией о поведении наблюдаемого показателя. Поэтому мы возьмем только те годы, которые существенны для понимания динамики показателя: 2009 (начало наблюдений), 2011 (локальный пик), 2018 (конец наблюдений). В этом поможет стандартный subset .

Для корректного отображения чисел в соответствии с русскоязычной традицией нам нужна запятая как разделитель целой и десятичной частей ( decimal.mark ), а для отсечения количества знаков после запятой — инструкция digits. Различные эксперименты с ней, в том числе с применением функции round привели к тому, что если нам нужен один знак после запятой, в digits надо передать значение 3 .

Опция check_overlap здесь напрямую не нужна, но может пригодиться в других случаях: это автоматический контроль наложения надписей друг на друга. Опция vjust управляет размещением надписей по вертикали. Значение подобрано, исходя из вкусовых соображений.




Теперь график действительно интересно рассматривать!

Но обнаружилась неожиданная проблема — верхнее правое значение «срезается» размером изображения по вертикали. Решить эту проблему можно разными способами. Я выкрутился с помощью небольшого растяжения шкалы вертикальной оси с указанием явной верхней границы в 250 млн куб. м:



Готово! Итак, итоговый код выглядит так:

Полученное в итоге изображение входит в монографию: Структурная модернизация как фактор повышения конкурентоспособности региона (на примере Красноярского края) / под ред. Шишацкого Н. Г. — Новосибирск: ИЭОПП СО РАН, 2020 (в печати).

Экспорт

Встроенный в RStudio плагин просмотра графиков позволяет экспортировать изображения в несколько форматов без дополнительных команд, буквально в несколько кликов. Проблема в том, что для практических задач этот сервис оказывается практически бесполезным. При сохранении в растровые форматы (.jpg, .jpg), по умолчанию выставляется очень низкое разрешение, поэтому при импорте изображения, например, в Word, оно будет размытым. С векторными .eps или .pdf ситуация откровенно хуже: сохранение происходит либо с ошибками, не позволяющими затем открыть файл, либо сохраняется без возможности использования русскоязычных надписей.

Решением является использование функции ggsave из пакет ggplot .

Если на выходе требуется обычный растровый файл, например, формата .jpg, всё достаточно просто:

Геометрию (опции width и height ) и единицы измерения ( units ) можно и не указывать, но тогда по умолчанию изображение будет экспортировать квадратным, что вряд ли удобно. Поэтому лучше придумать свою пропорцию и необходимый размер и задать эти параметры вручную, как это сделано в вышеприведенной строке кода.

Для последующего использования изображения в бумажных изданиях разумно экспортировать изображение в векторные форматы, чтобы потом при верстке была возможность свободного изменения геометрии изображения. Многие журналы предпочитают формат .eps — его же удобно использовать для экспорта в Word. Нам понадобится уже установленный и подключенный драйвер Cairo:

Файлы будут сохраняться в текущую директорию, в которой расположен скрипт R.

Литературы по графике в R довольно много. Вот несколько примеров, первым из которых является работа автора пакета ggplot:

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

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

Предварительные условия

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

  • Rgui.exe для выполнения команд R
  • Management Studio для выполнения T-SQL
  • googMap
  • Пакет ggmap
  • Пакет mapproj

Создание гистограммы

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

Изображение возвращается в графическом устройстве R вашей среды разработки. Например, в RStudio откройте окно Plot (График). В cредства R для Visual Studioоткрывается отдельное графическое окно.

Построение графика тарифов с использованием функции rxHistogram

Ваш график выглядит иначе?

Это связано с тем, что inDataSource использует только первые 1000 строк. Поскольку упорядочение строк с помощью предложения TOP является недетерминированным без предложения ORDER BY, данные и полученный на их основе график могут отличаться. Конкретно это изображение было создано с использованием приблизительно 10 000 строк данных. Мы рекомендуем поэкспериментировать с разным числом строк, чтобы получить разные графики, и обратить внимание на то, как долго возвращаются результаты в вашей среде.

Создание диаграммы-карты

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

Определите функцию, создающую объект графика R. Пользовательская функция mapPlot создает точечную диаграмму, на которой представлено количество поездок с каждого места посадки. Она использует пакеты ggplot2 и ggmap, которые уже должны быть установлены и загружены.

  • Функция mapPlot принимает два аргумента: имеющийся объект данных, который вы определили ранее с помощью функции RxSqlServerData, и представление карты, переданное из клиента.
  • В строке, начинающейся с переменной ds, функция rxImport используется для загрузки в память данных из ранее созданного источника inDataSource. (Этот источник содержит только 1000 строк; если вы хотите создать карту с использованием большего количества точек данных, выберите другой источник.)
  • При использовании функций R с открытым исходным кодом данные должны быть загружены в кадры данных в локальной памяти. Тем не менее, вызов функции rxImport позволяет осуществлять выполнение в контексте удаленных вычислений.

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

В переменной gc хранится набор координат площади Таймс-сквер в Нью-Йорке.

Строка, начинающаяся с googmap , создает карту с указанными координатами в центре.

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

Данные карты в googMap передаются в виде аргумента в функцию mapPlot, выполняемую удаленно. Это связано с тем, что карты были созданы в локальной среде и их необходимо передать в функцию, чтобы создать график в контексте SQL Server.

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

Если вы используете SQL Server на виртуальной машине Azure, на этом этапе может появиться ошибка. Она возникает в том случае, если заданное по умолчанию в Azure правило брандмауэра блокирует доступ кода R к сети. Дополнительные сведения об устранении этой ошибки см. в статье Установка служб машинного обучения (R) на виртуальной машине Azure.

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




Многие примеры и статьи на этом сайте активно используют язык программирования «R».

R для Mac находится на этой странице.

R для Linux обычно можно установить используя репозитории вашего дистрибутива. Я пользуюсь Debian-based дистрибутивами, в которых стандартная команда для установки R выглядит так:

Набирать это нужно в терминале.

Прелесть R заключается в следующем:

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

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

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

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

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

Общий вид RStudio

Общий вид RStudio

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

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

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

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

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

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

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

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

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

Матрица. Появление.

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

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

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

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

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

Для того, чтобы увидеть содержание любого объекта, находящегося в закладке «Environment», достаточно напечатать его название в консоли:

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

Если вам нужно почитать подробней о какой-либо функции, можно воспользоваться следующей командой:

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

Матрица. Помощь

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

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

Матрица. Помощь 2

Матрица. Помощь 2

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

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

Простейший график в RStudio

Простейший график в RStudio

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

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

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

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

Установка пакетов в RStudio

Установка пакетов в RStudio

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

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

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

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

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

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

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

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

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

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

Это основные элементы R и RStudio, которые нам понадобятся.

P.S. Журнал "Хакер" опубликовал неплохую статью о работе с R. Рекомендую к прочтению.

P.P.S. Достаточно хорошее руководство по R опубликовано на сайте QSAR4U Павлом Полищуком.

P.P.P.S. Много информации об R представлено на официальном сайте.

P.P.P.P.S. А ещё на сайте Coursera есть курсы по R.

Самостоятельная работа

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

Comments (15):

Ivan Svetunkov Ivan Svetunkov

Глубокоуважаемый Сергей Геннадьевич,
Убедитесь, пожалуйста, в том, что пакет Роба подключён. Для этого нужно набрать:
library(forecast)

К сожалению, это надо набирать каждый раз как вы начинаете работу с R.

Надеюсь, это решит проблему.

Ivan Svetunkov

Читайте также: