Як виконати тест колмогорова-смирнова на 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *