查看原文
其他

第八讲 R-单样本T检验

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

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


在上一讲中,我们介绍了第七讲 R-相关性分析及作图(点我可跳转)。到目前为止,我们已经学习了R语言基础、R语言的基本统计学技能和作图技能。加入R语言学习群的小伙伴学习积极性也很高,在群里纷纷交作业,想入群的拉倒文末撩小编哦。


今天的更新,我们会带您学习用R语言做单样本T检验。

单样本t检验

单样本t检验用于将一个样本库内的样本某一变量的平均值与已知标准(或理论/假设)平均值进行比较(μ)。

通常,理论均值来自之前的实验或已知内容。例如,中国男人的平均身高为1.67m(先前研究中确定的值)。

注意,仅当数据呈正态分布时,才可以使用单样本t检验。可以使用Shapiro-Wilk test进行检查。请参看第六讲 R-数据正态分布检验(点我可跳转)


1. 研究问题和统计假设


典型的研究问题是:

  • 均值(m)是否等于理论平均值(μ)?
  • 均值(m)是否小于理论平均值(μ)?
  • 均值(m)是否大于理论平均值(μ)?


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

  1. 假设1)H0:m = μ

  2. 假设2)H0:m≤ μ

  3. 假设3)H0:m≥ μ

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

  1. 假设1)H1:m ≠ μ (不同)

  2. 假设2)H1:m> m(大于)

  3. 假设3)H1:m< μ(小于)

注意

假设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, mu = 0, alternative = "two.sided")
  • x:包含数据值的一个数字向量

  • mu:理论平均值。默认值为0,但可以更改。

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


3.1 将数据导入R


在这里,我们将使用名为chickwts的内置R数据集。我们之后会检验chickwts数据中weight与理论值300克之间是否有统计学差异。

# 导入R内自带的chickwts数据集library(datasets)data(chickwts)
# 将数据存储在变量my_data中my_data <- chickwts


3.2 检查数据


你可以使用head()和tails()函数检查数据,这将分别显示数据的第一部分和最后一部分。

# 显示前六行内容head(my_data)
结果输出
weight feed1 179 horsebean2 160 horsebean3 136 horsebean4 227 horsebean5 217 horsebean6 168 horsebean

我们想知道,实验中的小鸡重量weight 是否不同于300克?

# weight的统计学概况 (更多详情请参看第四讲 R-描述性统计分析)summary(my_data$weight)

结果输出

Min. 1st Qu. Median Mean 3rd Qu. Max.108.0 204.5 258.0 261.3 323.5 423.0


3.3 使用箱形图可视化数据

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


3.4 初步检验单样本t检验的假设条件(正态性检验)

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

3.4.1 密度图

3.4.2 QQ图

3.4.3 正态性检验(shapiro-Wilk检验)

shapiro.test(my_data$weight)
输出结果
Shapiro-Wilk normality testdata: my_data$weightW = 0.97674, p-value = 0.2101

由上视觉分析及正态性检验显示,weight符合正态性分布,可以满足单样本t检验的假设条件(P>0.05)。


3.5 计算单样本t检验


# 单样本t检验test <- t.test(my_data$weight, mu = 300)# 显示结果test

输出结果

One Sample t-testdata:  my_data$weightt = -4.1757, df = 70, p-value = 8.426e-05alternative hypothesis: true mean is not equal to 30095 percent confidence interval:242.8301 279.7896sample estimates:mean of x261.3099

在上面的结果中:

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

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

  • p值t检验的显着性水平(p值=8.4e-05)。

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

  • sample estimates是样本的平均值(平均值= 261.31)。

注意

  • 如果要检验小鸡的体重是否小于300克(单向测试),请输入以下内容:

t.test(my_data$weight, mu = 300,alternative = "less")


  • 或者,如果要检验小鸡的体重是否大于300克(单向测试),请输入以下命令:

t.test(my_data$weight, mu = 300, alternative = "greater")


3.6 结果解释

检验的p值为8.4e-05,小于显着性水平alpha = 0.05。我们可以得出结论,小鸡的平均体重与300克的显着不同,p值= 8.4e-05。


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


t.test()函数

t.test()函数的结果是一个包含以下组件的列表:

  • statistic:t检验统计量的值

  • parameter相应自由度下t检验统计量

  • p.value:检验的p值

  • conf.int:适合于指定备择假设的均值的置信区间

  • estimate:均值(独立t检验的情况)或比较两组的均值差异(配对t检验的情况)。

用于获取这些值的R代码的格式如下:

# 打印 p 值test$p.value

[1] 8.426247e-05

# 打印均数test$estimate

mean of x

19.25

# 打印可信区间test$conf.int

[1] 242.8301 279.7896

attr(,"conf.level")

[1] 0.95


好了,本期讲解就先到这里。

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


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

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

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

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


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


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


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


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


快扫二维码撩客服,

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

让我们共同进步!

↓↓


- END -


长按二维码关注「投必得医学」

更多科研干货在等你!


麻烦点一下在看再走呗

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

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