查看原文
其他

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

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

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


在过去的几天里,我们分别介绍了单样本的t检验单样本的Wilcoxon检验两独立样本的t检验两独立样本的Wilcoxon检验(点击文字可跳转)。今天,我们继续前面的话题,介绍用于两个配对样本的统计学检验方法。

符合正态分布的配对样本,我们可以使用配对样本t检验。


配对样本t检验


配对样本t检验用于样品的两个相关组之间的比较手段。在这种情况下,同一样本有两个值(即一对值)。

举个例子,在1个月内有20只小鼠接受了治疗X。我们想知道处理X是否会对小鼠的体重产生影响。

为了回答这个问题,在治疗之前和之后测量了20只小鼠的体重。通过测量相同小鼠体重的两次,我们得到了治疗前的20组值和治疗后的20组值。在这种情况下,可以使用配对t检验比较治疗前后的平均体重。

配对的t检验分析如下:

  1. 计算配对的两组的差值(d),每只小鼠会有一个差值

  2. 计算平均值(m)和差值(d)的标准差(s)

  3. 比较平均差异与0有无差异。

    如果两对样本之间存在显著差异,则d的平均值(m)会远离0。

注意

仅当差值(d)呈正态分布时,才可以使用配对样本t检验。可以使用Shapiro-Wilk test进行检查。请参看第六讲 R-数据正态分布检验


1. 研究问题和统计假设


1.1 典型的研究问题是
  1. 差值(d)的均值(m)是否等于0?

  2. 差值(d)的均值(m)是否小于0?

  3. 差值(d)的均值(m)是否大于0?

1.2 无效假设于备择假设

在统计数据中,我们可以定义相应的无效假设(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. 配对样本t检验的公式

t统计量可以计算如下:

其中,

  • m是样本差值的均值

  • n是样本

  • s是样本差值的标准差,自由度df为n-1

我们可以为自由度(df)计算与t检验统计量(| t |),通过查询t分布表格对比其在df=n-1处的P值。

如何解释结果?

如果p值低于或等于显着性水平0.05,我们可以拒绝无效假设并接受备择假设。换句话说,我们得出结论,两配对样本有显著差异。


3. 用R完成配对样本t检验

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

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

    数值向量

  • paired

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

  • 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,36.7,25.8,27.7)# 治疗后小鼠的体重after <-c(32.5,23.4,36.7,35.7,38.7,32.5,32.4,37.0,26.7,30.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 36.79 before 25.810 before 27.711 after 32.512 after 23.413 after 36.714 after 35.715 after 38.716 after 32.517 after 32.418 after 37.019 after 26.720 after 30.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 32.6 4.822 before 10 26.9 6.43


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.11

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

请注意

如果数据不是正态分布的,建议使用非参数配对样本Wilcoxon检验。


(我们在下一次推文会详细讲解)


2.5 计算配对样本t检验
# 配对样本t检验res <- t.test(after,before, paired = TRUE)# 显示结果res

输出结果

data: after and beforet = 2.7111, df = 9, p-value = 0.02395alternative hypothesis: true difference in means is not equal to 095 percent confidence interval:0.9388936 10.4011064sample estimates:mean of the differences5.67

在上面的结果中:

  • tt检验统计值(t = 2.71),

  • df是自由度(df = 9),

  • p值t检验的显着性水平(p值=0.024)。

  • conf.int是平均值的置信区间,为95%(conf.int = [0.94,10.40]);

  • sample estimates是两组的差值的平均值(平均值= 5.67)。

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

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


注意


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

t.test(weight ~ group, data = my_data, paired = TRUE,alternative = "less")


或者,如果要测试治疗前的体重是否大于治疗后的体重,请输入

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



2.6 结果解释

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


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

(请参看第八讲 R-单样本t检验)


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

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

提前打个预告,下一期我们将学习“用R语言做配对样本Wilcoxon检验”。第一讲 R-基本介绍及安装

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

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

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

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

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

第八讲 R-单样本T检验

第九讲 R-单样本Wilcoxon检验

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

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


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


快扫二维码撩客服,

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

让我们共同进步!

↓↓


- END -


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

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

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