Как выполнить тест Шапиро-Уилка в R (с примерами)

Как выполнить тест Шапиро-Уилка в R (с примерами)

Тест Шапиро-Уилка является тестом на нормальность. Он используется для определения того, соответствует ли выборка нормальному распределению .

Этот тип теста полезен для определения того, исходит ли данный набор данных из нормального распределения, что является распространенным предположением, используемым во многих статистических тестах, включая регрессию , дисперсионный анализ , t-тесты и многие другие.

Мы можем легко выполнить тест Шапиро-Уилка для данного набора данных, используя следующую встроенную функцию в R:

Шапиро.тест(х)

куда:

  • x: числовой вектор значений данных.

Эта функция создает тестовую статистику W вместе с соответствующим p-значением. Если p-значение меньше, чем α = 0,05, имеется достаточно доказательств, чтобы сказать, что выборка не происходит из населения с нормальным распределением.

Примечание. Размер выборки должен быть от 3 до 5000, чтобы можно было использовать функцию shapiro.test().

В этом руководстве показано несколько примеров использования этой функции на практике.

Пример 1. Критерий Шапиро-Уилка для нормальных данных

В следующем коде показано, как выполнить тест Шапиро-Уилка для набора данных с размером выборки n = 100:

#make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a normal distribution
data <- rnorm(100)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

 Shapiro-Wilk normality test

data: data
W = 0.98957, p-value = 0.6303

Значение p теста оказывается равным 0,6303.Поскольку это значение не меньше 0,05, мы можем предположить, что данные выборки получены из населения с нормальным распределением.

Этот результат не должен вызывать удивления, поскольку мы сгенерировали выборочные данные с помощью функции rnorm(), которая генерирует случайные значения из нормального распределения со средним значением = 0 и стандартным отклонением = 1.

Связанный: Руководство по dnorm, pnorm, qnorm и rnorm в R

Мы также можем создать гистограмму, чтобы визуально убедиться, что данные выборки распределены нормально:

hist(data, col='steelblue') 
Тест Шапиро-Уилка на нормальность в R

Мы видим, что распределение имеет довольно колоколообразную форму с одним пиком в центре распределения, что типично для данных с нормальным распределением.

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

В следующем коде показано, как выполнить тест Шапиро-Уилка для набора данных с размером выборки n = 100, в котором значения генерируются случайным образом израспределения Пуассона :

#make this example reproducible
set.seed(0)

#create dataset of 100 random values generated from a Poisson distribution
data <- rpois(n=100, lambda=3)

#perform Shapiro-Wilk test for normality
shapiro.test(data)

 Shapiro-Wilk normality test

data: data
W = 0.94397, p-value = 0.0003393

Значение p теста оказывается равным 0,0003393.Поскольку это значение меньше 0,05, у нас есть достаточно доказательств, чтобы сказать, что данные выборки не получены из населения с нормальным распределением.

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

Связанный: Руководство по dpois, ppois, qpois и rpois в R

Мы также можем создать гистограмму, чтобы визуально увидеть, что выборочные данные не распределены нормально:

hist(data, col='coral2') 
Гистограмма теста Шапиро-Уилка в R

Мы видим, что распределение скошено вправо и не имеет типичной «колокольчатой формы», связанной с нормальным распределением. Таким образом, наша гистограмма соответствует результатам теста Шапиро-Уилка и подтверждает, что данные нашей выборки не имеют нормального распределения.

Что делать с ненормальными данными

Если данный набор данных не распределен нормально, мы часто можем выполнить одно из следующих преобразований, чтобы сделать его более нормальным:

1. Преобразование журнала: преобразование переменной ответа из y в log(y) .

2. Преобразование квадратного корня: преобразовать переменную отклика из y в √y .

3. Преобразование кубического корня: преобразовать переменную ответа из y в y 1/3 .

Выполняя эти преобразования, переменная отклика обычно становится ближе к нормально распределенной.

Ознакомьтесь с этим руководством , чтобы увидеть, как выполнять эти преобразования на практике.

Дополнительные ресурсы

Как провести тест Андерсона-Дарлинга в R
Как провести тест Колмогорова-Смирнова в R
Как выполнить тест Шапиро-Уилка в Python

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