R에서 dunn의 테스트를 수행하는 방법
Kruskal-Wallis 검정은 세 개 이상의 독립 그룹의 중앙값 간에 통계적으로 유의미한 차이가 있는지 여부를 확인하는 데 사용됩니다. 이는 일원 분산 분석 과 동등한 비모수적 분석으로 간주됩니다.
Kruskal-Wallis 테스트의 결과가 통계적으로 유의하다면 Dunn 테스트를 수행하여 정확히 어떤 그룹이 다른지 확인하는 것이 적절합니다.
이 튜토리얼에서는 R에서 Dunn의 테스트를 수행하는 방법을 설명합니다.
예: R의 Dunn 테스트
한 연구자는 세 가지 약물이 허리 통증에 서로 다른 영향을 미치는지 알고 싶어합니다. 그래서 그는 비슷한 허리 통증을 앓고 있는 30명의 사람들을 모집하고 그들을 무작위로 세 그룹으로 나누어 약물 A, 약물 B, 약물 C를 투여했습니다. 약물을 복용한 지 한 달 후, 연구원은 각 개인에게 허리 통증을 평가하도록 요청했습니다. 1부터 100까지의 척도로 100이 가장 심한 통증을 나타냅니다.
연구원은 이 세 그룹의 허리 통증 등급 중앙값 간에 통계적으로 유의미한 차이가 있는지 확인하기 위해 유의 수준 0.05를 사용하여 Kruskal-Wallis 테스트를 수행합니다.
다음 코드는 R에서 데이터 프레임을 생성하고 Kruskal-Wallis 테스트를 수행하는 방법을 보여줍니다.
#make this example reproducible
set.seed(0)
#create data frame
data <- data.frame(drug = rep(c("A", "B", "C"), each = 10),
bread = 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 미만이므로 이는 세 가지 약물 간에 보고된 통증 수준에 통계적으로 유의미한 차이가 있음을 의미합니다. 따라서 Dunn의 테스트를 수행하여 정확히 어떤 약물이 다른지 확인할 수 있습니다.
다음 코드는 FSA() 라이브러리의 dunnTest() 함수를 사용하여 R에서 Dunn 테스트를 수행하는 방법을 보여줍니다.
#loadlibrary
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-값에 대해 Bonferroni 보정을 사용하기로 선택했지만 다른 가능한 옵션은 다음과 같습니다.
- “sidak” (시닥 조정)
- “holm”(홀름 조정)
- “hs”(Holm-Sidak 조정)
- “bs”(Bonferroni-Sidak 조정)
- “by”(Benjamin-Yekuteili 조정)
- “bh”( Benjamini-Hochberg 절차 )
α = 0.05에서 약물 A와 C는 통계적으로 서로 유의하게 다른 유일한 두 약물입니다(조정된 p-값 = 0.003768 ).