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