Как выполнить тест андерсона-дарлинга на python


Тест Андерсона-Дарлинга — это критерий согласия, который измеряет, насколько хорошо ваши данные соответствуют заданному распределению.

Этот тест чаще всего используется для определения того, соответствуют ли ваши данные нормальному распределению .

Этот тип теста полезен для проверки нормальности, которая является широко используемым предположением во многих статистических тестах, включая регрессию , дисперсионный анализ , t-тесты и многие другие.

Пример: тест Андерсона-Дарлинга в Python

Чтобы выполнить тест Андерсона-Дарлинга в Python, мы можем использовать функцию anderson() из библиотеки scipy.stats, которая использует следующий синтаксис:

Андерсон(x, dist=’норма’)

Золото:

  • x : таблица выборочных данных
  • dist : тип дистрибутива для тестирования. По умолчанию установлено «стандартное», но вы также можете указать «экспоненту» или «логистику».

Например, вот как выполнить тест Андерсона-Дарлинга на выборке из 50 нормально распределенных случайных величин:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.normal(size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =0.15006999533388665,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

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

  • Критическое значение для α = 0,01 составляет 1,021 . Поскольку статистика теста (0,150) не превышает этого критического значения, результаты не являются значимыми при уровне значимости 0,01.
  • Критическое значение для α = 0,025 составляет 0,858 . Поскольку статистика теста (0,150) не превышает этого критического значения, результаты не являются значимыми при уровне значимости 0,025.

И так далее.

Мы видим, что результаты теста не являются значимыми ни на каком уровне значимости, а это означает, что мы не будем отвергать нулевую гипотезу теста. Таким образом, у нас нет достаточных доказательств, чтобы утверждать, что выборочные данные не имеют нормального распределения.

Этот результат не должен вызывать удивления, учитывая, что мы использовали функцию np.rand.normal() для генерации выборки из 50 нормально распределенных значений.

Вместо этого предположим, что мы выполнили тест Андерсона-Дарлинга на выборке из 50 случайных целых чисел от 0 до 10:

 import numpy as np

#create data
np.random.seed(0)
data = np.random.randint(0, 10, size=50)

#perform Anderson-Darling Test 
from scipy.stats import anderson
anderson(data)

AndersonResult( statistic =1.1926463985076836,
               critical_values =array([0.538, 0.613, 0.736, 0.858, 1.021]),
               significance_level =array([15. , 10. , 5. , 2.5, 1. ]))

Статистика теста равна 1,1926 . Мы можем сравнить это значение с каждым критическим значением, соответствующим каждому уровню значимости, чтобы увидеть, являются ли результаты теста значимыми. Например:

  • Критическое значение для α = 0,01 составляет 1,021 . Поскольку статистика теста (1,1926) превышает это критическое значение, результаты являются значимыми на уровне значимости 0,01.
  • Критическое значение для α = 0,025 составляет 0,858 . Поскольку статистика теста (1,1926) превышает это критическое значение, результаты являются значимыми на уровне значимости 0,025.

И так далее.

Мы видим, что результаты теста значимы на каждом уровне значимости, а это означает, что мы отклоним нулевую гипотезу теста независимо от того, какой уровень значимости мы выберем. Таким образом, у нас есть достаточно доказательств, чтобы сказать, что выборочные данные не имеют нормального распределения.

Этот результат также не должен вызывать удивления, учитывая, что мы использовали функцию np.rand.randint() для генерации выборки из 50 случайных целых чисел от 0 до 10, которые вряд ли будут соответствовать нормальному распределению.

Дополнительные уроки по Python вы можете найти здесь .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *