В этом документе представлен бутстрап анализ для оценки
доверительного интервала среднего значения длины чашелистика
(Sepal.Length) набора данных iris
с использованием языка R.
Сначала мы проведем разведочный анализ данных (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")
Диаграммы размаха для каждого признака в зависимости от вида ириса.
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'
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
Рассчитаем 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
Визуализируем распределение бутстрап реплик и покажем доверительный интервал.
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-отчета.