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

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

1.2 Junior🔥 181 комментариев
#Статистика и теория вероятностей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI21 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Доверительный интервал: определение и интерпретация

Определение

Доверительный интервал (confidence interval, CI) — это диапазон значений вокруг точечной оценки параметра, который с заданной вероятностью (обычно 95%) содержит истинное значение этого параметра в генеральной совокупности.

Например: если мы оцениваем среднее время использования приложения в день, то доверительный интервал 95% может быть [45 минут, 55 минут]. Это означает, что с 95% вероятностью истинное среднее значение в генеральной совокупности находится в этом диапазоне.

Правильная интерпретация

Что НЕ означает доверительный интервал 95%

❌ "Вероятность того, что истинное значение лежит в диапазоне [45, 55], равна 95%"

Это частая ошибка! Истинное значение либо находится в интервале, либо нет — вероятность либо 0, либо 1.

Что ОЗНАЧАЕТ доверительный интервал 95%

✅ "Если бы мы повторили эксперимент много раз (каждый раз собирая новую выборку и вычисляя новый доверительный интервал), то примерно в 95% случаев вычисленные интервалы содержали бы истинное значение параметра."

Это правильная частотная интерпретация.

Примеры расчётов в Python

import numpy as np
from scipy import stats
import pandas as pd

# Пример 1: Доверительный интервал для среднего
# Данные: время использования приложения в днях (в минутах)
usage_times = np.array([45, 52, 48, 55, 50, 49, 54, 51, 47, 53])

# Рассчитываем 95% доверительный интервал для среднего
mean = usage_times.mean()
std_error = stats.sem(usage_times)  # standard error of the mean
confidence_level = 0.95
alpha = 1 - confidence_level

# t-критерий (используется для малых выборок)
t_critical = stats.t.ppf(1 - alpha/2, len(usage_times) - 1)
ci_lower = mean - t_critical * std_error
ci_upper = mean + t_critical * std_error

print(f"Среднее: {mean:.2f}")
print(f"95% CI: [{ci_lower:.2f}, {ci_upper:.2f}]")

# Пример 2: Использование встроенной функции
from scipy.stats import t
ci = t.interval(0.95, len(usage_times)-1, loc=mean, scale=std_error)
print(f"95% CI (встроенная функция): [{ci[0]:.2f}, {ci[1]:.2f}]")

# Пример 3: Доверительный интервал для доли (например, CTR)
imports from statsmodels.stats.proportion import proportion_confint

# 1000 кликов, 120 конверсий
clicks = 1000
conversions = 120
ctr = conversions / clicks  # 0.12 или 12%

# Доверительный интервал для доли (точный метод Wilson)
ci_lower, ci_upper = proportion_confint(conversions, clicks, alpha=0.05, method='wilson')
print(f"CTR: {ctr:.1%}")
print(f"95% CI: [{ci_lower:.2%}, {ci_upper:.2%}]")

Практическое применение в аналитике

1. A/B тестирование

# Анализируем результаты A/B теста
group_a_conversions = 95
group_a_total = 1000
group_b_conversions = 115
group_b_total = 1000

ctr_a = group_a_conversions / group_a_total
ctr_b = group_b_conversions / group_b_total

# Доверительные интервалы
ci_a = proportion_confint(group_a_conversions, group_a_total, alpha=0.05)
ci_b = proportion_confint(group_b_conversions, group_b_total, alpha=0.05)

print(f"Группа A: {ctr_a:.1%} [95% CI: {ci_a[0]:.2%}, {ci_a[1]:.2%}]")
print(f"Группа B: {ctr_b:.1%} [95% CI: {ci_b[0]:.2%}, {ci_b[1]:.2%}]")

# Если интервалы не пересекаются → с 95% вероятностью есть значимая разница
if ci_a[1] < ci_b[0] or ci_b[1] < ci_a[0]:
    print("✓ Результат статистически значим")
else:
    print("✗ Нет значимой разницы (интервалы пересекаются)")

2. Оценка метрик в данный момент времени

# Средняя выручка на пользователя с доверительным интервалом
revenues = np.array([10.50, 15.20, 8.99, 22.50, 12.99, 9.50, 18.75, 14.20, 11.99, 19.50])

mean_revenue = revenues.mean()
ci = t.interval(0.95, len(revenues)-1, loc=mean_revenue, scale=stats.sem(revenues))

print(f"Средняя выручка: ${mean_revenue:.2f}")
print(f"95% CI: [${ci[0]:.2f}, ${ci[1]:.2f}]")

Факторы, влияющие на ширину доверительного интервала

  1. Размер выборки (n): Чем больше выборка, тем уже интервал. CI ∝ 1/√n
  2. Стандартное отклонение: Чем больше разброс данных, тем шире интервал
  3. Уровень доверия: 99% интервал шире, чем 95% интервал
  4. Тип распределения: t-тест для малых выборок, z-тест для больших

Правила большого пальца для интерпретации

  • Не пересекаются с нулём → параметр статистически отличен от нуля на уровне α
  • Не пересекаются между группами → разница между группами статистически значима
  • Широкий интервал → недостаточно данных или высокая вариабельность (нужен больший размер выборки)
  • Узкий интервал → точная оценка параметра

Частые ошибки в интерпретации

  1. ❌ Думать, что 95% CI означает, что истинное значение находится там с 95% вероятностью
  2. ❌ Игнорировать ширину интервала (узкий интервал = точнее, широкий = менее уверены)
  3. ❌ Сравнивать два доверительных интервала, посмотрев, пересекаются ли они (нужен t-test)
  4. ❌ Использовать CI для одной группы, когда нужно сравнивать две группы

SQL-запрос для вычисления доверительного интервала

WITH metrics AS (
  SELECT 
    COUNT(*) as n,
    AVG(revenue) as mean_revenue,
    STDDEV(revenue) as std_revenue
  FROM transactions
  WHERE date >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT 
  mean_revenue,
  mean_revenue - 1.96 * (std_revenue / SQRT(n)) as ci_lower_95,
  mean_revenue + 1.96 * (std_revenue / SQRT(n)) as ci_upper_95
FROM metrics;

Это верно для больших выборок (n > 30). Для малых выборок используйте t-критерий вместо 1.96.

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