Как работает Шапиро-Уилка?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Критерий Шапиро-Уилка для проверки нормальности распределения
Что это такое?
Тест Шапиро-Уилка (Shapiro-Wilk test) — это статистический тест для проверки гипотезы о том, что выборка данных распределена по нормальному (гауссовому) распределению. Это один из самых мощных и надёжных тестов нормальности, особенно для малых выборок (n < 50).
Как он работает?
Тест основан на сравнении эмпирической функции распределения с теоретической функцией нормального распределения:
-
Сортировка данных — упорядочиваем выборку по возрастанию: x₁ ≤ x₂ ≤ ... ≤ xₙ
-
Вычисление статистики W — рассчитывается коэффициент корреляции между упорядоченными данными и ожидаемыми значениями при нормальном распределении:
W = (Σ aᵢ · x₍ₙ₋ᵢ₊₁₎)² / Σ(xᵢ - x̄)²
где:
- aᵢ — коэффициенты Шапиро-Уилка (табулированы)
- x̄ — среднее значение выборки
- n — размер выборки
-
Интерпретация p-value — если p-value > 0.05, нулевую гипотезу о нормальности не отклоняем (данные можно считать нормально распределёнными). Если p-value < 0.05, отклоняем (распределение не нормальное).
Пример на Python
import numpy as np
from scipy.stats import shapiro
import matplotlib.pyplot as plt
# Пример 1: Нормально распределённые данные
normal_data = np.random.normal(loc=100, scale=15, size=50)
stat_normal, p_normal = shapiro(normal_data)
print(f"Нормальные данные: statistic={stat_normal:.4f}, p-value={p_normal:.4f}")
# Пример 2: Ненормально распределённые данные
skewed_data = np.random.exponential(scale=2, size=50)
stat_skewed, p_skewed = shapiro(skewed_data)
print(f"Экспоненциальные данные: statistic={stat_skewed:.4f}, p-value={p_skewed:.4f}")
# Визуализация
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
axes[0].hist(normal_data, bins=15, edgecolor="black", alpha=0.7)
axes[0].set_title(f"Нормальное (p={p_normal:.3f})")
axes[1].hist(skewed_data, bins=15, edgecolor="black", alpha=0.7)
axes[1].set_title(f"Экспоненциальное (p={p_skewed:.3f})")
plt.show()
Особенности и ограничения
Преимущества:
- Очень чувствителен к отклонениям от нормальности
- Хорош для малых выборок (5-50 наблюдений)
- Высокая статистическая мощность
Ограничения:
- Не рекомендуется для больших выборок (n > 5000) — может отклонить гипотезу на незначимых отклонениях
- Чувствителен к выбросам
- Требует точных критических значений
Когда использовать?
- Проверка предусловий для параметрических тестов (t-тест, ANOVA)
- Валидация данных перед регрессионным анализом
- Анализ остатков в линейной регрессии
- Проверка распределения в статистических исследованиях
Альтернативные тесты
Для больших выборок рекомендуется использовать:
- Колмогоров-Смирнов тест (Kolmogorov-Smirnov)
- Тест Андерсона-Дарлинга (Anderson-Darling)
- Q-Q график (визуальная проверка)
Шапиро-Уилка остаётся стандартом для практического анализа нормальности в исследованиях и бизнес-аналитике.