← Назад к вопросам
Что такое доверительный интервал?
1.0 Junior🔥 121 комментариев
#Статистика и A/B тестирование
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Доверительный интервал (Confidence Interval)
Определение
Доверительный интервал — это диапазон значений, который, с заданной степенью уверенности (обычно 95%), содержит истинное значение параметра генеральной совокупности.
Ключевая интерпретация
Если мы построим 100 доверительных интервалов 95% для одного и того же параметра на основе 100 разных выборок, примерно 95 из них будут содержать истинное значение параметра.
Внимание: НЕ говорить "параметр находится в интервале с 95% вероятностью". Параметр — фиксированное значение, интервал — случайный.
Математическая формула
Для выборочного среднего:
ДИ = X + t(a/2) * (s / sqrt(n))
где:
- X = выборочное среднее
- t(a/2) = критическое значение t-распределения
- s = выборочное стандартное отклонение
- n = размер выборки
Пример на Python
import numpy as np
from scipy import stats
# Генерируем выборку
np.random.seed(42)
data = np.random.normal(loc=100, scale=15, size=50)
# Вычисляем статистику
n = len(data)
mean = np.mean(data)
std = np.std(data, ddof=1)
std_error = std / np.sqrt(n)
# 95% доверительный интервал
alpha = 0.05
t_critical = stats.t.ppf(1 - alpha/2, df=n-1)
margin_of_error = t_critical * std_error
lower_bound = mean - margin_of_error
upper_bound = mean + margin_of_error
print(f"95% ДИ: [{lower_bound:.2f}, {upper_bound:.2f}]")
Различные типы доверительных интервалов
1. Для среднего значения
# Когда σ неизвестна (обычно)
ci_t = stats.t.interval(0.95, df=n-1, loc=mean, scale=std_error)
2. Для доли (пропорции)
from statsmodels.stats.proportion import proportion_confint
successes = 45
total = 100
ci_prop = proportion_confint(successes, total, alpha=0.05)
print(f"ДИ для доли: {ci_prop}")
3. Для разности средних (две группы)
group1 = np.random.normal(100, 15, 30)
group2 = np.random.normal(105, 15, 30)
t_stat, p_value = stats.ttest_ind(group1, group2)
mean_diff = np.mean(group1) - np.mean(group2)
Факторы, влияющие на ширину ДИ
- Размер выборки (n): больше n → уже интервал (пропорционально 1/sqrt(n))
- Стандартное отклонение: больше σ → шире интервал
- Уровень доверия: 95% интервал уже, чем 99%
# Демонстрация влияния размера выборки
for n in [10, 50, 100, 500]:
data = np.random.normal(100, 15, n)
ci = stats.t.interval(0.95, df=n-1, loc=np.mean(data),
scale=np.std(data, ddof=1)/np.sqrt(n))
width = ci[1] - ci[0]
print(f"n={n}: ширина = {width:.2f}")
Частые ошибки интерпретации
НЕПРАВИЛЬНО:
- Вероятность того, что истинное значение в интервале — 95%
- 95% данных находятся в доверительном интервале
ПРАВИЛЬНО:
- Если повторить процедуру выборки много раз, 95% построенных интервалов будут содержать истинное значение
- Уровень доверия 95% — долгосрочная частота покрытия
Применение в Data Science
- A/B тестирование: ДИ для разности конверсий
- Оценка параметров модели: ДИ для коэффициентов регрессии
- Предсказание: доверительные интервалы для предсказаний
- Контроль качества: границы нормального варьирования
Bootstrap ДИ
def bootstrap_ci(data, n_iterations=1000, ci=0.95):
bootstrap_means = []
for _ in range(n_iterations):
sample = np.random.choice(data, size=len(data), replace=True)
bootstrap_means.append(np.mean(sample))
bootstrap_means = np.array(bootstrap_means)
alpha = 1 - ci
lower = np.percentile(bootstrap_means, alpha/2 * 100)
upper = np.percentile(bootstrap_means, (1 - alpha/2) * 100)
return (lower, upper)
data = np.random.normal(100, 15, 50)
ci_boot = bootstrap_ci(data)
print(f"Bootstrap 95% ДИ: {ci_boot}")
Доверительные интервалы — это критически важный инструмент для грамотного статистического анализа и принятия решений на основе данных.