Соблюдаю ли я правильные процедуры с помощью функции dunn.test?
Я проверил различия между участками отбора проб с точки зрения значений численности, используя kruskal.test
, Однако я хочу определить множественные различия между сайтами.
dunn.test
Функция имеет возможность использовать векторные данные с категориальным вектором или использовать выражение формулы как lm
,
Я пишу функцию таким образом, чтобы использовать ее во фрейме данных со многими столбцами, но я не нашел пример, подтверждающий мои процедуры.
library(dunn.test)
df<-data.frame(a=runif(5,1,20),b=runif(5,1,20), c=runif(5,1,20))
kruskal.test(df)
dunn.test(df)
Мои результаты были:
Kruskal-Wallis chi-squared = 6.02, df = 2, p-value = 0.04929 Kruskal-Wallis chi-squared = 6.02, df = 2, p-value = 0.05 Comparison of df by group Between 1 and 2 2.050609, 0.0202 Between 1 and 3 -0.141421, 0.4438 Between 2 and 3 -2.192031, 0.0142
1 ответ
Я посмотрел на твой код, и ты рядом. Одна из проблем заключается в том, что вы должны указать метод для исправления нескольких сравнений, используя method
аргумент.
Исправление для нескольких сравнений
Для данных вашего примера я буду использовать вариант Бенджамини-Екутиэли " Ложного обнаружения" (FDR). Причины, по которым я считаю это хорошим исполнителем для ваших данных, выходят за рамки Stackru, но вы можете прочитать больше об этом и других методах исправления здесь. Я также предлагаю вам прочитать соответствующие документы; большинство из них имеют открытый доступ.
library(dunn.test)
set.seed(711) # set pseudorandom seed
df <- data.frame(a = runif(5,1,20),
b = runif(5,1,20),
c = runif(5,1,20))
dunn.test(df, method = "by") # correct for multiple comparisons using "B-Y" procedure
# Output
data: df and group
Kruskal-Wallis chi-squared = 3.62, df = 2, p-value = 0.16
Comparison of df by group
(Benjamini-Yekuteili)
Col Mean-|
Row Mean | 1 2
---------+----------------------
2 | 0.494974
| 0.5689
|
3 | -1.343502 -1.838477
| 0.2463 0.1815
alpha = 0.05
Reject Ho if p <= alpha/2
Интерпретация результатов
Первая строка в каждой ячейке предоставляет попарно z-тестовую статистику Данна для каждого сравнения, а вторая строка содержит ваши скорректированные p-значения.
Обратите внимание, что после поправки на множественные сравнения ни один из ваших парных тестов не имеет значения при альфа-уровне 0,05, что неудивительно, учитывая, что каждый из ваших примеров "сайтов" был сгенерирован абсолютно одинаковым распределением. Я надеюсь, что это было полезно. Приятного анализа!
PS В будущем вы должны использовать set.seed()
если вы собираетесь построить пример данных с использованием runif
(или любой другой вид генерации псевдослучайных чисел). Кроме того, если у вас есть другие вопросы о статистическом анализе, лучше задать их по адресу: https://stats.stackexchange.com/