Как выполнить тест Данна в R


Критерий Крускала-Уоллиса используется для определения наличия статистически значимой разницы между медианами трех или более независимых групп. Он считается непараметрическим эквивалентом однофакторного дисперсионного анализа .

Если результаты теста Краскела-Уоллиса статистически значимы, целесообразно провести тест Данна, чтобы точно определить, какие группы отличаются.

В этом руководстве объясняется, как выполнить тест Данна в R.

Пример: тест Данна в R

Исследователь хочет знать, оказывают ли три препарата разное влияние на боль в спине, поэтому он набирает 30 человек, которые все испытывают одинаковую боль в спине, и случайным образом делит их на три группы, чтобы получить либо препарат А, либо препарат В, либо препарат С. После одного месяца приема препарата исследователь просит каждого человека оценить боль в спине по шкале от 1 до 100, где 100 указывает на самую сильную боль.

Исследователь проводит тест Крускала-Уоллиса с уровнем значимости 0,05, чтобы определить, есть ли статистически значимая разница между средними показателями боли в спине в этих трех группах.

В следующем коде показано, как создать фрейм данных в R и выполнить тест Крускала-Уоллиса:

#make this example reproducible
set.seed(0)

#create data frame
data <- data.frame(drug = rep(c("A", "B", "C"), each = 10),
 pain = c(runif(10, 40, 60),
 runif(10, 45, 65),
 runif(10, 55, 70)))

#view first six rows of data frame
head(data)

# drug pain
#1 A 57.93394
#2 A 45.31017
#3 A 47.44248
#4 A 51.45707
#5 A 58.16416
#6 A 44.03364

#perform Kruskal-Wallis Test
kruskal.test(pain ~ drug, data = data)

 Kruskal-Wallis rank sum test

data: pain by drug
Kruskal-Wallis chi-squared = 11.105, df = 2, p-value = 0.003879

Поскольку общее p-значение ( 0,003879 ) меньше 0,05, это означает, что существует статистически значимая разница между сообщаемыми уровнями боли среди трех препаратов. Таким образом, мы можем провести тест Данна, чтобы точно определить, какие лекарства отличаются.

В следующем коде показано, как выполнить тест Данна в R с помощью функции dunnTest() из библиотеки FSA() :

#load library
library(FSA)

#perform Dunn's Test with Bonferroni correction for p-values
dunnTest(pain ~ drug,
 data=data,
 method=" bonferroni ")

Dunn (1964) Kruskal-Wallis multiple comparison
 p-values adjusted with the Bonferroni method.

 Comparison Z P.unadj P.adj
1 A - B -0.8890009 0.374002602 1.000000000
2 A - C -3.2258032 0.001256197 0.003768591
3 B - C -2.3368023 0.019449464 0.058348393

Обратите внимание, что мы решили использовать поправку Бонферрони для p-значений множественных сравнений, но другие возможные варианты включают:

  • «сидак» (регулировка Сидака)
  • «Холм» (Регулировка Холма)
  • «hs» (регулировка Холма-Сидака)
  • «bs» (поправка Бонферрони-Сидака)
  • «по» (поправка Бенджамини-Екутейли)
  • «bh» ( процедура Бенджамини-Хохберга )

При α = 0,05 препараты А и С являются единственными двумя препаратами, которые статистически значимо отличаются друг от друга (скорректированное значение p = 0,003768 ).