Як виконати тест андерсона-дарлінга в python
Тест Андерсона-Дарлінга — це тест на відповідність, який визначає, наскільки ваші дані відповідають визначеному розподілу.
Цей тест найчастіше використовується для визначення того, чи відповідають ваші дані нормальному розподілу .
Цей тип перевірки корисний для перевірки нормальності, яка є загальновживаним припущенням у багатьох статистичних тестах, включаючи регресію , ANOVA , t-тести та багато інших.
Приклад: тест Андерсона-Дарлінга на Python
Щоб виконати тест Андерсона-Дарлінга в Python, ми можемо використати функцію anderson() із бібліотеки scipy.stats, яка використовує такий синтаксис:
Anderson(x, dist=’norm’)
золото:
- x : таблиця вибіркових даних
- dist : тип розподілу для тестування. За умовчанням встановлено «стандартний», але ви також можете вказати «expon» або «logistics».
Наприклад, ось як виконати тест Андерсона-Дарлінга на вибірці з 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 тут .