Введение

В этом документе представлен бутстрап анализ для оценки доверительного интервала среднего значения длины чашелистика (Sepal.Length) набора данных iris с использованием языка R. Сначала мы проведем разведочный анализ данных (EDA), а затем реализуем бутстрап и визуализируем результаты.

Разведочный анализ данных (EDA)

Для начала, давайте загрузим встроенный набор данных iris и выполним базовый разведочный анализ, чтобы ознакомиться с данными.

Загрузка и обзор данных

Загрузим набор данных iris и посмотрим на его первые несколько строк и структуру.

# Загрузка набора данных iris (он встроенный)
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

Сводная статистика

Получим сводную статистику для числовых признаков.

# Получение сводной статистики
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  
##                 
##                 
## 

Структура данных

Проверим структуру набора данных, чтобы узнать типы переменных.

# Проверка структуры данных
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 ...

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

Для визуализации распределения признаков и взаимосвязей между ними, создадим парную диаграмму и диаграммы размаха.

Парная диаграмма

# Загрузка ggplot2 для визуализации
library(ggplot2)

# Парная диаграмма
pairs(iris[, 1:4], col = iris$Species, main = "Парная диаграмма данных Iris")

Диаграммы размаха (Boxplots)

Диаграммы размаха для каждого признака в зависимости от вида ириса.

Длина чашелистика по видам
ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
  geom_boxplot() +
  ggtitle("Длина чашелистика по видам")

Ширина чашелистика по видам
ggplot(iris, aes(x = Species, y = Sepal.Width, fill = Species)) +
  geom_boxplot() +
  ggtitle("Ширина чашелистика по видам")

Длина лепестка по видам
ggplot(iris, aes(x = Species, y = Petal.Length, fill = Species)) +
  geom_boxplot() +
  ggtitle("Длина лепестка по видам")

Ширина лепестка по видам
ggplot(iris, aes(x = Species, y = Petal.Width, fill = Species)) +
  geom_boxplot() +
  ggtitle("Ширина лепестка по видам")

Бутстрап анализ среднего значения длины чашелистика

Теперь мы применим бутстрап для оценки доверительного интервала среднего значения длины чашелистика (Sepal.Length).

Загрузка библиотеки ‘boot’ и определение функции статистики

Загрузим необходимую библиотеку и определим функцию, которая будет вычислять среднее значение длины чашелистика для каждой бутстрап выборки.

# Загрузка библиотеки 'boot'
library(boot)

# Определение функции статистики (среднее значение Sepal.Length)
mean_sepal_length <- function(data, indices) {
  return(mean(data$Sepal.Length[indices]))
}

Выполнение бутстрапа

Выполним бутстрап с 2000 репликами, используя функцию boot().

# Выполнение бутстрапа
boot_result <- boot(data = iris, statistic = mean_sepal_length, R = 2000) # R=2000 как на слайде 21

# Вывод результатов бутстрапа
print(boot_result)
## 
## ORDINARY NONPARAMETRIC BOOTSTRAP
## 
## 
## Call:
## boot(data = iris, statistic = mean_sepal_length, R = 2000)
## 
## 
## Bootstrap Statistics :
##     original        bias    std. error
## t1* 5.843333 -8.966667e-05  0.06750535

Расчет и вывод BCa доверительного интервала

Рассчитаем Bias-Corrected and accelerated (BCa) доверительный интервал, который является более точным методом.

# Расчет и вывод BCa доверительного интервала
boot_ci <- boot.ci(boot_result, type = "bca") # BCa интервал как на слайде 21
print(boot_ci)
## BOOTSTRAP CONFIDENCE INTERVAL CALCULATIONS
## Based on 2000 bootstrap replicates
## 
## CALL : 
## boot.ci(boot.out = boot_result, type = "bca")
## 
## Intervals : 
## Level       BCa          
## 95%   ( 5.715,  5.977 )  
## Calculations and Intervals on Original Scale

Визуализация результатов бутстрапа

Визуализируем распределение бутстрап реплик и покажем доверительный интервал.

Гистограмма и QQ-график (из plot(boot_result))

# Гистограмма бутстрап реплик (t) и QQ-график (из plot(boot_result))
plot(boot_result)

Пользовательская гистограмма с линиями ДИ

Создадим гистограмму с добавлением линий для BCa доверительного интервала и среднего значения исходной выборки.

# Альтернативно, создание гистограммы с использованием hist() и добавление линий ДИ
hist(boot_result$t, main = "Бутстрап распределение среднего значения длины чашелистика", xlab = "Средние значения бутстрап выборок", col = "lightblue", border = "black")
abline(v = boot_ci$bca[4], col = "red", lty = "dashed", lwd = 2) # Нижняя граница BCa ДИ
abline(v = boot_ci$bca[5], col = "red", lty = "dashed", lwd = 2) # Верхняя граница BCa ДИ
abline(v = mean(iris$Sepal.Length), col = "green", lty = "solid", lwd = 2) # Среднее значение исходной выборки
legend("topright", legend = c("BCa ДИ", "Исходное среднее"), col = c("red", "green"), lty = c("dashed", "solid"), lwd = 2)

Заключение

В результате бутстрап анализа мы получили 95% BCa доверительный интервал для среднего значения длины чашелистика набора данных iris. Визуализация распределения бутстрап реплик и доверительного интервала позволяет лучше понять оценку точности среднего значения длины чашелистика, полученной на основе исходных данных. Бутстрап является мощным инструментом для оценки неопределенности статистических оценок без предположений о распределении популяции. ```

Этот R Markdown документ теперь содержит как EDA, так и бутстрап анализ в одном файле, организованном по разделам и с пояснениями. Вы можете скопировать этот код в RStudio, сохранить как .Rmd файл и нажать “Knit” для создания HTML-отчета.