Выполните тест нормальности Шапиро-Уилка
Я хочу выполнить тест нормальности Шапиро-Уилка. Мои данные . Выглядит это так:
> 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
здесь я нахожу ответ Яна Феллоуза на комментарий Бена Болкера по тому же вопросу, уже связанному выше, одинаково (если не более) информативным:
для линейной регрессии,
не беспокойтесь о нормальности. Этот CLT быстро берет верх, и если у вас есть все, кроме самых маленьких размеров выборки и даже отдаленно разумной гистограммы, вы в порядке.
беспокойство о неравных отклонениях (гетероскедастичность). Я беспокоюсь об этом до (почти) использования тестов HCCM по умолчанию. Масштабный график местоположения даст некоторое представление о том, нарушено ли это, но не всегда. Кроме того, в большинстве случаев нет априорных оснований предполагать равные отклонения.
выбросы. Расстояние поваров > 1 является разумной причиной для беспокойства.
это мои мысли (FWIW).
надеюсь, это немного прояснит ситуацию.
вы применяете Шапиро.test () для фрейма данных вместо столбца. Попробуйте следующее:
shapiro.test(heisenberg$HWWIchg)
вам не удалось указать точные столбцы (данные) для проверки на нормальность. Используйте это вместо
shapiro.test(heisenberg$HWWIchg)