Что такое Центральная Предельная Теорема и почему она важна?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое Центральная Предельная Теорема и почему она важна?
Центральная Предельная Теорема (ЦПТ) — одна из самых фундаментальных теорем в статистике, которая утверждает, что при определённых условиях распределение средних значений выборок стремится к нормальному распределению, независимо от того, какое распределение имеет исходная генеральная совокупность. Это теория лежит в основе многих методов статистического анализа, используемых в 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()
Основной вывод: даже если исходные данные имеют совершенно нестандартное распределение, средние значения выборок образуют нормальное распределение!
Условия применения ЦПТ:
- Независимость — элементы выборки должны быть независимы друг от друга
- Одинаковое распределение — все величины из одного распределения
- Конечные моменты — среднее и дисперсия должны быть конечны
- Размер выборки — чем больше выборка, тем лучше приближение (обычно 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-распределение для малых выборок, а не нормальное ✅ Всегда проверяй предположения статистического теста
Почему ЦПТ важна:
- Универсальность — работает для любого исходного распределения
- Теоретическая основа — обосновывает множество статистических методов
- Практическая сила — позволяет делать выводы из выборок о генеральной совокупности
- Предсказуемость — средние значения ведут себя предсказуемо
Центральная Предельная Теорема — это не просто математический факт, это фундамент, на котором построена вся прикладная статистика и науки о данных. Без неё мы не могли бы делать выводы о совокупности на основе выборок.