如何在R中对Kruskal-Wallis执行事后测试?

Kruskal-Wallis检验是单向方差分析的非参数类似物。非参数测试用于不满足参数测试假设的情况。如果我们发现Kruskal-Wallis之间存在显着差异,则进行事后测试以找出存在差异的地方。为此,我们可以执行dunn测试。可以通过FSA软件包访问dunn测试功能。

例1

加载FSA软件包:

> library(FSA)

请看以下数据帧:

> x1<-sample(LETTERS[1:5],20,replace=TRUE)
> y1<-rnorm(20,1,0.35)
> df1<-data.frame(x1,y1)
> df1

输出结果

  x1    y1
1 E 1.1191117
2 D 1.1276032
3 D 1.5610692
4 E 1.1585054
5 E 1.0239322
6 C 0.8000165
7 C 1.2009313
8 B 1.1928228
9 A 0.7421504
10 B 0.7212436
11 C 1.4088902
12 B 1.3171291
13 D 0.9434812
14 A 0.7986718
15 C 1.0394762
16 A 0.9239324
17 E 1.1447561
18 D 1.0192032
19 B 0.8772467
20 A 0.5723085

执行dunnTest:

示例

> dunnTest(y1~x1,data=df1)
Dunn (1964) Kruskal-Wallis multiple comparison
p-values adjusted with the Holm method.

输出结果

Comparison Z P.unadj P.adj
1  A - B -1.61355862 0.10662320 0.7463624
2  A - C -2.21117293 0.02702386 0.2702386
3  B - C -0.59761430 0.55009732 1.0000000
4  A - D -2.09165007 0.03646983 0.2917586
5  B - D -0.47809144 0.63258512 1.0000000
6  C - D  0.11952286 0.90486113 1.0000000
7  A - E -2.15141150 0.03144373 0.2829936
8  B - E -0.53785287 0.59067863 1.0000000
9  C - E  0.05976143 0.95234564 1.0000000
10 D - E -0.05976143 0.95234564 0.9523456
Warning message:
x1 was coerced to a factor.

例2

> x2<-sample(c("India","Russia","China","Croatia"),20,replace=TRUE)
> y2<-rpois(20,5)
> df2<-data.frame(x2,y2)
> df2

输出结果

   x2    y2
1 Russia 0
2 Russia 6
3 Croatia 8
4 Croatia 5
5 Russia 5
6 Croatia 9
7 India 9
8 Croatia 6
9 India 4
10 China 1
11 Croatia 7
12 China 3
13 India 3
14 India 4
15 Croatia 6
16 China 7
17 China 8
18 Croatia 10
19 India 8
20 China 7

示例

> dunnTest(y2~x2,data=df2)
Dunn (1964) Kruskal-Wallis multiple comparison
p-values adjusted with the Holm method.

输出结果

Comparison Z P.unadj P.adj
1 China - Croatia -1.18245422 0.23702552 1.0000000
2 China - India -0.08066504 0.93570834 0.9357083
3 Croatia - India 1.09532601 0.27337384 1.0000000
4 China - Russia 0.77619975 0.43763106 0.8752621
5 Croatia - Russia 1.82479827 0.06803148 0.4081889
6 India - Russia 0.84605772 0.39752054 1.0000000
Warning message:
x2 was coerced to a factor.

例子3

> x3<-sample(c("G1","G2","G3","G4","G5"),20,replace=TRUE)
> y3<-rexp(20,1.34)
> df3<-data.frame(x3,y3)
> df3

输出结果

   x3    y3
1  G2 1.89169184
2  G3 2.74074462
3  G3 0.17273122
4  G2 0.34856852
5  G2 0.80544065
6  G1 0.54582070
7  G2 0.24551988
8  G5 0.02546690
9  G3 2.86315652
10 G1 0.43704405
11 G1 1.89036598
12 G5 0.02423629
13 G5 0.03848270
14 G1 1.01897322
15 G1 0.44416202
16 G5 0.96637068
17 G2 0.74919567
18 G5 3.24106689
19 G1 1.22994992
20 G3 0.84658591

示例

> dunnTest(y3~x3,data=df3)
Dunn (1964) Kruskal-Wallis multiple comparison
p-values adjusted with the Holm method.

输出结果

Comparison Z P.unadj P.adj
1 G1 - G2 0.4745469 0.6351099 1.0000000
2 G1 - G3 -0.4582576 0.6467674 0.6467674
3 G2 - G3 -0.8693183 0.3846731 1.0000000
4 G1 - G5 1.0328375 0.3016800 1.0000000
5 G2 - G5 0.5345225 0.5929801 1.0000000
6 G3 - G5 1.3732709 0.1696681 1.0000000
Warning message:
x3 was coerced to a factor.