如何在 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”(霍尔姆-西达克调整)
- “bs”(Bonferroni-Sidak 调整)
- “by”(本杰明-耶库特利调整)
- “bh”( 本杰明-霍赫伯格程序)
当 α = 0.05 时,药物 A 和 C 是仅有的两种在统计上显着不同的药物(调整后的 p 值 = 0.003768 )。