Як виконати тест андерсона-дарлінга в r


Тест Андерсона-Дарлінга — це тест на відповідність, який визначає, наскільки ваші дані відповідають визначеному розподілу. Цей тест найчастіше використовується для визначення того, чи відповідають ваші дані нормальному розподілу .

Цей тип перевірки корисний для перевірки нормальності, яка є загальновживаним припущенням у багатьох статистичних тестах, включаючи регресію, ANOVA, t-тести та багато інших.

Приклад: тест Андерсона-Дарлінга в R

Щоб виконати тест Андерсона-Дарлінга в R, ми можемо використати функцію ad.test() у бібліотеці nortest .

Наступний код ілюструє, як виконати тест AD, щоб перевірити, чи відповідає вектор зі 100 значень нормальному розподілу:

 #install (if not already installed) and load nortest library
install.packages('nortest')
library(nortest)

#make this example reproducible
set.seed(1)

#defined vector of 100 values that are normally distributed
x <- rnorm(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 0.16021, p-value = 0.9471

Цей тест повертає два значення:

A : тестова статистика.

p-value : відповідне p-значення тестової статистики.

Нульова гіпотеза тесту AD полягає в тому, що дані відповідають нормальному розподілу. Отже, якщо наше значення p для тесту менше, ніж наш рівень значущості (звичайні варіанти 0,10, 0,05 і 0,01), ми можемо відхилити нульову гіпотезу та зробити висновок, що у нас є достатньо доказів, щоб стверджувати, що наші дані не відповідають нормальна траєкторія. розподіл.

У цьому випадку наше p-значення становить 0,9471. Оскільки це число не нижче нашого рівня значущості (скажімо, 0,05), ми не маємо достатніх доказів, щоб відхилити нульову гіпотезу. Можна з упевненістю сказати, що наші дані відповідають нормальному розподілу, що має сенс, враховуючи, що ми згенерували 100 значень, які відповідають нормальному розподілу із середнім значенням 0 і стандартним відхиленням 1 за допомогою функції rnorm() у R.

Пов’язане: посібник із dnorm, pnorm, qnorm і rnorm у R

Натомість припустімо, що ми генеруємо вектор зі 100 значень, який відповідає рівномірному розподілу між 0 і 1. Ми можемо знову запустити тест AD, щоб перевірити, чи відповідають ці дані нормальному розподілу:

 #make this example reproducible
set.seed(1)

#defined vector of 100 values that are uniformly distributed
x <- runif(100, 0, 1)

#conduct Anderson-Darling Test to test for normality
ad.test(x)

# Anderson-Darling normality test
#
#data:x
#A = 1.1472, p-value = 0.005086

Наша статистика тесту А дорівнює 1,1472, а відповідне значення p дорівнює 0,005086. Оскільки наше p-значення менше 0,05, ми можемо відхилити нульову гіпотезу та зробити висновок, що у нас є достатньо доказів того, що ці дані не відповідають нормальному розподілу. Це результат, який ми очікували, оскільки ми знаємо, що наші дані насправді мають рівномірний розподіл.

Виконання тесту Андерсона-Дарлінга на стовпці кадру даних у R

Ми також можемо виконати тест AD для певного стовпця кадру даних у R. Наприклад, розглянемо вбудований набір даних райдужної оболонки:

 #view first six lines of iris dataset
head(iris)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

Припустімо, ми хочемо знати, чи нормально розподілена змінна Petal.Width . Спочатку ми могли б створити гістограму, щоб візуалізувати розподіл значень:

 hist(iris$Petal.Width, col = 'steelblue', main = 'Distribution of Petal Widths',
     xlab = 'Petal Width')

Здається, що дані не розподіляються нормально. Щоб підтвердити це, ми можемо виконати тест AD, щоб формально перевірити, чи дані розподіляються нормально чи ні:

 #conduct Anderson-Darling Test to test for normality
ad.test(iris$Petal.Width)

# Anderson-Darling normality test
#
#data: iris$Petal.Width
#A = 5.1057, p-value = 1.125e-12

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

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

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