Тест Шапиро Уилкса не работает в уценке R - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю над фрагментом кода уценки. Я просто применяю тест shapiro.wilks к данным. Когда я пытаюсь запустить код в R studio обычным способом, у меня не возникает никаких проблем. Но когда я пытаюсь запустить код в r markdown, я получаю сообщение об ошибке, приведенное ниже:

Ошибка в shapiro.test (Metri c): размер выборки должен быть от 3 до 5000. Вызовы: , Anonymius> ... summaze -> summarise.tbl_df -> summarise_impl _> shapiro.test Кроме того: было 32 предупреждения (используйте предупреждения (), чтобы увидеть их)

Предупреждения:

Код:


normality_test_on_data_PPM <- final_combined_data %>% 
                              group_by(PPM) %>% 
                              summarise(W = shapiro.test(Metric)$statistic, P.value = shapiro.test(Metric)$p.value) %>% 
                              ungroup() %>% 
                              mutate(P_Value = format(round(P.value,3), nsmall = 3)) %>% 
                              select(PPM , P_Value) %>%
                              mutate(Normal_test = ifelse(P_Value >= 0.05, "Normal", "Not Normal"))

Результат проверки нормальности

DT::datatable(normality_test_on_data_PPM)

1 Ответ

1 голос
/ 04 февраля 2020

Тест Шапиро-Уилкса допускает только размеры выборки <= 5000 - по понятной причине, поскольку в очень больших выборках даже незначительные отклонения от нормы будут квалифицироваться как значимые на обычных уровнях. Смотрите обсуждение здесь: <a href="https://stats.stackexchange.com/questions/446262/can-a-sample-larger-than-5-000-data-points-be-tested-for-normality-using-shapiro">https://stats.stackexchange.com/questions/446262/can-a-sample-larger-than-5-000-data-points-be-tested-for-normality-using-shapiro. Альтернативно, используйте тест Колмогорова-Смирнова ks.test, который не имеет такого ограничения, или, возможно, даже лучше, рисуйте квантиль-квантильные графики, также известные как QQ, используя qqnorm и qqline: если график QQ отклоняется от прямая квантильная линия - это хорошая диагностика c, указывающая, что данные нарушают нормальность.

РЕДАКТИРОВАТЬ : рассмотрите эту иллюстрацию:

v1 <- rnorm(500)
v2 <- exp(rnorm(500))

par(mfrow = c(1,2), xpd = F)
qqnorm(v1, main = "Q-Q plot", cex.main = 0.85)
qqline(v1, col = "blue")
qqnorm(v2, main = "Q-Q plot", cex.main = 0.85)
qqline(v2, col = "blue")

Полученные графики ясно показывают, какие переменная обычно, которая обычно не распространяется: enter image description here

...