Дисклеймер: этот конспект был написан от первого лица, если через пару минут прочтения у вас сложится впечатление что вы сидите в одной комнате с Иваном Поздняковым, это нормально!
# Подключаем tidyverse
library(tidyverse)
# Подключаем пакет с пингвинами
library(palmerpenguins)
# Загружаем данные
data("penguins")
# Смотрим на данные
View(penguins)# Удаляем пропущенные значения
my_penguins <- drop_na(penguins)
# Проверяем
View(my_penguins)# Смотрим описательные статистики для массы тела
summary(my_penguins$body_mass_g)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 2700 3550 4050 4207 4775 6300
NB! В новых версиях R колонка body_mass_g называется body_mass
# Самый простой бокс-плот
ggplot(data = my_penguins) +
aes(x = "Все пингвины", y = body_mass_g) +
geom_boxplot()# Бокс-плот по видам
ggplot(data = my_penguins) +
aes(x = species, y = body_mass_g) +
geom_boxplot()
# С цветом
ggplot(data = my_penguins) +
aes(x = species, y = body_mass_g, fill = species) +
geom_boxplot()# Добавляем тему
ggplot(data = my_penguins) +
aes(x = species, y = body_mass_g, fill = species) +
geom_boxplot() +
theme_bw()# Отфильтруем только Adelie
adelie_mass <- my_penguins %>%
filter(species == "Adelie") %>%
pull(body_mass_g)
# Считаем квартили
q1 <- quantile(adelie_mass, 0.25)
q3 <- quantile(adelie_mass, 0.75)
iqr <- q3 - q1
# Границы усов
upper_whisker <- q3 + 1.5 * iqr
lower_whisker <- q1 - 1.5 * iqr
# Максимальное и минимальное значение в пределах границ
max_in_whisker <- max(adelie_mass[adelie_mass <= upper_whisker])
min_in_whisker <- min(adelie_mass[adelie_mass >= lower_whisker])
print(paste("Q1:", q1))
# "Q1: 3362.5"
print(paste("Q3:", q3))
# "Q3: 4000"
print(paste("IQR:", iqr))
# "IQR: 637.5"
print(paste("Верхняя граница уса:", upper_whisker))
# "Верхняя граница уса: 4956.25"
print(paste("Фактический верхний ус:", max_in_whisker))
# "Фактический верхний ус: 4775"
# Считаем квартили для нашего примера
quantile(c(1, 2, 4, 5, 8, 12, 14, 30))
# 0% 25% 50% 75% 100%
# 1.0 3.5 6.5 12.5 30.0 # Считаем квартили для нашего примера
quantile(c(1, 2, 4, 5, 8, 12, 14, 30), type = 2)
# 0% 25% 50% 75% 100%
# 1.0 3 6.5 13 30.0
# Boxplot в базовом R
boxplot(body_mass_g ~ species, data = my_penguins)# Boxplot в ggplot2
ggplot(data = my_penguins) +
aes(x = species, y = body_mass_g) +
geom_boxplot()# Boxplot с настройкой ширины
ggplot(data = my_penguins) +
aes(x = species, y = body_mass_g) +
geom_boxplot(width = 0.5)# Гистограмма в ggplot2
ggplot(data = my_penguins) +
aes(x = body_mass_g) +
geom_histogram()# Гистограмма с 4 интервалами
ggplot(data = my_penguins) +
aes(x = body_mass_g) +
geom_histogram(bins = 4)
# Гистограмма с группировкой по видам
ggplot(data = my_penguins) +
aes(x = body_mass_g, fill = species) +
geom_histogram()Когда используете гистограмму, обязательно, обязательно пробуйте разное количество интервалов, потому что картинка при этом может довольно сильно меняться.
# Density plot
ggplot(data = my_penguins) +
aes(x = body_mass_g, fill = species) +
geom_density()
# Density plot с прозрачностью
ggplot(data = my_penguins) +
aes(x = body_mass_g, fill = species) +
geom_density(alpha = 0.5)# Density plot со стакингом
ggplot(data = my_penguins) +
aes(x = body_mass_g, fill = species) +
geom_density(alpha = 0.5, position = "stack")Забрать у Варвары ли Евы