Блог им. AlexeyT

Визуализация результатов ЛЧИ в R

     У многих возникают ситуации, когда нужно оценить визуально какие-либо зависимости. В большинстве случаев для этих целей используется Excel с построением временных рядов, не заслуженно обделяя многие другие гораздо более показательные диаграммы. Существует альтернативное средство более быстрого и удобного анализа описательных статистик с разнообразными диаграммами (средствами Excel многие из них не построить) и возможностью создания web-приложения для общего доступа. Касаться настоящей статистики с различными методами анализа данных не буду, только базовая описательная  статистика (без проверки тестов  и даже p-значения не будет) и разные диаграммы. В этой статье я опишу один из вариантов того, как можно проанализировать такую информацию, представить её в виде интерактивных диаграмм, и немного опишу про web-приложения. А чтобы было веселее смотреть на диаграммы, приведу их на примере финальной статистики ЛЧИ-2015. Как следует из названия статьи – делать это буду на R. Сразу обращаю внимание, учитывая результаты некоторых «уникумов» (со сверх большими стартовыми или доходами), многие графики не очень показательные (да и с разрешением здесь не очень получилось). В таком случае надо преобразовывать оси (хотя на первой диаграмме стартовая уже логарифмическая), или исключать эти «выбросы» или же разносить результаты на разные панели, или делать бегунок по осям, но в первом приближении и для ознакомления с разными диаграммами и так пойдет. Но если кому интересно, могу данные диаграммы в отличном качестве (большего размера) сделать в web-приложении Shiny и предоставить общий доступ (в публичном облаке Shinyapps).

Последовательность выполнения визуального анализа данных:

I.                   Загрузка данных

Загрузка информации осуществляется базовой функцией read.table с необходимыми параметрами (разделителем столбцов, разделитель дробной части, строка заголовок).

 II.                Упорядочение данных

Иногда необходимо упорядочивать данные, и в зависимости от поставленных целей, разный тип представления данных (узкий – переменные одной размерности указаны в одном столбце, но с номинальными параметрами в других столбцах, или широкий – каждая переменная в разных столбцах)  может быть удобнее другого. Например, для построения диаграмм пакета ggplotудобнее узкий формат, но и с широким форматом никаких сложностей. Удобными средствами конвертирования таблиц в разные форматы и манипуляций с данными  располагают пакеты tidyr и dplyr.

 III.             Основные параметры описательной статистики

Основными параметрами являются минимальное (Min)и максимальное (Max) значение переменной, ее медианы (Median), ее арифметического среднего (Mean), первый (1st Qu.) и третий (3rd Qu.) квартиль. Все эти параметры могут быть посчитаны функцией summary(), а используя ее совместно с функцией tapply(), возможно получить результаты отдельно по любой наблюдаемой переменной с определенными условиями, или же для большей гибкости можно использовать функцию describe() (describeBy()) которая выводит большую статистическую информацию, но позволяет удобно группировать исходные данные.

 

 IV.             Диаграммы

«… нет статистического метода более мощного,

чем хорошо подобранный график»

Дж. Чемберс

 

Одним из основных достоинств R является разнообразие типов диаграмм, которые он может построить. Диаграммы являются неотъемлемой частью разведочного анализа данных, позволяютвыявлять закономерности и тренды в сложных наборах данных. В данном разделе я приведу восемь основных концептуально различных диаграмм, краткое описание и пример их использования. Разумеется, при каждом исследовании выдвигается свое предположение о переменных, при котором использование конкретных диаграмм более показательно, и не всегда необходимо использовать их все, но в каких-то случаях и этого набора будет недостаточно (вообще в R более 1 000 диаграмм в разных пакетах). Многие диаграммы имеют весьма гибкие параметры, позволяющие настраивать результат диаграммы в требуемом виде, так и в оформлении (оси, подписи осей, название, цвета).

1. Временной ряд

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

 2. Точечные диаграммы (диаграммы рассеяния)

Данные диаграммы представляют собой графики, на которых точкииспользуются для отображения значений некоторыхколичественныхпеременных, которые дополнительно могут быть разбиты на группы в соответствии с уровнями некоторых номинальных (или количественных) переменных (данные группы определяются цветом и/или размером). В данном примере изображаются зависимость доходности (в %) и стартовой суммы (руб.) по всем брокерам, и разбитые на группы (тип рынка —  зашифрован цветов, есть возможность зашифровать еще одну переменную – размером, например кол-во сделок). Таким образом, на данной диаграмме отображаются сразу 3 (а можно и 4) разных переменных.

Визуализация результатов ЛЧИ в R

 3. Панельные (категоризованные) графики

Анализируемые данные разбиваются на отдельные категории, и для каждой из них строится своя диаграмма (панель) определенного типа. Все эти диаграммы затем объединяются на одном рисунке (вертикально, горизонтально, сеткой), что существенно облегчает выявление статистических закономерностей и структур в данных. В данной диаграмме используется пример №2, но дополнительно на панели разбиты все участвующие брокеры. И еще дополнительно появляется возможность добавить одну группу (доп. переменную) — размер точки, тем самым увеличить количество независимых переменных до пяти, на единой диаграмме, не потеряв при этом наглядности.

Визуализация результатов ЛЧИ в R

 4. Гистограмма (плотность) распределения

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

Визуализация результатов ЛЧИ в R

 5.  Диаграммы размахов (боксплот, «ящик с усами»)

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

 Визуализация результатов ЛЧИ в R

 6.  Матричный график (парные диаграммы рассеяния)

