查看原文
其他

第十三讲 R-配对样本Wilcoxon检验

跟我学 投必得医学 2022-05-07

在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。


第十二讲 R-配对样本t检验中,我们讲到了配对样本t检验的假设条件是两组间差值分布需要符合正态性。

但是,当样本差值分布非正态,且经过一定的数值转换尝试后,仍然无法满足正态性要求时,配对样本的Wilcoxon符号秩检验成为备选方法,它将非正态样本的差值的中位数与0进行比较。它是一种非参数样本检验,基于样本差值的秩次排列,而非平均值。

注意

当两样本差值呈非正态分布时,选择Wilcoxon检验。可以使用Shapiro-Wilk test进行检查。请参看

第六讲 R-数据正态分布检验


1. 研究问题和统计假设

典型的研究问题是:
  1. 样本差值的中位数(m)是否等于0?

  2. 样本差值的中位数(m)是否小于0?

  3. 样本差值的中位数(m)是否大于0?


无效假设和备择假设

在统计数据中,我们可以定义相应的无效假设(H0) 如下:

  1. H0:

    m = 0

  2. H0:

    m≤ 0

  3. H0:

    m≥ 0

相应的备择假设(H1)如下:

  1. H1:

    m ≠ 0 (不同)

  2. H1:

    m> 0(大于)

  3. H1:

    m< 0(小于)

注意

  • 假设1)称为双向检验

  • 假设2)和3)称为单向检验


2. 配对样本Wilcoxon检验的原理

统计原理

配对样本Wilcoxon符号秩统计量的思想是:

首先把配对的两样本组各个个体的差值的绝对值|X1|、|X2|、|X3|……|Xn|进行排序,其顺序统计量为|X|(1)、|X|(2)、|X|(3)……|X|(n)。

如果配对两组的数据相同,则其差值会关于零点对称,对称中心两侧数据的疏密和取负值的数据交错出现,取正值数据在样本绝对值样本中的秩和与取负值数据在绝对值样本中的秩和应近似相等,概率均为0.5。

在求得正值秩和和负值秩和后,通过较小秩和和自由度(n-1)查询相应T界值表,获得相应P值。

如何解释结果?

如果p值低于或等于显着性水平0.05,我们可以拒绝无效假设并接受备择假设。换句话说,我们得出结论,两组数据的差值的中位数与0有显着差异。


3. 用R完成两样本Wilcoxon检验

可以使用R函数wilcox.test()计算单样本Wilcoxon检验:

wilcox.test(x, y, paired=TRUE, alternative = "two.sided")
  • x,y

    数值向量

  • paired

    一个逻辑值,指定我们要计算配对的Wilcoxon检验

  • alternative

    备择假设。

    允许值为“two.sided”(默认),也可以根据需要设置为“greater”或“less”之一。


3.1 将数据导入R

我们将使用一个示例,其中包含治疗前后10只小鼠的体重。

# 治疗前小鼠体重before <-c(15.4,25.3,25.6,34.7,28.8,18.9,30.0,16.7,15.8,27.7)# 治疗后小鼠的体重after <-c(5.5,5.4,5.7,15.7,18.7,72.5,72.4,37.0,66.7,60.0)
# 创建数据框my_data <- data.frame(group = rep(c("before", "after"), each = 10),weight = c(before, after))

我们想知道,治疗前后体重是否有显着差异?

2.2 检查数据
print(my_data)

输出结果

group weight1  before   15.42 before 25.33 before 25.64 before 34.75 before 28.86 before 18.97 before 30.08 before 16.79 before 15.810 before 27.711 after 5.512 after 5.413 after 5.714 after 15.715 after 18.716 after 72.517 after 72.418 after 37.019 after 66.720 after 60.0

使用dplyr软件包按组计算统计信息(平均值和标准差)。

  • 要安装dplyr软件包,请输入以下命令:

install.packages("dplyr")
  • 按组计算摘要统计信息:

