Выполните тест нормальности Шапиро-Уилка

Я хочу выполнить тест нормальности Шапиро-Уилка. Мои данные . Выглядит это так:

> heisenberg
    HWWIchg
1    -15.60
2    -21.60
3    -19.50
4    -19.10
5    -20.90
6    -20.70
7    -19.30
8    -18.30
9    -15.10

однако, когда я выполняю тест, я получаю:

> shapiro.test(heisenberg)
Error in `[.data.frame`(x, complete.cases(x)) : 
  undefined columns selected

почему R не выбирает правильный столбец и как это сделать? Спасибо за ваш ответ!!!

3 ответов


что означает Шапиро.тест сделать?

shapiro.test тесты нулевая гипотеза что "образцы поступают из нормального распределения"против the альтернативная гипотеза "образцы не приходят от нормального распределения".

Как выполнить Шапиро.тест в R?

страница справки R для ?shapiro.test дает

x - a numeric vector of data values. Missing values are allowed, 
    but the number of non-missing values must be between 3 and 5000.

то есть shapiro.test ожидает числовой вектор как входной сигнал, который соответствует образцу Вы хотел были бы испытать и единственный требуемый входной сигнал. Так как у вас есть данные.кадр, вы должны будете передать нужный столбец в качестве входного сигнала функции следующим образом:

> shapiro.test(heisenberg$HWWIchg)
#   Shapiro-Wilk normality test

# data:  heisenberg$HWWIchg 
# W = 0.9001, p-value = 0.2528

интерпретация результатов Шапиро.тест:

Во-Первых, Я сильно предлагаем вам читать этот отличный ответ от Яна Феллоуза testing for normality.

как показано выше,shapiro.test проверяет нулевую гипотезу о том, что образцы пришли из нормального распределения. Это означает, что если p-значение , то вы бы отклонение нулевая гипотеза о том, что образцы пришли из нормального распределения. Как выразился Ян Феллоуз,--15-->вы тестируете против предположение о нормальности". Другими словами (поправьте меня, если я ошибаюсь), это было бы много лучше если проверить нулевую гипотезу, что образцы не из нормального распределения. Почему? Потому что отклонение нулевой гипотезы не то же самое как принятие альтернативной гипотезы.

в случае нулевой гипотезы shapiro.test, p-значение редкий шанс что образцы пришли от нормальное распределение. Побочным эффектом проверки этой гипотезы является то, что это редкий шанс происходит очень редко. Для иллюстрации возьмем, например:

set.seed(450)
x <- runif(50, min=2, max=4)
shapiro.test(x)
#   Shapiro-Wilk normality test
# data:  runif(50, min = 2, max = 4) 
# W = 0.9601, p-value = 0.08995

Итак, этот (конкретный) пример runif(50, min=2, max=4) приходит от нормального распределения согласно этому тесту. Я пытаюсь сказать, что существует много случаев, когда "экстремальные" требования (p

еще один вопрос, который я хотел бы процитировать здесь из @PaulHiemstra из-под комментариев о влиянии на большой размер выборки:

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

хотя он также указывает, что ограничение размера данных R защищает это немного:

к счастью Шапиро.тест защищает пользователя от описанного выше эффекта, ограничивая размер данных 5000.

если нулевая гипотеза была противоположной, что означает, образцы не из нормального распределения, и вы получите p-значение , тогда вы заключаете, что это очень редко что эти образцы не исходят из нормального распределения (отвергают нулевую гипотезу). Это в общих чертах означает: весьма вероятно, что выборки обычно распределены (хотя некоторым статистикам может не понравиться такой способ интерпретации). Я считаю, что это то, что Йен Феллоуз также пытался объяснить в своем посте. Пожалуйста, поправьте меня, если я что-то не так!

@PaulHiemstra также комментарии о практических ситуациях (пример регрессии), когда сталкиваешься с этой проблемой тестирования на нормальность:

на практике, если анализ предполагает нормальность, например, lm, я бы не делал этот тест Шапиро-Уилка, но делаю анализ и смотрю на диагностические графики результата анализа, чтобы судить, были ли какие-либо предположения анализа, где нарушено слишком много. Для линейной регрессии с использованием lm это делается путем просмотра некоторых диагностических графиков, которые вы получаете использование plot (lm ()). Статистика-это не ряд шагов, которые выкашливают несколько чисел (Эй, p

здесь я нахожу ответ Яна Феллоуза на комментарий Бена Болкера по тому же вопросу, уже связанному выше, одинаково (если не более) информативным:

для линейной регрессии,

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

  2. беспокойство о неравных отклонениях (гетероскедастичность). Я беспокоюсь об этом до (почти) использования тестов HCCM по умолчанию. Масштабный график местоположения даст некоторое представление о том, нарушено ли это, но не всегда. Кроме того, в большинстве случаев нет априорных оснований предполагать равные отклонения.

  3. выбросы. Расстояние поваров > 1 является разумной причиной для беспокойства.

это мои мысли (FWIW).

надеюсь, это немного прояснит ситуацию.


вы применяете Шапиро.test () для фрейма данных вместо столбца. Попробуйте следующее:

shapiro.test(heisenberg$HWWIchg)

вам не удалось указать точные столбцы (данные) для проверки на нормальность. Используйте это вместо

shapiro.test(heisenberg$HWWIchg)