Как провести тест Андерсона-Дарлинга в 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

Наша тестовая статистика A равна 1,1472, а соответствующее значение p равно 0,005086. Поскольку наше p-значение меньше 0,05, мы можем отклонить нулевую гипотезу и сделать вывод, что у нас есть достаточно доказательств, чтобы сказать, что эти данные не подчиняются нормальному распределению. Это соответствует ожидаемому нами результату, поскольку мы знаем, что наши данные на самом деле следуют равномерному распределению.

Проведение теста Андерсона-Дарлинга для одного столбца фрейма данных в R

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

#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')
Распределение ширины лепестков в наборе данных радужной оболочки в R

Данные не выглядят нормально распределенными. Чтобы подтвердить это, мы можем провести тест 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 не следует нормальному распределению.

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.