library("dplyr")group_by(my_data, group) %>%summarise(count = n(),mean = mean(weight, na.rm = TRUE),sd = sd(weight, na.rm = TRUE))

输出结果:

Source: local data frame [2 x 4]group count mean sd(fctr) (int) (dbl) (dbl)1 after 10 36.0 29.22 before 10 23.9 6.76


2.3 使用箱形图及配对图可视化数据

(请参看第五讲 R-数据描述性统计分析作图)


箱形图显示了增长与否,但丢失了配对信息。我们可以使用功能plot.paired()[在pairedData包中]绘制配对数据(“ before-after”图)。

  • 安装pairedData包:

install.packages("PairedData")
  • 绘制配对数据:

# 提取治疗前数据before <- subset(my_data, group == "before", weight,drop = TRUE)# 提取治疗后数据after <- subset(my_data, group == "after", weight,drop = TRUE)
# 画配对图library(PairedData)pd <- paired(before, after)plot(pd, type = "profile") + theme_bw()


2.4 初步检验配对样本t检验的假设条件(正态性检验)

(请参看第六讲 R-数据正态分布检验)

假设1:两个样本是否配对?

是的,因为通过测量相同小鼠体重治疗前后两次来收集数据。

假设2:这是一个大样本吗?

否,因为n <30。由于样本大小不够大(小于30),我们需要检查对的差异是否遵循正态分布。

如何检查正常性?

# 计算之前前后的差异d <- with(my_data, weight[group == "before"] - weight[group == "after"])
#Shapiro-Wilk正态性检验差值是否符合正态分布shapiro.test(d) # p-value = 0.044

从输出中,p值大于显着性水平0.05,表明差值(d)的分布与正态分布没有显著差异。说明差值(d)不符合正态分布,不可以使用配对样本t检验。

请注意

如果数据符合正态分布,请使用配对样本t检详情请见第十二讲 R-配对样本t检验


2.5 计算配对样本wilcoxon检验
# 配对样本t检验res <- wilcox.test(weight ~ group, data = my_data, paired = TRUE)res

输出结果

Wilcoxon signed rank testdata: weight by groupV = 40, p-value = 0.2324alternative hypothesis: true location shift is not equal to 0

在上面的结果中:

  • p值配对样本wilcoxon检验的显着性水平(p值=0.23)。

也可以使用如下代码,输出内容一样。

res <- wilcox.test(weight ~ group, data = my_data, paired = TRUE)res
注意

  • 如果要测试治疗前的体重是否小于治疗后的体重,请输入以下命令

    wilcox.test(weight ~ group, data = my_data, paired = TRUE,alternative = "less")
  • 或者,如果要测试治疗前的体重是否大于治疗后的体重,请输入

    wilcox.test(weight ~ group, data = my_data, paired = TRUE,alternative = "greater"


2.6 结果解释

检验的p值为 0.23,大于显着性水平alpha = 0.05。然后我们可以肯定原假设,并得出结论,治疗前小鼠的体重与治疗后小鼠的没有显著不同,p值 = 0.23。

2.7 获得wilcox.test()函数的返回值

(请参看第九讲 R-单样本wilcox检验)


好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。

在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。

提前打个预告,下一期我们将学习“用R语言做单因素方差分析”。


第一讲 R-基本介绍及安装


第二讲 R-编程基础-运算、数据类型和向量等基本介绍


第三讲 R编程基础-矩阵和数据框


第四讲 R-描述性统计分析


第五讲 R-数据描述性统计分析作图


第六讲 R-数据正态分布检验


第七讲 R-相关性分析及作图


第八讲 R-单样本T检验


第九讲 R-单样本Wilcoxon检验


第十讲 R-两独立样本t检验


第十一讲 R-两独立样本Wilcoxon检验


第十二讲 R-配对样本t检验


当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。


快扫二维码撩客服,

带你进入投必得医学交流群,

让我们共同进步!

↓↓


- END -


长按二维码关注「投必得医学」,更多科研干货在等你!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存