Processing math: 100%
+ - 0:00:00
Notes for current slide
Notes for next slide

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

Основы биостатистики, осень 2022

Марина Варфоломеева

1 / 66
  • Таблицы для представления и анализа данных
  • Графики
  • Одна переменная
  • Связь между двумя категориальными переменными
  • Связь между двумя численными переменными
  • Связь численной и категориальой переменными
  • Ряды данных во времени и пространстве
  • Подготовка и визуализация данных в R
    • Опрятные данные, tidy data
    • Грамматика графиков
2 / 66

Таблицы

3 / 66

Таблицы для представления данных

  • в основном тексте статей, отчетов
  • обобщают, кратко описывают данные
  • форматирование выделяет важную информацию (но, увы, затрудняет машинную обработку)
  • заголовки созданы для удобства людей (но, к сожалению, не машин)

Table 1. Baseline clinical and demographic features of the 1305 Pima Indians (487 men, 818 women) in the study population. (From Nelson et al., 1998)

DOI: 10.1046/j.1523-1755.1998.00191.x

4 / 66

Таблицы для представления данных

  • в основном тексте статей, отчетов
  • обобщают, кратко описывают данные
  • форматирование выделяет важную информацию (но, увы, затрудняет машинную обработку)
  • заголовки созданы для удобства людей (но, к сожалению, не машин)

Table 4 . Classification results on the “Pima diabetes” dataset. (From Demidova, Klyueva. 2017)

DOI: 10.1051/itmconf/20171002002

5 / 66

Таблицы для анализа данных

  • в приложениях к статьям
  • первичные, необработанные (“сырые”) данные
  • форматирование минималистично или отсутствует
  • заголовки краткие “машиночитаемые”
  • опрятные данные, tidy data — об этом позже

Pima.tr dataset in R-package MASS. Diabetes in Pima Indian Women.

Smith et al., 1988

6 / 66

Smith, J. W., Everhart, J. E., Dickson, W. C., Knowler, W. C., & Johannes, R. S. (1988, November). Using the ADAP learning algorithm to forecast the onset of diabetes mellitus. In Proceedings of the annual symposium on computer application in medical care (p. 261). American Medical Informatics Association.

Как можно улучшить эту таблицу?

Whitlock, Schluter, 2015

7 / 66

Недостатки таблицы

  • пары король-королева не упорядочены по значению F — не видна закономерность
  • главные переменные F и выживание разделены лишними здесь колонками со второстепенной информацией
  • для каждого короля пустая строка — оптически фрагментирует таблицу
  • слишком много десятичных знаков

Whitlock, Schluter, 2015

8 / 66

Улучшенная таблица

Whitlock, Schluter, 2015

9 / 66

Графики

10 / 66

Хороший график

  • Закономерности в данных легко различимы
  • Величина и соотношение значений показаны честно
  • Оси подписаны, указаны единицы измерения
  • Графические символы и цвета легко различимы
11 / 66

Примеры плохих графиков

12 / 66

Примеры плохих графиков

12 / 66

Примеры плохих графиков

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

12 / 66

Примеры плохих графиков

Глобальная средняя температура с 1880 г.

Источник

13 / 66

Примеры плохих графиков

Глобальная средняя температура с 1880 г.

Источник

13 / 66

Примеры плохих графиков

Глобальная средняя температура с 1880 г.

Источник

Неправильно выбранный масштаб может скрывать изменчивость данных. Выбирайте подходящий масштаб осей.

13 / 66

Примеры плохих графиков

14 / 66

Примеры плохих графиков

3D графики обманчивы из-за эффекта перспективы.
Лучше использовать плоские столбчатые графики.

14 / 66

Одна переменная

15 / 66

Одна переменная: частоты

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

Занятие Частота (число людей)
Трава/корм 44
Лесные продукты 11
Рыбалка 8
Скотоводство 7
Поимка тигра 5
Дрова/древесина 5
Сон в доме 5
Прогулка 3
Туалет 2

Данные Gurung et al. 2008, по Whitlock, Shluter, 2015

Частота разных типов активности жертв нападений тигров в национальном парке Читван в Непале в 1979-2006гг.

16 / 66

Одна переменная: частоты

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

Занятие Частота (число людей)
Трава/корм 44
Лесные продукты 11
Рыбалка 8
Скотоводство 7
Поимка тигра 5
Дрова/древесина 5
Сон в доме 5
Прогулка 3
Туалет 2

Данные Gurung et al. 2008, по Whitlock, Shluter, 2015

Частота разных типов активности жертв нападений тигров в национальном парке Читван в Непале в 1979-2006гг.

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

16 / 66

Одна переменная: относительные частоты

Занятие Процент людей
Трава/корм 44
Лесные продукты 11
Рыбалка 8
Скотоводство 7
Поимка тигра 5
Дрова/древесина 5
Сон в доме 5
Прогулка 3
Туалет 2

