Перевірка даних на відповідність нормальному закону розподілу є дуже важливою процедурою. Це пов’язано із тим, що багато "класичних" методик статистичної обробки даних базуються на припущенні того, що дані підпорядковуються нормальному закону розподілу. Із найбільш відомих статистичних показників можна навести критерій Стьюдента та коефіцієнт кореляції Пірсона.
Обидва показники вимагають для свого обчислення саме нормально розподілених даних. Значна частина методик регресійного та дисперсійного аналізів також залежить від нормального закону розподілу. Застосування статистичних критеріїв і показників, які розраховані на нормальність, для даних з іншими законами розподілу, може призвести до абсолютно хибних результатів. Через це, після перевірки правильності даних, слід обов’язково перевіряти відповідність розподілу даних нормальному закону. Навіть якщо Ви не збираєтесь використовувати методики, розраховані на нормальний закон розподілу досліджуваних даних, все одно - перевірка нормальності додасть Вам багато фактів для подальших роздумів і перевірок. Не слід забувати - дані характеризуються нормальним законом розподілу, якщо досліджуване явище обумовлено рівновеликою дією багатьох факторів. Відхилення даних від нормального закону свідчить про те, що один або декілька факторів мали більший вплив, ніж інші. Як приклад можна навести закони розподілу вмістів породоутворюючих та акцесорних (наприклад - рудогенних) хімічних компонентів. Якщо перші, здебільшого, характеризуються нормальним законом розподілу, то другі - значно відхиляються від нормального розподілу. Це свідчить про те, що при накопиченні рудогенних компонентів декілька факторів мали переважаючий вплив.
Обидва показники вимагають для свого обчислення саме нормально розподілених даних. Значна частина методик регресійного та дисперсійного аналізів також залежить від нормального закону розподілу. Застосування статистичних критеріїв і показників, які розраховані на нормальність, для даних з іншими законами розподілу, може призвести до абсолютно хибних результатів. Через це, після перевірки правильності даних, слід обов’язково перевіряти відповідність розподілу даних нормальному закону. Навіть якщо Ви не збираєтесь використовувати методики, розраховані на нормальний закон розподілу досліджуваних даних, все одно - перевірка нормальності додасть Вам багато фактів для подальших роздумів і перевірок. Не слід забувати - дані характеризуються нормальним законом розподілу, якщо досліджуване явище обумовлено рівновеликою дією багатьох факторів. Відхилення даних від нормального закону свідчить про те, що один або декілька факторів мали більший вплив, ніж інші. Як приклад можна навести закони розподілу вмістів породоутворюючих та акцесорних (наприклад - рудогенних) хімічних компонентів. Якщо перші, здебільшого, характеризуються нормальним законом розподілу, то другі - значно відхиляються від нормального розподілу. Це свідчить про те, що при накопиченні рудогенних компонентів декілька факторів мали переважаючий вплив.
Приймаючи до уваги таку важливість перевірки нормальності даних, було розроблено велику кількість статистичних критеріїв (тестів) для проведення цієї перевірки.
Для перевірки даних на відповідність нормальному закону розподілу можна використовувати базові можливості R, наприклад: функцію ks.test із заданими параметрами центральних моментів вибірки. Спробуємо перевірити нормальність даних про вміст SiO2 у породах Українського щита. (Тут ми з Вами робимо помилку з геологічної точки зору - намагаємось встановити закон розподілу для всіх типів порід, не розділяючи їх за хімічним складом, генетичним типом та іншими показниками):
>ks.test(granity$SiO2, "pnorm", mean(granity$SiO2), sd(granity$SiO2))
One-sample Kolmogorov-Smirnov test
data: granity$SiO2
D = 0.1483, p-value = 0.0001374
alternative hypothesis: two-sided
Warning message:
In ks.test(granity$SiO2, "pnorm", mean(granity$SiO2), sd(granity$SiO2)) :
ties should not be present for the Kolmogorov-Smirnov test
Ми задаємо функції ks.test наступні параметри: використати дані вектору granity$SiO2, для порівняння згенерувати дані нормального закону розподілу (pnorm) при середньому значенні mean(granity$SiO2) і середньоквадратичному відхиленні sd(granity$SiO2). Досягнутий рівень значущості складає p-value = 0.0001374, що значно нижче більшості стандартних рівнів значущості (0,1; 0,05; 0,01). Ми можемо спростувати гіпотезу про подібність реальної і згенерованої вибірок (точніше - гіпотезу про "відсутність відмін між ними"). Тобто - наша реальна вибірка не підпорядковується нормальному закону розподілу.
Але для перевірки гіпотез нормальності даних краще використовувати можливості спеціально створеного пакету nortest, якій містить декілька найпопулярніших тестів перевірки нормальності, а саме: Шапіро-Уілка (shapiro.test), Андерсона-Дарлінга (ad.test), Крамера фон Мізеса (cvm.test), Ліллієфорса (lillie.test), реалізацію тесту Пірсона хі-квадрат для перевірки нормальності (pearson.test), Шапіро-Франчіа (sf.test).
Застосуємо критерій Ліллієфорса для перевірки нормальності вмісту SiO2:
>lillie.test(granity$SiO2)
Lilliefors (Kolmogorov-Smirnov) normality test
data: granity$SiO2
D = 0.1483, p-value = 1.235e-12
Як бачимо, і тут ми отримали негативну відповідь на запитання "чи підпорядковуються наші дані нормальному закону розподілу" - досягнутий рівень значущості складає p-value = 1.235e-12 (тобто 1,235*10 в мінус дванадцятому ступіні). Звісно, що при такому досягнутому рівні значущості ми можемо сміливо відкидати нульову гіпотезу.
Якщо Вам не потрібні числові харакетристики тестів - можна застосувати графічну перевірку на нормальність даних. Одним із методів є використання так званого "q-q графіку" (графіку квантилів), на якому відображається закон розподілу наявних (вибіркових) даних і закон розподілу "ідеальних" (теоретичних) даних. Побудуємо графік квантилів для вектора granity$SiO2:
>qqnorm(granity$SiO2, main="Графік квантилів", xlab="теоретичні квантилі",
+ ylab="вибіркові квантилі")#будуємо графік квантилів
>qqline(granity$SiO2, col="red", lwd=3)#додаємо на графік лінію квантилів
#нормального розподілу для "ідеальних" (теоретичних) даних
![]() |
| Графiк квантилiв |
На графіку добре помітне відхилення наших даних від лінії, яка характерізує нормальний закон розподілу.
Але можна побудувати ще красивіший графік і ще простіше. Для цього ми використаємо функцію qqPlot базового пакету car:
> library(car)#завантажуємо пакет car
Loading required package: MASS
Loading required package: nnet#завантажуються потрібні пакети
Attaching package: ‘car’
The following object(s) are masked from ‘package:psych’:
logit#пакет car "конфліктує" із функцією logit пакета psych і "маскує"її
>qqPlot(granity$SiO2, main="Графік квантилів із довірчим інтервалом",
+ xlab="теоретичні квантилі", ylab="вибіркові квантилі")#будуємо графік квантилів
![]() |
| Графік квантилів із довірчим інтервалом |
У лістингу вище ми бачемо, що функція logit пакету psych при завантаженні була "замаскована" функцією logit пакету car. Не лякайтесь, якщо побачите подібні повідомлення - просто пакети чесно попереджають про те, що вони або містять функції із такими ж самими назвами, як і завантажені раніше пакети, або використовують параметри із схожими назвами. У подібних випадках пакет, який завантажений пізніше буде <<маскувати>> функції раніше завантаженого пакету. Тобто ми в своєму робочому середовищі не отримали повнофункціональний пакет psych. Щоб не потрапляти у подібні ситуації просто не завантажуйте у робоче середовище <<усе підряд>>.
За умовчанням лінії довірчого інтервалу проведені для вірогідності 0,95. Це задається параметром envelope. Щоб змінити ширину довірчого інтервалу треба змінити цей параметр, наприклад: envelope=0.99.


Немає коментарів:
Дописати коментар