У статистиці існують параметричні та непараметричні методи аналізу. Параметричні методи є більш потужними (про статистичну потужність можна почитати статтю “Статистична потужність і непотужна статистика”), але вони грунтуються на припущенні, що дані підкоряються закону нормального розподілу. Непараметричні методи, в свою чергу, є менш потужними, однак не залежать від розподілу даних (обережно! існують винятки). Отже, по можливості, краще застосовувати параметричні методи. А значить цю можливість - тобто відповідність даних нормальному розподілу - потрібно підтвердити. Як виконувати перевірку нормальності розподілу (і не прострелити собі ногу)?

Колись мені здавалось, що все просто. У світі є багато статистичних критеріїв для цього. З них найбільшу потужність проявляє критерій Шапіро-Уілка. Значить, застосовуєм до даних критерій Шапіро-Уілка, дивимось на р-величину, якщо вона <0.05 - значить розподіл відрізняється від нормального, і слід використовувати непараметричні методи. Якщо ж р>0.05 - кажемо, що розподіл даних подібний до нормального, і використовуємо параметричні методи.

На практиці ж виникло питання: якщо ми збираємось аналізувати залежність неперервної змінної від номінальної за допомогою параметричних критеріїв (t-критерій Стьюдента, дисперсійний аналіз), слід перевіряти нормальний розподіл неперервної змінної у цілому, чи окремо у кожній з груп? І якщо групи маленькі, по 4-6 об’єктів, і тому відхилити нульову гіпотезу про нормальний розподіл не получається, що тоді робити? Із цим питанням (попередньо сформулювавши питання англійською) ще у 2011р. я звернувся на сайт CrossValidated (stats.stackexchange.com). До речі, з того часу я періодично туди заходжу, і якщо бачу питання, які досі без відповіді, а відповідь я знаю - пишу (можете подивитись мій профіль на цьому сайті).

Так-от, Др. Грег Сноу дав досить вичерпну і гарну відповідь, переклад якої я хочу вам навести:

Взагалі-то, нормально розподіленими мають бути залишки (відхилення від середнього). Звідси слідує, що нормально розподіленою має бути кожна група, але ви можете проводити діагностику залишків (ознака мінус групове середнє значення) в цілому, аніж проводити це група за групою. Можливі ситуація (більше того, такі ситуації є типовими), коли дані будуть приблизно нормально розподіленими у кожній з груп, але, оскільки групові середні відрізняються, сукупний набір даних не буде відповідати нормальному розподілу. І в цих ситуаціях можна спокійно використовувати критерії, що базуються на припущенні нормальності.

Зазначте, що справжнє питання має звучати не щодо “точно нормального розподілу”, а радше щодо “достатньо нормального для даної задачі”. Найбільш важливим питання нормальності розподілу є для малих вибірок, але статистична потужність, щоб ідентифікувати відсутність нормальності, є низькою. У випадку ж великих вибірок у гру вступає центральна гранична теорема, і, як наслідок, немає потреби, щоб розподіл даних був дуже близький до нормального. Одночасно, при великій вибірці ми маємо велику потужність, щоб знайти навіть маленькі відхилення від закону нормального розподілу. Отже, проводячи формальні тести на нормальність розподілу як умову для наступнтого використання t-критерію або дисперсійного аналізу, ми потрапляєм у ситуацію, коли маємо беззмістовну відповідь на доречне питання, або ж змістовну відповідь на недоречне питання (можливо, є деякий середній розмір вибірок, де оба пункти є змістовними, але, на мою думку, в середніх випадках насправді і відповідь і питання є беззмістовними).

Отже, якщо нульова гіпотеза про нормальність розподілу не відхиляється через малий розмір вибірок, це не означає, що можна використовувати параметричні методи, однак не тільки це є причиною. Знання про те, звідки дані взялися, а також деякі діагностичні графіки набагато більш корисні для прийнятя рішення. Або, якщо ви хвилюєтесь щодо можливої відсутності нормального розподілу - просто використовуйте відразу непараметричні методи.

Також, щоб вирішити чи дані є “достатньо нормальними”, можна використати методологію, описану у статті A. Buja та ін.. (Функція vis.test() у пакеті TeachingDemos для R реалізує цей фокус).

Важлива річ, яку варто запам’ятати - знання про процеси, які утворили ваші дані, є набагато більш важливими, ніж результати якоїсь програми чи алгоритму, які написані кимось, хто знає набагато менше про ваші дані та запитання, над якимим ви працюєте.

Отже, для вибору між параметричними і непараметричними методами перше на що слід звертати увагу - на природу даних. А також прийняти рішення допоможе візуалізація. Щоб судити про відповідність емпіричногно розподілу нормальному, можна використовувати гістограму (на осі абсцис - інтервали даних, на осі ординат - кількості об’єктів, що потрапили в даний інтервал), або ж квантиль-квантильний нормальний графік (координати однієї осі відповідають квантилям емпіричного розподілу, а по другій - теоретичного. Чим ближче точки до однієї прямої, тим більш схожими є розподіли). Якщо порівнювати ці два види графіків, то на гістограмі важче судити про силу відмінності від нормального розподілу, зате гістограма одночасно представляє наші дані у зрозумілому для читатча вигляді. Я ж для цілі порівняння розподілу з нормальним використовую квантиль-квантильний нормальний графік. Для досвідченого фахівця статистики достатньо візуальної оцінки графіка для прийняття рішення. В іншому випадку можна візуалізувати одночасно наш досліджуваний графік і декілька графіків, які побудовані на випалкових нормально розподілени вибірках такого ж розміру. Вибрати із цієї множини графік, що найбільш відрізняється від інших. Якщо цей вибраний графік був побудований на випадковій вибірці - значить розподіл нашої досліджуваної вибірки близький до нормального (ми ж не змогли його відрізнити від інших нормально розподілених вибірок). На заключення - приклад такого фокусу в R. Підключимо класичні дані (Student Sleep Data). Обчислимо залишки по групах (tapply() застосовує передану функцію до першого аргументу, розбитого на групи другим аргументом) за допомогою функції scale() із параметром scale=FALSE (віднімаємо групове середнє, але не ділимо на групове стандартне відхилення). Передаємо їх у функцію vis.test() першим аргументом, а другим аргументом - назву функції для візуалізації (в даному випадку vt.qqnorm()).

install.packages("TeachingDemos")
library(TeachingDemos)
data(sleep)
resid=unlist(tapply(sleep$extra,sleep$group,scale,scale=FALSE))
set.seed(15)
vis.test(resid,vt.qqnorm)

Будуть з’являтись графіки на зразок цього, на них слід клікати по тих елементах, які найбільше виділяються із сукупності.

перевірка нормального розподілу

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


<a name="buja", id="anchor">Buja, A., Cook, D., Hofmann, H., Lawrence, M., Lee, E. K., Swayne, D. F., & Wickham, H. (2009). Statistical inference for exploratory data analysis and model diagnostics. Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences, 367(1906), 4361-4383.</a>