Bootstrap — это статистический метод, используемый для оценки характеристик распределения статистик (таких как среднее, стандартное отклонение, коэффициенты регрессии и т.д.) путем многократного случайного повторного выборочного отбора из данных с заменой. Этот метод особенно полезен в случаях, когда нет явного аналитического способа оценить распределение статистики, или когда выборка данных ограничена.
Основные шаги
Пример
import numpy as np
# Исходные данные
data = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
# Параметры Bootstrap
n_iterations = 1000 # Количество bootstrap-выборок
n_size = len(data) # Размер каждой выборки (равен размеру исходных данных)
# Функция для вычисления статистики (в данном случае среднего)
def bootstrap_mean(data, n_iterations, n_size):
means = []
for _ in range(n_iterations):
sample = np.random.choice(data, size=n_size, replace=True)
sample_mean = np.mean(sample)
means.append(sample_mean)
return means
# Получение распределения средних значений
bootstrap_means = bootstrap_mean(data, n_iterations, n_size)
# Оценка среднего и стандартной ошибки
mean_estimate = np.mean(bootstrap_means)
standard_error = np.std(bootstrap_means)
print(f"Оценка среднего: {mean_estimate}")
print(f"Стандартная ошибка: {standard_error}")
Применение метода
Построим 95%-й доверительный интервал для среднего значения с использованием Bootstrap.
# Исходные данные
data = np.array([10, 20, 30, 40, 50, 60, 70, 80, 90, 100])
# Параметры Bootstrap
n_iterations = 1000
n_size = len(data)
# Функция для вычисления доверительного интервала
def bootstrap_confidence_interval(data, n_iterations, n_size, confidence_level=0.95):
means = []
for _ in range(n_iterations):
sample = np.random.choice(data, size=n_size, replace=True)
sample_mean = np.mean(sample)
means.append(sample_mean)
lower_percentile = (1.0 - confidence_level) / 2.0 * 100
upper_percentile = (confidence_level + (1.0 - confidence_level) / 2.0) * 100
lower_bound = np.percentile(means, lower_percentile)
upper_bound = np.percentile(means, upper_percentile)
return lower_bound, upper_bound
# Получение доверительного интервала
lower, upper = bootstrap_confidence_interval(data, n_iterations, n_size)
print(f"95%-й доверительный интервал для среднего: [{lower}, {upper}]")
Bootstrap — это мощный и гибкий статистический метод, который позволяет оценивать характеристики распределения статистик из ограниченных данных путем многократного повторного выборочного отбора с заменой. Он широко используется для оценки стандартных ошибок, доверительных интервалов и распределений статистик, а также в методах машинного обучения для улучшения устойчивости моделей.