Лабораторная работа №7 (R)

Статистические характеристики данных

Author

ФИО студента: Чигирев Яромир Алексеевич

Published

November 6, 2025

Цель работы: выполнить анализ статистических характеристик данных с использованием языка R и встроенного набора данных iris.


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

# Загрузка библиотек
library(dplyr)
Warning: пакет 'dplyr' был собран под R версии 4.3.2

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

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

    intersect, setdiff, setequal, union
library(ggplot2)
Warning: пакет 'ggplot2' был собран под R версии 4.3.3
library(moments)

# Подключение набора данных
data("iris")
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

2. Задание A — Базовые статистики

  1. Для каждого из числовых признаков (Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) вычислите:
    • среднее (mean),
    • медиану (median),
    • стандартное отклонение (sd),
    • межквартильный размах (IQR).
  2. Результаты представьте в виде таблицы.
iris %>%
  summarise(
    Sepal.Length_mean = mean(Sepal.Length),
    Sepal.Length_median = median(Sepal.Length),
    Sepal.Length_sd = sd(Sepal.Length),
    Sepal.Length_IQR = IQR(Sepal.Length),
    
    Sepal.Width_mean = mean(Sepal.Width),
    Sepal.Width_median = median(Sepal.Width),
    Sepal.Width_sd = sd(Sepal.Width),
    Sepal.Width_IQR = IQR(Sepal.Width),
    
    Petal.Length_mean = mean(Petal.Length),
    Petal.Length_median = median(Petal.Length),
    Petal.Length_sd = sd(Petal.Length),
    Petal.Length_IQR = IQR(Petal.Length),
    
    Petal.Width_mean = mean(Petal.Width),
    Petal.Width_median = median(Petal.Width),
    Petal.Width_sd = sd(Petal.Width),
    Petal.Width_IQR = IQR(Petal.Width)
  )
  Sepal.Length_mean Sepal.Length_median Sepal.Length_sd Sepal.Length_IQR
1          5.843333                 5.8       0.8280661              1.3
  Sepal.Width_mean Sepal.Width_median Sepal.Width_sd Sepal.Width_IQR
1         3.057333                  3      0.4358663             0.5
  Petal.Length_mean Petal.Length_median Petal.Length_sd Petal.Length_IQR
1             3.758                4.35        1.765298              3.5
  Petal.Width_mean Petal.Width_median Petal.Width_sd Petal.Width_IQR
1         1.199333                1.3      0.7622377             1.5

3. Задание B — Анализ по группам

  1. Для каждого вида (Species) вычислите среднюю длину и ширину лепестков (Petal.Length, Petal.Width).

  2. Сравните значения между тремя видами и сделайте краткий вывод.

iris %>%
  group_by(Species) %>%
  summarise(
    Petal.Length_mean = mean(Petal.Length),
    Petal.Width_mean = mean(Petal.Width)
  )
# A tibble: 3 × 3
  Species    Petal.Length_mean Petal.Width_mean
  <fct>                  <dbl>            <dbl>
1 setosa                  1.46            0.246
2 versicolor              4.26            1.33 
3 virginica               5.55            2.03 

Вывод:
1. Оба параметра показывают одинаковую последовательность - setosa < versicolor < virginica.
2. Более длинные лепестки также имеют большую ширину, что указывает на пропорциональный рост.


4. Задание C — Визуализация

  1. Постройте boxplot для Petal.Length по видам (Species).
  2. Добавьте подписи и цвета.
ggplot(iris, aes(x = Species, y = Petal.Length, fill = Species)) +
  geom_boxplot(alpha = 0.7) +
  facet_wrap(~ Species, scales = "free") +
  labs(title = "Длина лепестков по видам",
       x = "Вид ириса",
       y = "Длина лепестка (см)") +
  theme_minimal() +
  theme(legend.position = "none")


5. Задание D — Распределение и форма

  1. Для признака Sepal.Length постройте гистограмму.
  2. Вычислите асимметрию и эксцесс (skewness(), kurtosis()).
  3. Интерпретируйте результаты — является ли распределение близким к нормальному?
ggplot(iris, aes(x = Sepal.Length)) +
  geom_histogram(bins = 15, fill = "purple", color = "lightpink") +
  labs(title = "Длина чашелистиков", 
       x = "Длина чашелистика (см)", 
       y = "Частота") +
  theme_minimal()

skewness(iris$Sepal.Length)
[1] 0.3117531
kurtosis(iris$Sepal.Length)
[1] 2.426432

Интерпретация:
Слабый перекос вправо - 0.311, близко к нулю. Распределение 2.394 - “плоское”, так как меньше 3.


6. Контрольные вопросы

  1. Чем отличается среднее от медианы с точки зрения устойчивости к выбросам?
  2. Что показывает стандартное отклонение?
  3. Как вычисляется межквартильный размах и что он отражает?
  4. Что значит положительная асимметрия?
  5. Как интерпретировать эксцесс меньше 3?

7. Дополнительно (по желанию)

  • Рассчитайте все показатели (mean, median, sd, IQR, skewness, kurtosis) для каждой группы Species.
  • Визуализируйте результаты с помощью ggplot2 (например, bar chart по видам).
# Ваш код здесь