Тест Шапиро-Уилка, тест Андерсона-Дарлинга, критерий К-квадрата Д’Агостино

Содержание: -

  1. Тест Шапиро-Вилка
  2. Тест Андерсона-Дарлинга
  3. К-квадрат Д’Агостино

1. Тест Шапиро-Вилка.

Тест Шапиро – Уилка - это тест на нормальность в частотной статистике. Его опубликовали в 1965 году Сэмюэл Сэнфорд Шапиро и Мартин Уилк.

Тест Шапиро-Уилка используется для вычисления статистики W, которая проверяет, происходит ли случайная выборка x1, x2,…, xn (конкретно) из нормального распределения. Небольшие значения W свидетельствуют об отклонении от нормальности и процентных пунктов для статистики W, полученной с помощью моделирования Монте-Карло.

Этот тест показал себя очень хорошо по сравнению с другими тестами на соответствие.

Предположения:

  • Наблюдения в каждой выборке независимы и одинаково распределены (iid).

Гипотеза:

H0: Данные соответствуют нормальному распределению.

H1: Данные не соответствуют нормальному распределению.

#Python code
#Example of Shapiro Wilk Test
from scipy.stats import shapiro
data = [1,1.2,0.2,0.3,-1,-0.2,-0.6,-0.8,0.8,0.1]
stat, p = shapiro(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
    print("Data follows Normal Distribution")
else:
    print("Data does not follow Normal Distribution")
OUTPUT:
Data follows Normal Distribution

2. Тест Андерсона-Дарлинга

Тест Андерсона – Дарлинга - это статистический тест того, взят ли данный образец данных из данного распределения вероятностей. В своей базовой форме тест предполагает, что в тестируемом распределении нет параметров, которые необходимо оценить, и в этом случае тест и его набор критических значений не подлежат распределению.

Его можно использовать для проверки правильности выборки данных. Тест представляет собой модифицированную версию более сложного непараметрического статистического критерия согласия, называемого тестом Колмогорова-Смирнова.

Предположения:

  • Наблюдения в каждой выборке независимы и одинаково распределены (iid).

Гипотеза:

H0: Данные соответствуют нормальному распределению.

H1: Данные не соответствуют нормальному распределению.

#Python code
#Example of Anderson-Darling Test
from scipy.stats import anderson
data = [1,1.2,0.2,0.3,-1,-0.2,-0.6,-0.8,0.8,0.1]
result = anderson(data)
OUTPUT:
AndersonResult(statistic=0.19788206806788722, critical_values=array([0.501, 0.57 , 0.684, 0.798, 0.95 ]), significance_level=array([15. , 10. ,  5. ,  2.5,  1. ]))

Статистика теста: 0,1979. Мы можем сравнить это значение с каждым критическим значением, которое соответствует каждому уровню значимости, чтобы увидеть, значимы ли результаты теста.

#Python code
print('stat=%.3f' % (result.statistic))
for i in range(len(result.critical_values)):
 sl, cv = result.significance_level[i], result.critical_values[i]
 if result.statistic < cv:
  print('Data follows Normal at the %.1f%% level' % (sl))
 else:
  print('Data does not follows Normal at the %.1f%% level' % (sl))
OUTPUT:
Data follows Normal at the 15.0% level
Data follows Normal at the 10.0% level
Data follows Normal at the 5.0% level
Data follows Normal at the 2.5% level
Data follows Normal at the 1.0% level

3. Тест К-квадрата Д’Агостино.

Тест Д’Агостино K² вычисляет сводную статистику на основе данных, а именно эксцесс и асимметрию, чтобы определить, отклоняется ли распределение данных от нормального распределения, названного в честь Ральфа Д’Агостино.

  • Наклон - это количественная оценка того, насколько распределение сдвинуто влево или вправо, мера асимметрии в распределении.
  • эксцесс количественно определяет, какая часть распределения находится в хвосте. Это простой и часто используемый статистический тест на нормальность.

Предположения:

  • Наблюдения в каждой выборке независимы и одинаково распределены (iid).

Гипотеза:

H0: Данные соответствуют нормальному распределению.

H1: Данные не соответствуют нормальному распределению.

#Python code
#Example ofD’Agostino’s K-squared Test
from scipy.stats import normaltest
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
stat, p = normaltest(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
 print('Data follows normal')
else:
 print('Data does not follow normal')
OUTPUT:
stat=3.392, p=0.183
Data follows normal

Свяжитесь со мной через: -

LinkedIn: - https://www.linkedin.com/in/shivam-mishra17/

Электронная почта: - [email protected]

Twitter: - https://twitter.com/ishivammishra17