Данные Gurung et al. 2008, по Whitlock, Shluter, 2015

Типы активности жертв нападений тигров (%) в национальном парке Читван в Непале в 1979-2006гг.

17 / 66

Круговой график обычно хуже, чем столбчатый

Данные Gurung et al. 2008, по Whitlock, Shluter, 2015

18 / 66

Гистограмма

Гистограмма показывает количество значений, попадающих в определенный интервал (классовый интервал).

Распределение размеров двустворчатых моллюсков Limecola baltica, просверленных улиткой Amauropsis islandica (высота раковины 12.5 мм).

Aristov, Varfolomeeva, 2015, Fig.5

19 / 66

Ширина классового интервала определяет внешний вид гистограммы

Распределение веса младенцев при рождении. Данные были собраны в медицинском центре Baystate, Спрингфилд, в 1986 г.

Данные birthwt из пакета MASS из Hosmer, Lemeshow, 1989

20 / 66

Ширина классового интервала определяет внешний вид гистограммы

Распределение веса младенцев при рождении. Данные были собраны в медицинском центре Baystate, Спрингфилд, в 1986 г.

Данные birthwt из пакета MASS из Hosmer, Lemeshow, 1989

20 / 66

Есть множество методов расчета ширины h и количества k классовых интервалов

21 / 66

Есть множество методов расчета ширины h и количества k классовых интервалов

Метод Стурджеса (Sturges, 1926), плохо работает при n<30

ks=1+log2(n)


ks=1+log2(189)=9
Данные birthwt из пакета MASS из Hosmer, Lemeshow, 1989

21 / 66

Есть множество методов расчета ширины h и количества k классовых интервалов

Метод Стурджеса (Sturges, 1926), плохо работает при n<30

ks=1+log2(n)


ks=1+log2(189)=9
Данные birthwt из пакета MASS из Hosmer, Lemeshow, 1989

Метод Фридмана-Диакониса (Freedman, Diakonis, 1981)

hfd=2IQR(x)3n, kfd=(maxmin)/hfd

I и III квартили — 2414, 3487,
n = 189, max = 4990, min = 709.

hfd=210733189, kfd=12

21 / 66

Есть множество методов определения оптимального числа интервалов (wiki)

Связь между двумя категориальными переменными

22 / 66

Таблица сопряженности

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

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

Disease
Supplier No Yes
Communal 170 85
Non-communal 30 32
23 / 66

Связь двух переменных можно изобразить на гарфиках

График с группами столбцов

Мозаичный график

24 / 66

На мозаичном графике можно изобразить много переменных

25 / 66

Связь между двумя численными переменными

26 / 66

Диаграмма рассеяния (= скаттерплот)

Диаграмма рассеяния (scatterplot) позволяет показать связь между двумя непрерывными переменными.

Связь массы тела и длины крыла у пингвинов трех видов (Адели, Генту, Чинстрап)

Данные Kristen Gorman, 2007-2009 Palmer Station Long Term Ecological Research Program

27 / 66

На скаттерплот можно добавить и дискретные переменные

Связь массы тела и длины крыла у пингвинов трех видов (Адели, Генту, Чинстрап)

Данные Kristen Gorman, 2007-2009 Palmer Station Long Term Ecological Research Program

28 / 66

На скаттерплот можно добавить и дискретные переменные

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

Связь высоты и длины клюва у пингвинов трех видов (Адели, Генту, Чинстрап)

Данные Kristen Gorman, 2007-2009 Palmer Station Long Term Ecological Research Program

29 / 66

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

30 / 66

Точечная диаграмма (strip chart)

31 / 66

Боксплот (box plot)

32 / 66

Множество гистограмм

33 / 66

Ряды данных во времени и пространстве

34 / 66

Закономерности во времени: Линейный график

Ежегодное количество пойманных рысей в 1821–1934 гг. в Канаде.

35 / 66

Закономерности во времени

Ежемесячное число погибших или серьезно раненых водителей с января 1969 г. по декабрь 1984 г. в Великобритании. Обязательное использование ремней безопасности было введено 31 января 1983 г.

36 / 66

Закономерности в пространстве

Количество животных погибших на автодороге БР-262 (столбцы — 10-километровые отрезки) и средняя высота в пределах каждого отрезка (пунктирная линия).

Desouza et al., 2014, DOI: 10.1007/s11273-014-9372-4

37 / 66

Карты

Exposito-Alonso, 2020, DOI: 10.1073/pnas.1921798117

38 / 66

Сезонная адаптация Arabidopsis thaliana. Карта прогнозов времени цветения и старения растений, скорости прорастания, не зависящей от температуры, и весеннего прорастания, индуцированного/заблокированного холодом. Красная зона - рост осенью, размножение весной. Зеленая - зимний цикл факультативен. Фиолетовая зона быстрый весенне-летний цикл. Синяя зона - зимний цикл, позднее цветение.

