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

Что такое Центральная Предельная Теорема и почему она важна?

2.2 Middle🔥 111 комментариев
#Статистика и теория вероятностей

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

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

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

Что такое Центральная Предельная Теорема и почему она важна?

Центральная Предельная Теорема (ЦПТ) — одна из самых фундаментальных теорем в статистике, которая утверждает, что при определённых условиях распределение средних значений выборок стремится к нормальному распределению, независимо от того, какое распределение имеет исходная генеральная совокупность. Это теория лежит в основе многих методов статистического анализа, используемых в Data Analytics.

Формальное определение:

Если есть независимые случайные величины X1, X2, ..., Xn с одинаковым распределением, конечным математическим ожиданием μ и конечной дисперсией σ², то при n → ∞ распределение средних значений стремится к нормальному распределению с параметрами N(μ, σ²/n).

Простой пример:

Представьте, что у вас есть население с произвольным распределением возраста (может быть, очень неравномерное, с пиками в определённых возрастах).

import numpy as np
import matplotlib.pyplot as plt

# Исходное распределение — совершенно НЕ нормальное
# Например, смесь экспоненциальных и равномерных распределений
population = np.concatenate([
    np.random.exponential(20, 30000),
    np.random.uniform(0, 100, 30000)
])

# Возьмём много выборок по 30 человек из населения
sample_means = []
for i in range(10000):
    sample = np.random.choice(population, size=30)
    sample_means.append(np.mean(sample))

# График распределения средних
plt.hist(sample_means, bins=50, density=True, alpha=0.7)
plt.xlabel('Среднее значение выборки')
plt.ylabel('Частота')
plt.title('Распределение средних значений\n(видим нормальное распределение!)')
plt.show()

Основной вывод: даже если исходные данные имеют совершенно нестандартное распределение, средние значения выборок образуют нормальное распределение!

Условия применения ЦПТ:

  1. Независимость — элементы выборки должны быть независимы друг от друга
  2. Одинаковое распределение — все величины из одного распределения
  3. Конечные моменты — среднее и дисперсия должны быть конечны
  4. Размер выборки — чем больше выборка, тем лучше приближение (обычно n > 30)

Практическое значение для Data Analyst:

1. Доверительные интервалы

ЦПТ позволяет строить доверительные интервалы для среднего значения:

import scipy.stats as stats

# Выборка продаж за месяц
sales = np.array([100, 150, 120, 180, 200, 140, 110, 160, 190, 130])
n = len(sales)
mean = np.mean(sales)
std_error = np.std(sales, ddof=1) / np.sqrt(n)

# 95% доверительный интервал
confidence = 0.95
t_score = stats.t.ppf((1 + confidence) / 2, df=n-1)
margin_of_error = t_score * std_error

ci_lower = mean - margin_of_error
ci_upper = mean + margin_of_error

print(f'Среднее: {mean:.2f}')
print(f'95% доверительный интервал: [{ci_lower:.2f}, {ci_upper:.2f}]')

2. Проверка гипотез (A/B тестирование)

ЦПТ основана на предположении о нормальности распределения статистик при проверке гипотез:

from scipy.stats import ttest_ind

# Две группы пользователей
group_a = np.array([10, 12, 11, 13, 9, 11, 10, 12])
group_b = np.array([14, 16, 15, 17, 13, 15, 14, 16])

# t-тест (основан на ЦПТ)
t_statistic, p_value = ttest_ind(group_a, group_b)

print(f't-статистика: {t_statistic:.4f}')
print(f'p-значение: {p_value:.4f}')

if p_value < 0.05:
    print('Различия статистически значимы (отклоняем H0)')
else:
    print('Различий нет (не отклоняем H0)')

3. Проверка нормальности перед анализом

from scipy.stats import shapiro, normaltest

data = np.array([100, 110, 95, 120, 105, 115, 100, 108])

# Тест Шапиро-Уилка
stat, p_value = shapiro(data)
print(f'Shapiro-Wilk p-значение: {p_value:.4f}')

if p_value > 0.05:
    print('Данные нормально распределены')
else:
    print('Данные НЕ нормально распределены')

4. Регрессионный анализ

ЦПТ подкрепляет предположение о нормальности ошибок регрессии:

from sklearn.linear_model import LinearRegression
import statsmodels.api as sm

# Примеры данных
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1)
y = np.array([2, 4, 5, 4, 5])

# Построить регрессию
model = LinearRegression()
model.fit(X, y)

# Остатки должны быть нормально распределены (по ЦПТ)
residuals = y - model.predict(X)
print(f'Средняя ошибка: {np.mean(residuals):.4f}')
print(f'Стандартное отклонение: {np.std(residuals):.4f}')

Визуализация ЦПТ:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

# Экспериментируем с разными размерами выборок
fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# Исходное распределение (экспоненциальное)
sizes = [5, 10, 30, 100]
population = np.random.exponential(2, 100000)

for idx, size in enumerate(sizes):
    ax = axes[idx // 2, idx % 2]
    
    # Берём много выборок и считаем средние
    sample_means = [np.mean(np.random.choice(population, size)) 
                    for _ in range(10000)]
    
    ax.hist(sample_means, bins=50, density=True, alpha=0.7, label='Эмпирическое')
    
    # Теоретическое нормальное распределение
    mu = np.mean(population)
    sigma = np.std(population) / np.sqrt(size)
    x = np.linspace(mu - 4*sigma, mu + 4*sigma, 100)
    ax.plot(x, norm.pdf(x, mu, sigma), 'r-', label='Нормальное')
    
    ax.set_title(f'Размер выборки = {size}')
    ax.legend()
    ax.set_xlabel('Среднее значение')
    ax.set_ylabel('Плотность')

plt.tight_layout()
plt.show()

Типичные ошибки применения ЦПТ:

Ошибка 1: Считать, что ЦПТ применима к малым выборкам

# Для выборок < 30 нужна осторожность
small_sample = np.random.choice(population, 5)
mean = np.mean(small_sample)  # Не следует распределению Гаусса

Ошибка 2: Игнорировать зависимость между наблюдениями

# Временные ряды часто зависимы (нарушаем условие независимости)
time_series = np.array([100, 102, 104, 106, 108])  # Тренд!

Ошибка 3: Применять к очень асимметричным распределениям

# Распределение доходов очень асимметричное
# Нужна большая выборка (n > 100-200)

Практический чек-лист:

✅ Проверь независимость наблюдений ✅ Проверь, что выборка достаточно велика (n > 30 или n > 100 для асимметричных) ✅ Проверь наличие выбросов (могут исказить результаты) ✅ Используй t-распределение для малых выборок, а не нормальное ✅ Всегда проверяй предположения статистического теста

Почему ЦПТ важна:

  1. Универсальность — работает для любого исходного распределения
  2. Теоретическая основа — обосновывает множество статистических методов
  3. Практическая сила — позволяет делать выводы из выборок о генеральной совокупности
  4. Предсказуемость — средние значения ведут себя предсказуемо

Центральная Предельная Теорема — это не просто математический факт, это фундамент, на котором построена вся прикладная статистика и науки о данных. Без неё мы не могли бы делать выводы о совокупности на основе выборок.

Что такое Центральная Предельная Теорема и почему она важна? | PrepBro