Тест Шапиро-Уилка (Shapiro-Wilk Test)

Автор:

Популярный статистический метод проверки гипотезы о нормальности распределения выборки

Тест Шапиро-Уилка: проверка нормальности распределения

Тест Шапиро-Уилка — это один из самых популярных статистических методов проверки гипотезы о нормальности распределения выборки. Он особенно эффективен на небольших выборках (до 2000 наблюдений) и часто используется в машинном обучении, медицине, психологии и других областях, где важно проверить предпосылки для параметрических тестов.

Идея метода заключается в сравнении упорядоченных наблюдений с ожидаемыми значениями нормального распределения. Статистика теста отражает, насколько близка выборка к нормальной кривой. Результатом является p-value, по которому принимается решение.

Формулировка гипотез:

  • H0 (нулевая гипотеза): данные распределены нормально
  • H1 (альтернативная гипотеза): данные не распределены нормально

Интерпретация:
Если p-value > 0.05, то у нас нет оснований отвергнуть H0, и данные можно считать нормальными.
Если p-value <= 0.05, то H0 отвергается, и данные не являются нормальными.

Пример на Python:

python
import numpy as np
from scipy.stats import shapiro

Генерируем данные

normal_data = np.random.normal(loc=0, scale=1, size=100)
non_normal_data = np.random.exponential(scale=1, size=100)

Тест Шапиро-Уилка

stat1, p1 = shapiro(normal_data)
stat2, p2 = shapiro(non_normal_data)

print('Нормальные данные: статистика =’, stat1, ', p =’, p1)
print('Ненормальные данные: статистика =’, stat2, ', p =’, p2)

if p1 > 0.05:
print(‘Выборка normal_data распределена нормально’)
else:
print(‘Выборка normal_data не является нормальной’)

if p2 > 0.05:
print(‘Выборка non_normal_data распределена нормально’)
else:
print(‘Выборка non_normal_data не является нормальной’)