Лабораторная работа №9 (R) — Шаблон

Визуализация в ggplot2 — файл для заполнения

Author

ФИО студента: Кравец Д.В.

Published

October 24, 2025

0. Подготовка окружения

library(ggplot2); library(dplyr); set.seed(42)

Присоединяю пакет: 'dplyr'
Следующие объекты скрыты от 'package:stats':

    filter, lag
Следующие объекты скрыты от 'package:base':

    intersect, setdiff, setequal, union

1. Данные для заданий

n <- 80
df <- data.frame(
  age = sample(18:70, n, replace=TRUE),
  weight = rnorm(n, 70, 12),
  height = rnorm(n, 170, 10),
  gender = sample(c("Male","Female"), n, replace=TRUE),
  sport = sample(c("Yes","No"), n, replace=TRUE)
) |> mutate(BMI = weight/(height/100)^2)
head(df,8)
  age   weight   height gender sport      BMI
1  66 53.58063 169.9818 Female    No 18.54399
2  54 75.19382 165.7174   Male    No 27.38078
3  18 60.26328 163.8633 Female    No 22.44344
4  42 87.32922 149.7532   Male   Yes 38.94101
5  27 64.82265 157.7525   Male    No 26.04799
6  53 77.86777 171.7952 Female   Yes 26.38371
7  35 73.86310 175.6762 Female    No 23.93325
8  66 60.59393 165.0712   Male    No 22.23752

2. Задания

A. Распределение

ggplot(df, aes(x = BMI, fill = gender)) +
geom_histogram(aes(y = after_stat(density)), position = "identity", alpha = 0.4, bins = 20) +
geom_density(alpha = 0.6)+
theme_classic()

B. Взаимосвязь

ggplot(df, aes(x = age, y = BMI)) +
  geom_point( aes(shape = sport), size = 3) +
  geom_smooth(method = "lm") +
  theme_minimal()
`geom_smooth()` using formula = 'y ~ x'

C. Сравнение групп

ggplot(df, aes(x = gender, y = BMI)) +
geom_boxplot(alpha = 0.9) +
theme_minimal()

ggplot(df, aes(x = gender, y = height, fill = gender)) +
geom_violin(alpha = 0.5) +
stat_summary(fun = median, geom = "point") +
theme_minimal()

D. Средние по группам

df_means <- df %>%
group_by(gender, sport) %>%
summarise(mean_BMI = mean(BMI, na.rm = TRUE))
`summarise()` has grouped output by 'gender'. You can override using the
`.groups` argument.
df_means
# A tibble: 4 × 3
# Groups:   gender [2]
  gender sport mean_BMI
  <chr>  <chr>    <dbl>
1 Female No        24.4
2 Female Yes       24.7
3 Male   No        24.4
4 Male   Yes       25.0
ggplot(df_means, aes(x = sport, y = mean_BMI, fill = gender)) +
geom_bar(stat = "identity", position = "dodge") +
theme_bw()

3. Краткие выводы

BMI у занимающихся спортом людей в среднем выше.

С возрастом у мужчин повышается BMI у женщин уменьшается.