Известно, какие аллели функционируют в каких частях ареала.

https://commons.wikimedia.org/wiki/File:Arabidopsis_thaliana_inflorescencias.jpg#filelinks

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

39 / 66

Опрятные данные, tidy data

40 / 66

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

Данные для анализа должны быть специальным образом отформатированы.

Подготовка данных занимает около 80% времени всего анализа (Dasu and Johnson 2003).

41 / 66

Опрятные данные, tidy data

Like families, tidy datasets are all alike but every messy dataset is messy in its own way. Tidy datasets provide a standardized way to link the structure of a dataset (its physical layout) with its semantics (its meaning).
Hadley Wickham

42 / 66

Опрятные данные, tidy data

  • В каждом столбце только одна переменная (variable)
  • В каждой строке только одно наблюдение (observations)
  • В каждой ячейке только одно значение (value)

Wickham, 2016, Fig 12.1

43 / 66

Wickham, H. (2014). Tidy Data. Journal of Statistical Software, 59(i10).

Пример tidy data

Мы уже видели один пример —


Pima.tr dataset in R-package MASS. Diabetes in Pima Indian Women.

Smith et al., 1988

44 / 66

Основные ошибки форматирования таблиц
для анализа данных

45 / 66

Основные ошибки форматирования таблиц
для анализа данных

  • Объединенные ячейки
  • Заголовки столбцов (в порядке убывания важности ошибки)
    • отсутствуют
    • слишком длинные
    • на русском языке
    • содержат пробелы
  • В одной ячейке находится несколько значений
  • В одном столбце приведены разнородные данные
  • Нет стандартного обозначения пропущенных значений
45 / 66

Принципы Tidy Data

Переменные

  • должны иметь уникальные имена (лучше на английском без пробелов)
  • должны содержать только один тип данных.
  • должны быть измерены в одинаковых единицах.
46 / 66

Принципы Tidy Data

Переменные

  • должны иметь уникальные имена (лучше на английском без пробелов)
  • должны содержать только один тип данных.
  • должны быть измерены в одинаковых единицах.

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

46 / 66

Принципы Tidy Data

Переменные

  • должны иметь уникальные имена (лучше на английском без пробелов)
  • должны содержать только один тип данных.
  • должны быть измерены в одинаковых единицах.

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

Значения

  • каждое значение должно быть в отдельной ячейке.
  • пропущенные (неизвестные) значения должны обозначаться единообразно (например, пустые ячейки, или NA).
46 / 66

Принципы Tidy Data

Переменные

  • должны иметь уникальные имена (лучше на английском без пробелов)
  • должны содержать только один тип данных.
  • должны быть измерены в одинаковых единицах.

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

Значения

  • каждое значение должно быть в отдельной ячейке.
  • пропущенные (неизвестные) значения должны обозначаться единообразно (например, пустые ячейки, или NA).
npreg glu bp skin bmi ped age type
1 5 86 68 28 30.2 0.364 24 No
2 7 195 70 33 25.1 0.163 55 Yes
3 5 77 82 41 35.8 0.156 35 No
4 0 165 76 43 47.9 0.259 26 No
5 0 107 60 25 26.4 0.133 23 No
  • npreg — number of pregnancies.
  • glu — plasma glucose concentration.
  • bp — diastolic blood pressure (mm Hg).
  • skin — triceps skin fold thickness (mm).
  • bmi — body mass index (weight in kg/(height in m)2).
  • ped — diabetes pedigree function.
  • age — age in years.
  • type — Yes or No, for diabetic (WHO).
46 / 66

Грамматика графиков

47 / 66

Грамматика графиков (grammar of graphics)

Wilkinson, L. (2012). The grammar of graphics. In Handbook of computational statistics (pp. 375-414). Springer, Berlin, Heidelberg.



Wickham, H. (2010). A layered grammar of graphics. Journal of Computational and Graphical Statistics, 19(1), 3-28.

48 / 66

Компоненты грамматики графиков

Источник: towardsdatascience.com

Т.е. графики создаются послойно.

49 / 66

Графики при помощи пакета ggplot2

gg в названии пакета — это grammar of graphics.

Активируем пакет ggplot2

library(ggplot2)
50 / 66

Данные

Данные для графика ggplot2 должны быть в виде датафрейма.

Попробуем нарисовать данные из датасета penguins про пингвинов Адели, Генту и Чинстрап, который хранится в пакете palmerpenguins.

bluegio at deviantart.com

