Как выполнить тест шапиро-уилка в r (с примерами)


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

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

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

шапиро.test(x)

Золото:

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

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

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

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

Пример 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *