Як виконати тест колмогорова-смирнова на python
Тест Колмогорова-Смирнова використовується для перевірки того, чи походить вибірка з певного розподілу.
Щоб виконати тест Колмогорова-Смирнова в Python, ми можемо використовувати scipy.stats.kstest() для тесту з одним зразком або scipy.stats.ks_2samp() для тесту з двох зразків.
Цей підручник демонструє приклад використання кожної функції на практиці.
Приклад 1: Випробування Колмогорова-Смирнова
Припустимо, що ми маємо такі зразки даних:
from numpy.random import seed from numpy.random import fish #set seed (eg make this example reproducible) seed(0) #generate dataset of 100 values that follows a Poisson distribution with mean=5 data = fish(5, 100)
Наступний код показує, як виконати тест Колмогорова-Смирнова на цій вибірці зі 100 значень даних, щоб визначити, чи походять вони з нормального розподілу:
from scipy.stats import kstest #perform Kolmogorov-Smirnov test kstest(data, ' norm ') KstestResult(statistic=0.9072498680518208, pvalue=1.0908062873170218e-103)
З результату ми бачимо, що тестова статистика становить 0,9072 , а відповідне значення p — 1,0908e-103 . Оскільки p-значення менше 0,05, ми відхиляємо нульову гіпотезу. У нас є достатньо доказів, щоб стверджувати, що вибіркові дані не походять із нормального розподілу.
Цей результат також не повинен бути дивним, оскільки ми згенерували вибіркові дані за допомогою функції Poisson() , яка генерує випадкові значення, що відповідають розподілу Пуассона .
Приклад 2: Двопробовий тест Колмогорова-Смирнова
Скажімо, ми маємо два зразки наборів даних:
from numpy.random import seed from numpy.random import randn from numpy.random import lognormal #set seed (eg make this example reproducible) seed(0) #generate two datasets data1 = randn(100) data2 = lognormal(3, 1, 100)
Наступний код показує, як виконати тест Колмогорова-Смирнова на цих двох зразках, щоб визначити, чи походять вони з одного розподілу:
from scipy.stats import ks_2samp #perform Kolmogorov-Smirnov test ks_2samp(data1, data2) KstestResult(statistic=0.99, pvalue=4.417521386399011e-57)
З результату ми бачимо, що тестова статистика становить 0,99 , а відповідне значення p — 4,4175e-57 . Оскільки p-значення менше 0,05, ми відхиляємо нульову гіпотезу. У нас є достатньо доказів, щоб стверджувати, що два зразки наборів даних не з одного розподілу.
Цей результат також не повинен бути дивним, оскільки ми генерували значення для першої вибірки, використовуючи стандартний нормальний розподіл, і значення для другої вибірки, використовуючи логнормальний розподіл.
Додаткові ресурси
Як виконати тест Шапіро-Вілка на Python
Як виконати тест Андерсона-Дарлінга в Python