|
4 weeks ago | |
---|---|---|
.. | ||
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago |
README.md
Визуализация распределений
![]() |
---|
Визуализация распределений - Скетчноут от @nitya |
В предыдущем уроке вы узнали несколько интересных фактов о наборе данных о птицах Миннесоты. Вы нашли ошибочные данные, визуализировав выбросы, и изучили различия между категориями птиц по их максимальной длине.
Тест перед лекцией
Исследуем набор данных о птицах
Еще один способ изучить данные — это посмотреть на их распределение, то есть на то, как данные организованы вдоль оси. Например, вы можете захотеть узнать об общем распределении максимального размаха крыльев или максимальной массы тела для птиц Миннесоты.
Давайте узнаем несколько фактов о распределении данных в этом наборе. В вашем консоли R импортируйте ggplot2
и базу данных. Удалите выбросы из базы данных, как это было сделано в предыдущей теме.
library(ggplot2)
birds <- read.csv("../../data/birds.csv",fileEncoding="UTF-8-BOM")
birds_filtered <- subset(birds, MaxWingspan < 500)
head(birds_filtered)
Название | Научное название | Категория | Отряд | Семейство | Род | Статус сохранности | Мин. длина | Макс. длина | Мин. масса тела | Макс. масса тела | Мин. размах крыльев | Макс. размах крыльев | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Чернобрюхий свистун | Dendrocygna autumnalis | Утки/Гуси/Водоплавающие | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Рыжий свистун | Dendrocygna bicolor | Утки/Гуси/Водоплавающие | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Белый гусь | Anser caerulescens | Утки/Гуси/Водоплавающие | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Гусь Росса | Anser rossii | Утки/Гуси/Водоплавающие | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Большой белолобый гусь | Anser albifrons | Утки/Гуси/Водоплавающие | Anseriformes | Anatidae | Anser | LC | 64 | 81 | 1930 | 3310 | 130 | 165 |
В целом, вы можете быстро взглянуть на то, как данные распределены, используя диаграмму рассеяния, как мы делали в предыдущем уроке:
ggplot(data=birds_filtered, aes(x=Order, y=MaxLength,group=1)) +
geom_point() +
ggtitle("Max Length per order") + coord_flip()
Это дает обзор общего распределения длины тела по отрядам птиц, но это не оптимальный способ отображения истинных распределений. Для этой задачи обычно создается гистограмма.
Работа с гистограммами
ggplot2
предлагает отличные способы визуализации распределения данных с помощью гистограмм. Этот тип диаграммы похож на столбчатую диаграмму, где распределение можно увидеть через подъем и спад столбцов. Чтобы построить гистограмму, вам нужны числовые данные. Для создания гистограммы вы можете построить диаграмму, определив тип как 'hist' для гистограммы. Эта диаграмма показывает распределение MaxBodyMass для всего диапазона числовых данных набора. Разделяя массив данных на меньшие интервалы, она может отображать распределение значений данных:
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) +
geom_histogram(bins=10)+ylab('Frequency')
Как видно, большинство из 400+ птиц в этом наборе данных имеют Max Body Mass менее 2000. Получите больше информации о данных, изменив параметр bins
на большее число, например, 30:
ggplot(data = birds_filtered, aes(x = MaxBodyMass)) + geom_histogram(bins=30)+ylab('Frequency')
Эта диаграмма показывает распределение в более детализированном виде. Менее смещенную влево диаграмму можно создать, выбрав данные только в заданном диапазоне:
Отфильтруйте данные, чтобы получить только тех птиц, чья масса тела меньше 60, и покажите 30 bins
:
birds_filtered_1 <- subset(birds_filtered, MaxBodyMass > 1 & MaxBodyMass < 60)
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_histogram(bins=30)+ylab('Frequency')
✅ Попробуйте другие фильтры и точки данных. Чтобы увидеть полное распределение данных, удалите фильтр ['MaxBodyMass']
, чтобы показать распределения с метками.
Гистограмма предлагает также интересные улучшения цвета и меток:
Создайте 2D-гистограмму, чтобы сравнить взаимосвязь между двумя распределениями. Давайте сравним MaxBodyMass
и MaxLength
. ggplot2
предлагает встроенный способ показать сходимость с помощью более ярких цветов:
ggplot(data=birds_filtered_1, aes(x=MaxBodyMass, y=MaxLength) ) +
geom_bin2d() +scale_fill_continuous(type = "viridis")
Кажется, существует ожидаемая корреляция между этими двумя элементами вдоль ожидаемой оси, с одной особенно сильной точкой сходимости:
Гистограммы хорошо работают по умолчанию для числовых данных. А что, если вам нужно увидеть распределения по текстовым данным?
Исследуем набор данных для распределений с использованием текстовых данных
Этот набор данных также содержит полезную информацию о категории птиц, их роде, виде и семействе, а также о статусе сохранности. Давайте изучим информацию о статусе сохранности. Каково распределение птиц по их статусу сохранности?
✅ В наборе данных используются несколько аббревиатур для описания статуса сохранности. Эти аббревиатуры взяты из Категорий Красного списка МСОП, организации, которая каталогизирует статус видов.
- CR: Находящиеся на грани исчезновения
- EN: Исчезающие
- EX: Вымершие
- LC: Наименьшая угроза
- NT: Близкие к уязвимому положению
- VU: Уязвимые
Это текстовые значения, поэтому вам нужно будет преобразовать их, чтобы создать гистограмму. Используя dataframe filteredBirds, отобразите его статус сохранности вместе с минимальным размахом крыльев. Что вы видите?
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EX'] <- 'x1'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'CR'] <- 'x2'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'EN'] <- 'x3'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'NT'] <- 'x4'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'VU'] <- 'x5'
birds_filtered_1$ConservationStatus[birds_filtered_1$ConservationStatus == 'LC'] <- 'x6'
ggplot(data=birds_filtered_1, aes(x = MinWingspan, fill = ConservationStatus)) +
geom_histogram(position = "identity", alpha = 0.4, bins = 20) +
scale_fill_manual(name="Conservation Status",values=c("red","green","blue","pink"),labels=c("Endangered","Near Threathened","Vulnerable","Least Concern"))
Не кажется, что существует хорошая корреляция между минимальным размахом крыльев и статусом сохранности. Проверьте другие элементы набора данных, используя этот метод. Вы можете попробовать разные фильтры. Найдете ли вы какую-либо корреляцию?
Плотностные графики
Вы могли заметить, что гистограммы, которые мы рассматривали до сих пор, имеют "ступенчатую" форму и не плавно переходят в дугу. Чтобы показать более плавный график плотности, вы можете попробовать плотностный график.
Давайте теперь поработаем с плотностными графиками!
ggplot(data = birds_filtered_1, aes(x = MinWingspan)) +
geom_density()
Вы можете увидеть, как график повторяет предыдущий для данных о минимальном размахе крыльев; он просто немного более плавный. Если вы захотите вернуться к той зубчатой линии MaxBodyMass на втором графике, который вы построили, вы сможете сгладить ее, используя этот метод:
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density()
Если вы хотите получить плавную, но не слишком плавную линию, измените параметр adjust
:
ggplot(data = birds_filtered_1, aes(x = MaxBodyMass)) +
geom_density(adjust = 1/5)
✅ Прочитайте о доступных параметрах для этого типа графика и экспериментируйте!
Этот тип диаграммы предлагает красиво объясняющие визуализации. Например, с помощью нескольких строк кода вы можете показать плотность максимальной массы тела по отрядам птиц:
ggplot(data=birds_filtered_1,aes(x = MaxBodyMass, fill = Order)) +
geom_density(alpha=0.5)
🚀 Задание
Гистограммы — это более сложный тип диаграмм, чем базовые диаграммы рассеяния, столбчатые диаграммы или линейные графики. Найдите в интернете хорошие примеры использования гистограмм. Как они используются, что они демонстрируют и в каких областях или сферах исследования они чаще всего применяются?
Тест после лекции
Обзор и самостоятельное изучение
В этом уроке вы использовали ggplot2
и начали работать с более сложными диаграммами. Проведите исследование о geom_density_2d()
— "непрерывной кривой плотности вероятности в одном или нескольких измерениях". Прочитайте документацию, чтобы понять, как это работает.
Задание
Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.