1. Выбор датасета и разведочный анализ

Для анализа выберем датасет iris - один из самых известных наборов данных в статистике.

# Загрузка датасета
data(iris)

# Базовая информация
cat("Размерность датасета iris:", dim(iris), "\n")
## Размерность датасета iris: 150 5
cat("\nСтруктура данных:\n")
## 
## Структура данных:
str(iris)
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
# Первые несколько строк
cat("\nПервые 6 строк датасета:\n")
## 
## Первые 6 строк датасета:
print(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
# Основные статистики
cat("\nСводная статистика:\n")
## 
## Сводная статистика:
summary(iris)
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
# Проверка на пропуски
cat("\nКоличество пропусков:\n")
## 
## Количество пропусков:
print(colSums(is.na(iris)))
## Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
##            0            0            0            0            0

Визуализация данных

# Установка графических параметров
par(mfrow = c(2, 3))

# 1. Гистограмма Sepal.Length
hist(iris$Sepal.Length, main = "Sepal.Length", 
     xlab = "Длина чашелистика", col = "lightblue", breaks = 15)

# 2. Гистограмма Sepal.Width
hist(iris$Sepal.Width, main = "Sepal.Width", 
     xlab = "Ширина чашелистика", col = "lightgreen", breaks = 15)

# 3. Гистограмма Petal.Length
hist(iris$Petal.Length, main = "Petal.Length", 
     xlab = "Длина лепестка", col = "lightcoral", breaks = 15)

# 4. Гистограмма Petal.Width
hist(iris$Petal.Width, main = "Petal.Width", 
     xlab = "Ширина лепестка", col = "lightyellow", breaks = 15)

# 5. Boxplot по видам для Sepal.Length
boxplot(Sepal.Length ~ Species, data = iris,
        main = "Sepal.Length по видам",
        xlab = "Вид", ylab = "Длина чашелистика",
        col = c("red", "green", "blue"))

# 6. Boxplot по видам для Petal.Length
boxplot(Petal.Length ~ Species, data = iris,
        main = "Petal.Length по видам",
        xlab = "Вид", ylab = "Длина лепестка",
        col = c("red", "green", "blue"))
Разведочный анализ датасета iris

Разведочный анализ датасета iris

par(mfrow = c(1, 1))

# Корреляционная матрица
library(corrplot)
cor_matrix <- cor(iris[,1:4])
corrplot(cor_matrix, method = "color", type = "upper",
         tl.col = "black", tl.srt = 45,
         title = "Корреляционная матрица признаков iris")
Разведочный анализ датасета iris

Разведочный анализ датасета iris

Выводы по разведочному анализу: 1. Датасет содержит 150 наблюдений по 4 числовым признакам и 1 целевому (вид) 2. Пропуски в данных отсутствуют 3. Признаки имеют разные распределения 4. Наблюдается сильная корреляция между Petal.Length и Petal.Width 5. Виды ириса хорошо разделяются по параметрам лепестков