Как стать автором
Обновить

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

Время на прочтение 2 мин
Количество просмотров 1.5K

Про пакет ComplexUpset в R

Что делаем

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

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

Используемая база данных - CollegeDistance из пакета AER. Преобразуем ее

library(ComplexUpset)
library(AER)
library(tidyverse)
data("CollegeDistance")
glimpse(CollegeDistance)
CollegeDistance <- as.data.frame(CollegeDistance)
tab_2 <- colnames(CollegeDistance[,c(4:7)])
CollegeDistance[,c(4:7)] <- CollegeDistance[,c(4:7)] == "yes"
head(CollegeDistance)

В итоге мы получим 4 бинарные переменные: fcollege и mcollege обозначают, закончили ли мать/отец студента колледж, home - живет ли семья студента в отдельном доме, urban - живет ли семья студента в городе.

Применяем главную функцию upset (первая переменная - имя датафрейма, вторая переменная - вектор имен бинарных переменных)

upset(CollegeDistance, tab_2)

Левая гистограмма - это количество респондентов, у которых присутствует определенный признак.

Основная таблица внизу визуализирует комбинации признаков. Так, видно, что больше всего количество студентов, которые живут в собственном доме, но не в городе, причем мать и отец не заканчивали колледж - 2188. Людей с противоположным набором - 9.

Самое главное - что это не все, можно добавлять еще графики

upset(CollegeDistance, tab_2, annotations = list('Distribution of Score'=(
  ggplot(mapping=aes(y=score))
  + geom_violin(alpha=0.5, na.rm=TRUE))))

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

Еще один приятный бонус - функция, которая автоматически проводит непараметрический тест Крускала-Уоллиса на равенство медиан по всем подвыборкам, образованным комбинацией бинарных переменных.

upset_test(CollegeDistance, tab_2)

Получается, из количественных переменных меньше всего изменчивость у показателя "заработная плата", а выше всего - у показателя "расстояние".

Кроме того, у пакета есть шикарная виньетка (https://cran.r-project.org/web/packages/ComplexUpset/vignettes/Examples_R.html), в которой показано, как работать с различными настройками графика.

Теги:
Хабы:
+11
Комментарии 0
Комментарии Комментировать

Публикации

Истории

Работа

Data Scientist
66 вакансий

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн