You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Data-Science-For-Beginners/translations/ru/3-Data-Visualization/R/10-visualization-distributions
leestott e2b90108bb
🌐 Update translations via Co-op Translator
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator 4 weeks ago

README.md

Визуализация распределений

Скетчноут от (@sketchthedocs)
Визуализация распределений - Скетчноут от @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')

распределение-30 интервалов

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

Отфильтруйте данные, чтобы получить только тех птиц, чья масса тела меньше 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")

Кажется, существует ожидаемая корреляция между этими двумя элементами вдоль ожидаемой оси, с одной особенно сильной точкой сходимости:

2D диаграмма

Гистограммы хорошо работают по умолчанию для числовых данных. А что, если вам нужно увидеть распределения по текстовым данным?

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

Этот набор данных также содержит полезную информацию о категории птиц, их роде, виде и семействе, а также о статусе сохранности. Давайте изучим информацию о статусе сохранности. Каково распределение птиц по их статусу сохранности?

В наборе данных используются несколько аббревиатур для описания статуса сохранности. Эти аббревиатуры взяты из Категорий Красного списка МСОП, организации, которая каталогизирует статус видов.

  • 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. Хотя мы стремимся к точности, пожалуйста, имейте в виду, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его исходном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.