📜  R 编程中的 Kruskal-Wallis 测试

📅  最后修改于: 2022-05-13 01:55:49.895000             🧑  作者: Mango

R 编程中的 Kruskal-Wallis 测试

R 编程语言中的 Kruskal-Wallis 测试是一种基于等级的测试,类似于 Mann-Whitney U 测试,但可以应用于具有两个以上组的单向数据。它是单向 ANOVA 检验的非参数替代方案,它扩展了双样本 Wilcoxon 检验。如果一组数据样本来自不相关的人群并且样本之间不相互影响,则它们是独立的。使用 Kruskal-Wallis 检验,可以确定总体分布是否相似,而不假设它们遵循正态分布。用 R 语言执行 Kruskal-Wallis 测试非常容易。

例子:

  1. 让我们想知道社会经济地位如何影响对销售税上调的态度。这里的自变量是“社会经济地位”,分为三个层次:工人阶级、中产阶级和富人。因变量采用 5 点李克特量表测量,从非常同意到非常不同意。
  2. 如果想了解考试焦虑如何影响实际考试成绩。自变量“考试焦虑”分为三个水平:无焦虑、中低焦虑和高度焦虑。因变量是考试成绩,评分范围为 0 到 100%。

R 中 Kruskal-Wallis 检验的假设

变量应具有:

  • 一个具有两个或多个水平的自变量。当有三个或更多级别时,该测试更常用。对于两个级别而不是 Kruskal-Wallis 检验,请考虑使用Mann Whitney U 检验。
  • 因变量应该是序数尺度、比率尺度或区间尺度。
  • 观察应该是独立的。换句话说,每个组中或组内的成员之间不应该存在相关性。
  • 所有组应具有相同的形状分布。

R中的实现

R 提供了一个方法kruskal.test()可以在 stats 包中执行 Kruskal-Wallis 秩和检验。

例子:

让我们使用名为 PlantGrowth 的内置 R 数据集。它包含在对照和两种不同处理条件下获得的植物重量。

R
# Preparing the data set
# to perform Kruskal-Wallis Test
 
# Taking the PlantGrowth data set
myData = PlantGrowth
print(myData)
 
# Show the group levels
print(levels(myData$group))


R
# R program to illustrate
# Kruskal-Wallis Test
 
# Taking the PlantGrowth data set
myData = PlantGrowth
 
# Performing Kruskal-Wallis test
result = kruskal.test(weight ~ group,
                    data = myData)
print(result)


输出:

weight group
1    4.17  ctrl
2    5.58  ctrl
3    5.18  ctrl
4    6.11  ctrl
5    4.50  ctrl
6    4.61  ctrl
7    5.17  ctrl
8    4.53  ctrl
9    5.33  ctrl
10   5.14  ctrl
11   4.81  trt1
12   4.17  trt1
13   4.41  trt1
14   3.59  trt1
15   5.87  trt1
16   3.83  trt1
17   6.03  trt1
18   4.89  trt1
19   4.32  trt1
20   4.69  trt1
21   6.31  trt2
22   5.12  trt2
23   5.54  trt2
24   5.50  trt2
25   5.37  trt2
26   5.29  trt2
27   4.92  trt2
28   6.15  trt2
29   5.80  trt2
30   5.26  trt2
[1] "ctrl" "trt1" "trt2"

这里“组”列称为因子,不同类别(“ctr”、“trt1”、“trt2”)称为因子级别。级别按字母顺序排列。问题陈述是我们想知道在 3 个实验条件下植物的平均重量之间是否存在显着差异。并且可以使用下面给出的函数kruskal.test()来执行测试。

R

# R program to illustrate
# Kruskal-Wallis Test
 
# Taking the PlantGrowth data set
myData = PlantGrowth
 
# Performing Kruskal-Wallis test
result = kruskal.test(weight ~ group,
                    data = myData)
print(result)

输出:

解释:

由于 p 值小于显着性水平 0.05,因此可以得出结论,治疗组之间存在显着差异。