Собесов

Karpov Stepik: Центральная предельная теорема на пальцах

Статистика и теорверЦПТЛёгкаяJunior

Условие

  1. Сформулируйте центральную предельную теорему.
  2. Возьмём экспоненциальное распределение X ~ Exp(λ=1) (среднее 1, дисперсия 1). Как будет выглядеть распределение выборочного среднего по выборкам размера n=5, n=30, n=100? Какие будут параметры?
  3. Можно ли применять CLT к выборкам с тяжёлыми хвостами (Cauchy)? Почему?

Решение

1) Формулировка

Пусть X₁, X₂, ..., Xₙ — независимые одинаково распределённые случайные величины с конечным средним μ и конечной дисперсией σ². Тогда при n → ∞:

(X̄ − μ) / (σ / √n)  →  N(0, 1)

где X̄ = (X₁ + ... + Xₙ) / n — выборочное среднее.

Эквивалентно: X̄ ≈ N(μ, σ²/n) при больших n.

2) Экспонента с n=5, n=30, n=100

X ~ Exp(λ=1): μ = 1/λ = 1, σ² = 1/λ² = 1, σ = 1.

n Распределение X̄ μ_x̄ σ_x̄
5 сильно скошено вправо (исходное distrib. влияет) 1 1/√5 ≈ 0.447
30 почти симметрично, но «правый хвост» виден 1 1/√30 ≈ 0.183
100 визуально неотличимо от нормального 1 1/√100 = 0.10

Эмпирически:

import numpy as np
import matplotlib.pyplot as plt
 
np.random.seed(0)
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
for ax, n in zip(axes, [5, 30, 100]):
    means = np.random.exponential(scale=1.0, size=(10000, n)).mean(axis=1)
    ax.hist(means, bins=50, density=True, alpha=0.7)
    ax.axvline(1, color='red', linestyle='--')
    ax.set_title(f'n = {n}\nstd = {means.std():.3f}')
plt.show()

Видно: при n=5 распределение ещё «горбатое» вправо; при n=30 — близко к нормальному; при n=100 — почти идеально.

Правило «n ≥ 30»

Грубая оценка для not-too-skewed distributions. Для very-skewed (как экспонента) надо n ≥ 50-100; для near-symmetric (как U(0,1)) даже n=10 уже близко к нормальному.

3) Cauchy

X ~ Cauchy(0, 1) — бесконечная дисперсия (σ² = ∞), даже среднее не определено строго.

CLT не применяется. Более того, среднее по n cauchy-выборкам имеет то же распределение Cauchy(0, 1) (свойство устойчивости). Никакой нормализации не получится.

samples = np.random.standard_cauchy(size=(10000, 1000)).mean(axis=1)
print("std среднего:", samples.std())   # огромное, не сходится

Связи CLT и других теорем

  • Закон больших чисел (LLN): X̄ → μ (по вероятности или почти наверное). Говорит о точке сходимости.
  • CLT: говорит о скорости и форме сходимости — X̄ − μ порядка σ/√n, форма — нормальная.

Зачем это аналитику

  1. Доверительные интервалы для среднего: X̄ ± z·σ/√n.
  2. t-тест для разности средних — основан на CLT-приближении.
  3. A/B-тесты с конверсиями — пропорция ≈ нормальна для больших N (CLT для Бернулли).

Подводные камни

  1. «n ≥ 30 всегда» — миф. Для логнормальных с экстремальным skew нужно n ≥ 1000+.
  2. Cauchy / Pareto без хвоста — никакого CLT.
  3. «Распределение средних = нормальное» — это распределение выборочного среднего, а не самой X. Часто путают.
  4. σ неизвестна → используем s (выборочное стандартное), и тогда (X̄ − μ)/(s/√n) — это t-распределение, не нормальное.
  5. Зависимые наблюдения (временные ряды) — CLT не работает в обычном виде; нужны модификации (Newey-West и пр.).
  6. Тяжёлые хвосты в реальных данных (выручка, цены, время сессии) — даже при n=10000 «эмпирическое среднее» нестабильно. Использовать медиану + bootstrap.
  7. «Малая n → точный t-test»: t-test предполагает нормальность X, а не только X̄. На сильно скошенных малых выборках — нужна непараметрика.

Эталонный ответ

CLT: (X̄ − μ) / (σ/√n) → N(0,1). Для Exp(1): μ=1, σ=1, при n=100 X̄ ≈ N(1, 0.01). Cauchy — CLT не применяется (бесконечная дисперсия / undefined mean). Практический вывод для аналитика: доверительные интервалы и тесты на разность средних опираются на CLT, но для тяжёлых хвостов и зависимых данных нужны bootstrap / непараметрика.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти