R语言 Kruskal-Wallis检验

R语言 Kruskal-Wallis检验

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

注意:Kruskal-Wallis检验的结果告诉我们各组之间是否存在差异,但并不能说明哪些组与其他组有差异。

例子

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

R语言中Kruskal-Wallis测试的假设条件

变量应该有。

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

在R中的实现

R提供了一个方法 kruskal.test() ,在统计包中可以用来进行Kruskal-Wallis秩和检验。

语法: kruskal.test(x, g, formula, data, subset, na.action, …)

参数

  • x:一个数据值的数字向量,或一个数字数据向量的列表。
  • g:一个矢量或因子对象,给出了x的相应元素的组。
  • formula:一个形式为response ~ group的公式,其中response给出了数据值,group是相应组的向量或因子。
  • data:一个可选的矩阵或数据框,包含公式中的变量。
  • subset:一个可选的向量,指定要使用的观察结果的子集。
  • na.action:一个函数,表示当数据包含NA时应该发生什么。
  • …:进一步的参数,用于传递给方法或从方法中传递。

例子

让我们使用名为PlantGrowth的内置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

输出

    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"
R

这里 “组 “一栏被称为因子,不同的类别(”ctr”、”rt1″、”rt2″)被称为因子级别。这些级别是按字母顺序排列的。问题陈述是我们想知道在3个实验条件下植物的平均重量是否有显著差异。可以用下面的函数 kruskal.test() 进行检验。

# 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)
R

输出

Kruskal-Wallis rank sum test

data:  weight by group

Kruskal-Wallis chi-squared = 7.9882, df = 2, p-value = 0.01842
Bash

解释一下

由于P值小于显著性水平0.05,可以得出结论,处理组之间存在显著差异。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册