← Назад к вопросам

Что такое доверительный интервал?

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)

Факторы, влияющие на ширину ДИ

  1. Размер выборки (n): больше n → уже интервал (пропорционально 1/sqrt(n))
  2. Стандартное отклонение: больше σ → шире интервал
  3. Уровень доверия: 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

  1. A/B тестирование: ДИ для разности конверсий
  2. Оценка параметров модели: ДИ для коэффициентов регрессии
  3. Предсказание: доверительные интервалы для предсказаний
  4. Контроль качества: границы нормального варьирования

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}")

Доверительные интервалы — это критически важный инструмент для грамотного статистического анализа и принятия решений на основе данных.