Условие
В выборке из 25 пользователей среднее время сессии — 8.4 минуты, выборочное стандартное отклонение — 3.6 минуты. Постройте 95% доверительный интервал для среднего времени сессии в популяции. Объясните, как изменится интервал, если n = 100 или 1000 (при тех же x̄, s).
Решение
Формула
При неизвестной σ:
CI = x̄ ± t_(α/2, n−1) · s / √n
Где t — квантиль распределения Стьюдента с n − 1 степенью свободы. При α = 0.05 и n = 25: t_(0.025, 24) ≈ 2.064.
Расчёт для n=25
SE = s / √n = 3.6 / 5 = 0.72
ME = 2.064 · 0.72 ≈ 1.486
CI = (8.4 − 1.49 ; 8.4 + 1.49) = (6.91 ; 9.89)
С 95% «уверенностью» средний в популяции — между 6.9 и 9.9 минут.
import scipy.stats as st
import numpy as np
x_bar, s, n, alpha = 8.4, 3.6, 25, 0.05
t_crit = st.t.ppf(1 - alpha/2, df=n-1)
me = t_crit * s / np.sqrt(n)
print(f"CI: ({x_bar - me:.2f} ; {x_bar + me:.2f})")Что значит «с 95% уверенностью»
Не: «вероятность, что μ в этом интервале — 95%». μ — фиксированная константа, не случайная.
Корректно: «если повторить эксперимент много раз с разными случайными выборками и каждый раз строить интервал по этой формуле — 95% таких интервалов накроют истинное μ».
Влияние n
При тех же x̄ = 8.4, s = 3.6:
| n | SE = s/√n | t_crit | ME | CI |
|---|---|---|---|---|
| 25 | 0.720 | 2.064 | 1.49 | (6.91 ; 9.89) |
| 100 | 0.360 | 1.984 | 0.71 | (7.69 ; 9.11) |
| 1000 | 0.114 | 1.962 | 0.22 | (8.18 ; 8.62) |
При n → ∞:
t_crit → 1.96(квантиль нормального);ME → 0пропорционально1/√n.
Чтобы сократить интервал в 2 раза, нужно увеличить n в 4 раза.
Когда использовать z вместо t
- σ известна (редко в практике) → z.
- σ неизвестна, n маленькая → t.
- σ неизвестна, n большая (>30-50) → t ≈ z.
Bootstrap CI для несимметричных данных
import numpy as np
rng = np.random.default_rng(0)
data = ... # реальные значения
boots = np.array([rng.choice(data, len(data), replace=True).mean()
for _ in range(10000)])
ci = np.percentile(boots, [2.5, 97.5])Не требует нормальности; работает с любыми распределениями.
Подводные камни
- «C 95% вероятностью μ внутри» — типичная ошибка интерпретации. μ — константа, вероятностно не μ, а интервал.
svsσ:s— выборочное (np.std(ddof=1)),σ— популяционное. Не путать; default ddof вnp.std= 0 (популяционное), что чаще не то, что нужно.- n=25 c сильно скошенным X: t-test предполагает нормальность X — лучше bootstrap или log-преобразование.
- Доверие к CI на маленьких n: t-распределение «компенсирует» через широкие хвосты, но для n<10 разумнее непараметрика.
- «CI пересекается с нулём → нет эффекта» — для разности средних да, но не путать с p-value > 0.05 (одно эквивалентно другому, но не «эффект = 0»).
- Несимметричный CI: для логнормальных метрик логичнее CI на медиану / на лог-среднее.
- Множественные CI: 10 CI с 95% покрытием → один из них с большой вероятностью промахнётся. Применяйте Бонферрони / FDR.
Эталонный ответ
CI = x̄ ± t_(α/2, n−1) · s/√n = 8.4 ± 2.064 · 3.6/5 = 8.4 ± 1.49 = (6.91; 9.89)
При n = 100 — CI ≈ (7.69; 9.11), при n = 1000 — (8.18; 8.62). Ширина падает как 1/√n — чтобы вдвое сократить, нужно учетверить выборку.
Корректная интерпретация: «процедура построения CI накроет истинное μ в 95% случаев», не «μ ∈ CI с вероятностью 0.95».