library(palmerpenguins)
head(penguins, 2)
# A tibble: 2 × 8
species island bill_length_mm bill_…¹ flipp…² body_…³ sex year
<fct> <fct> <dbl> <dbl> <int> <int> <fct> <int>
1 Adelie Torgersen 39.1 18.7 181 3750 male 2007
2 Adelie Torgersen 39.5 17.4 186 3800 fema… 2007
# … with abbreviated variable names ¹​bill_depth_mm,
# ²​flipper_length_mm, ³​body_mass_g
colnames(penguins)
[1] "species" "island" "bill_length_mm"
[4] "bill_depth_mm" "flipper_length_mm" "body_mass_g"
[7] "sex" "year"
51 / 66

1. Откуда брать данные?

ggplot(data = penguins)

52 / 66

2. Что рисовать?

При помощи функции aes() задаем эстетики — свойства графика, при помощи которых будут отображены данные.

Простейшие эстетики — это x и y — координаты по осям.

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g))

53 / 66

3. В виде чего рисовать?

Геомы — графические объекты в виде которых будут изображены свойства данных.

Простейший геом — точки geom_point()

Отдельные слои графика разделяются знаком +. Разрыв строки можно ставить только после него, не до.

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point()

54 / 66

Можно “жестко” указать свойства геома

Например, у точек есть свойства shapе — форма, size — размер, colour — цвет и т.д.

Изменим цвет точек на красный и зададим размер точек 3. Это не эстетики, т.к. ни цвет ни размер никак не связаны с данными, поэтому не используется функция aes().

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(colour = "red", size = 3)

55 / 66

Можно задать другие эстетики

Если цвет должен отражать какое-то свойство данных — это эстетика. Пусть цвет отражает вид пингвинов.

Размер здесь по-прежнему не эстетика.

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(aes(color = species), size = 3)

56 / 66

Шкалы scale_*() управляют эстетиками

Цветовой палитрой эстетики colour управляют шкалы scale_color_*.

scale_color_brewer() — брюйеровские цветовые палитры. У них есть имена.

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(aes(color = species), size = 3) +
scale_color_brewer(palette = "Set2")

57 / 66

Лейблы labs() управляют подписями

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(aes(color = species), size = 3) +
scale_color_brewer(palette = "Set2") +
labs(x = "Flipper length, mm", y = "Body mass, g")

58 / 66

Фасетки facet_*() делят график на части

ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(aes(color = species), size = 3) +
scale_color_brewer(palette = "Set2") +
labs(x = "Flipper length, mm", y = "Body mass, g") +
facet_wrap(~ island)

59 / 66

Графики можно сохранять в переменные

gg_peng1 <- ggplot(data = penguins,
aes(x = flipper_length_mm, y = body_mass_g)) +
geom_point(aes(color = species), size = 3) +
scale_color_brewer(palette = "Set2") +
labs(x = "Flipper length, mm", y = "Body mass, g") +
facet_wrap(~ island)
gg_peng1

60 / 66

Тема theme() настраивает оформление графика

Например, можно отключить (или переставить) легенду,

изменить положение подписей для конкретного графика.

gg_peng1 +
theme(legend.position = "bottom",
axis.text.x = element_text(angle = 45, hjust = 1))

61 / 66

Есть встроенные темы оформления

Встроенные темы theme_*() можно применить для конкретного графика, добавив их как отдельный слой.

base_size — задает базовый размер графических элементов и шрифтов

gg_peng1 + theme_classic(base_size = 20)

62 / 66

Темы для всех последующих графиков.

Можно установить какую-то тему для всех последующих графиков при помощи theme_set()

theme_set(theme_bw(base_size = 20))
gg_peng1

63 / 66

Сохранение графиков в файл

При помощи функции ggsave() можно сохранить график в векторный или растровый формат.

filename — путь (отн. рабочей директории) и имя файла.

# Векторный формат svg
ggsave(filename = "plot_penguins.svg", plot = gg_peng1)
# Растровый формат png
ggsave(filename = "plot_penguins.png", plot = gg_peng1)
64 / 66

Summary

65 / 66

Что почитать

Принципы визуализации данных

  • Tufte, E. R. (1985). The visual display of quantitative information. The Journal for Healthcare Quality (JHQ), 7(3), 15.

Сайт, посвященный работам Эдварда Тафта

Ресурсы про ggplot2

  • Chang, W. (2018). R graphics cookbook: practical recipes for visualizing data. O’Reilly Media.

Сайт книги R Graphics Cookbook — книга Winston Chang про графики в ggplot2 с рецептами решений практически на все случаи жизни

66 / 66
  • Таблицы для представления и анализа данных
  • Графики
  • Одна переменная
  • Связь между двумя категориальными переменными
  • Связь между двумя численными переменными
  • Связь численной и категориальой переменными
  • Ряды данных во времени и пространстве
  • Подготовка и визуализация данных в R
    • Опрятные данные, tidy data
    • Грамматика графиков
2 / 66
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
oTile View: Overview of Slides
sToggle scribble toolbox
Esc Back to slideshow