Як виконати тест шапіро-вілка на python


Тест Шапіро-Вілка є тестом нормальності. Він використовується для визначення того, чи походить вибірка з нормального розподілу .

Щоб виконати тест Shapiro-Wilk у Python, ми можемо використати функцію scipy.stats.shapiro() , яка використовує такий синтаксис:

scipy.stats.shapiro(x)

золото:

  • x: таблиця зразків даних.

Ця функція повертає тестову статистику та відповідне значення p.

Якщо p-значення нижче певного рівня значущості, то ми маємо достатньо доказів, щоб стверджувати, що вибіркові дані не походять із нормального розподілу.

Цей підручник показує кілька прикладів використання цієї функції на практиці.

Приклад 1: тест Шапіро-Вілка на нормально розподілених даних

Припустимо, що ми маємо такі зразки даних:

 from numpy.random import seed
from numpy.random import randn

#set seed (eg make this example reproducible)
seed(0)

#generate dataset of 100 random values that follow a standard normal distribution
data = randn(100)

Наступний код показує, як виконати тест Шапіро-Вілка на цій вибірці зі 100 значень даних, щоб визначити, чи походять вони з нормального розподілу:

 from scipy.stats import shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9926937818527222, pvalue=0.8689165711402893)

З результату ми бачимо, що статистика тесту становить 0,9927 , а відповідне значення p — 0,8689 .

Оскільки p-значення не менше 0,05, ми не можемо відхилити нульову гіпотезу. У нас немає достатніх доказів того, що дані вибірки не походять із нормального розподілу.

Цей результат не повинен бути несподіваним, оскільки ми згенерували вибіркові дані за допомогою функції randn() , яка генерує випадкові значення, що відповідають стандартному нормальному розподілу.

Приклад 2: тест Шапіро-Вілка на ненормально розподілених даних

Тепер припустімо, що ми маємо такі зразки даних:

 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 shapiro

#perform Shapiro-Wilk test
shapiro(data)

ShapiroResult(statistic=0.9581913948059082, pvalue=0.002994443289935589)

З результату ми бачимо, що статистика тесту становить 0,9582 , а відповідне значення p — 0,00299 .

Оскільки p-значення менше 0,05, ми відхиляємо нульову гіпотезу. У нас є достатньо доказів, щоб стверджувати, що вибіркові дані не походять із нормального розподілу.

Цей результат також не повинен бути дивним, оскільки ми згенерували вибіркові дані за допомогою функції Poisson() , яка генерує випадкові значення, що відповідають розподілу Пуассона .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші тести нормальності в різних статистичних програмах:

Як виконати тест Шапіро-Вілка в R
Як виконати тест Андерсона-Дарлінга в Python
Як виконати тест Колмогорова-Смирнова на Python

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

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