Данный график представляет собой семейство точечных диаграмм (п.2), отражающих попарно зависимость значений каждой переменной от каждой прочей переменной. В данном примере показаны попарные зависимости 4 (кол-во сделок, стартовая, доход, доходность) переменных, также возможно добавить еще доп. переменную, раскрасив один из факторов цветом.

Визуализация результатов ЛЧИ в R

7. График параллельных координат

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

Визуализация результатов ЛЧИ в R

 8. Пиктограммы (звезды, лица Чернова)

Также для анализа агрегированных многомерных данных могут использоваться разные пиктограммы (звезды, лица Чернова).

Идея таких диаграмм состоит в том, что люди хорошо различают объекты, в данном случае лица (а не набор десятков значений из 10-20 цифр).  В приведенном примере каждое лицо соответствует одному брокеру, который в агрегированном (медианном) виде отражает характеристики значений признаков по всем его участникам (стартовая сумма, кол-во сделок, доход, доходность). Беглый взгляд на данную диаграмму позволит быстро определить, значимо ли отличаются (совпадают) результаты участников брокеров, при детальном обзоре (черт лиц) будет понятно, в каких признаках (каждое черта лица – отдельный признак исходного набора данных) сходство, а в чем различие. И сразу видно, чей брокер самый грустный;). Порядок признаков тоже имеет значение, поэтому лучше выбирать очередность столбцов так, чтобы потом было понятнее, что важнее — глаза или рот;).

Визуализация результатов ЛЧИ в R

 Помимо вышеперечисленных графиков, есть другие не менее полезные (несущие многую информацию), о которых также стоит помнить – тепловая карта (в ней цветом показываются значения одной из переменных в соответствии со значениями осей), мозаичный график (прямоугольниками отображаются количество номинальных (факторных) переменных), поверхности ядерной плотности (это плотность, но уже по 2 переменным), но по результатам ЛЧИ в них нет резона. Про очевидные, но совершенно не показательные – круговые, столбиковые, которые несут в себе минимум информации на единицу площади, не буду и упоминать.

 V.  Динамичное управление (Shiny)

Весь код по загрузке, преобразованию данных и изображению диаграмм, пишется в R-Studio, удобной графической оболочке к R, этого вполне достаточно для получения быстрых результатов и написания отчетов. Но может возникнуть ситуация в гибком, динамическом средстве настройки результатов (выбор осей, диаграмм, масштабирование, сохранение результатов в графические файлы и многое другое), и/или в случае демонстрации результатов широкому кругу. В таком случае достаточно удобно привязать существующий код (или сразу писать новый) к элементам ввода-вывода web-приложения с использованием пакета Shiny. Shiny — это пакет (фреймворк) для быстрой разработки веб-приложений. Отличное решение для скрытия кода и демонстрации только «крутилок-вертелок» и картинок. Помимо реализации исключительно на базовых элементах Shiny есть возможности настройки, стилизации приложения используя непосредственно как HTML, CSS, так и JavaScript и jQuery.

 

 VI. Распространение результатов

Как в случае использования Shiny, так и без него, весь код R – находится в текстовых файлах с расширением R. Единственное отличие в случае Shiny – таких файлов два– ui.R (описание элементов ввода-вывода) и server.R (все вычисления) (хотя можно делать Shiny приложения и в одном файле, но по мне удобнее оставлять два). Следовательно, распространение результатов следующее:

Для пользователей R

  1. Непосредственное распространение файлов R (отдельно или в архиве)
  2. Размещение файлов R, используя Github. Для получения файлов, в R достаточно выполнить одну команду и файлы будут загружены локально, и появляется возможность их запустить.

Для всех (в этих случаях необходимость иметь установленный R отсутствует, запуск Shiny – приложения осуществляется из браузера):

1)  размещение Shiny приложения на своем локальном Shiny сервере

2) размещение Shiny приложения в облачном хостинге (на серверах R-Studio)

 

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

★29
12 комментариев
Круть.
Поделитесь ссылкой проект в Github. Для себя тоже делал некоторые наработки для анализа и визуализации данных ЛЧИ в R через связку blotter+rusquant.
avatar
r0man, нет в github, всё на «коленке» набросал по-быстрому, это я вообще сделал не для анализа, а просто для демонстрации разных диаграмм в R, для просвещения так сказать
avatar
AlexeyT, хорошей и доступной визуализации данных ЛЧИ в онлайн практически нет. Даже г-н Reshpekt Fund Russia сокрушался по этому поводу при подведении итогов. На своей коленке я набросал небольшой скрипт, который
1. по идентификатору участника тащит все сделки ЛЧИ
2. Через rusquant загружает данные по инструментам, которые торговал участник
3. Затем через blotter прогоняются все сделки и на выходе имеем полную статистику по все сделкам.
4. Дальше можно визуализировать статистику средствами самого blotter или придумывать свои красивые в ggplot2

В принципе, уже все готово для приложения в Shiny, да только руки не доходят.
avatar
r0man, здорово!, да у Вас же 95% сделано, а накидать элементы в Shiny, да привязать код к элементам, это на полчаса работы.

P.S. хотя видимо интерес у участников (читателей) что-либо посмотреть, уже пропал (видно по этому посту), это надо делать во время ЛЧИ;)
avatar
AlexeyT, хороша ложка к обеду)).
avatar
почему же я часто возвращаюсь к результатам ЛЧИ
avatar

теги блога AlexeyTikhonov

....все тэги



UPDONW
Новый дизайн