
简介
假设您有两组销售团队,想要检查这两组在一周内售出的手机平均数量是否相同。您会如何比较表现?
您将分别抽取各团队向 200 位随机顾客售出的手机数量,计算平均值并比较差异。第一支市场团队平均售出 120 部手机,第二支团队售出 80 部。
所以很明显,第一支团队的销售表现优于第二支团队,对吗?也不一定;该数据集来自随机顾客,并不代表那一周所有购买手机的人群。
那么我们如何判断哪支团队表现更好?我们将使用t 检验来判断这两个平均数之间的差异是真实存在还是随机偶然。
t 检验是一种统计假设检验方法,通过从两组中抽样,判断两组均值之间是否存在显著差异。它如何工作?它会同时比较样本均值与标准差,并考虑样本量和数据的变异程度。
在本教程中,我们将通过 R 代码示例学习 t 检验的分类(单样本、双样本和配对样本 t 检验),并学会解读结果。
注:如果您是 R 初学者,可先学习一门简短的 R 编程入门课程,掌握基础知识。
R 中的 t.test() 函数
R 语言为单样本、双样本和配对 t 检验提供了简单的 t.test内置函数。
t.test 函数有两种用法:默认方法与公式方法。
默认方法
您提供来自 x 组与 y 组的数值样本,指定备择假设、假设均值 mu,以及区间的置信水平。此外,通过切换 paired 参数可进行配对 t 检验,通过修改 var.equal 参数可进行等方差的双样本 t 检验。
t.test(x, y,
alternative = c("two.sided", "less", "greater"),
mu = 0, paired = FALSE, var.equal = FALSE,
conf.level = 0.95, ...)
公式方法
在该方法中,您提供公式 x~y,其中 x 是数值向量或来自数据的一列,y 是包含分组类型的二元列。
t.test(formula, data, subset, na.action, ...)
如何在 R 中进行单样本 t 检验
单样本 t 检验用于检验样本均值与假设或设定的总体均值之间是否存在显著差异。该检验在考虑数据变异性的情况下,将样本均值与假设均值进行比较。

- x̄1 = 样本均值
- μ = 假设的总体均值
- s = 样本标准差
- n = 样本量
在本教程中,我们将使用 R 数据集 草本植物的二氧化碳吸收量 来演示 t 检验代码示例。该数据集包含 84 行和 5 列,来自一项测试稗草(Echinochloa crus-galli)抗寒性的实验。我们主要使用 uptake、Treatment 和 Type 三列进行检验。
head(CO2)

在示例中,我们将使用数据集中的 conc(二氧化碳浓度)这一列。
我们可以通过箱线图观察均值、分布和离群点。
boxplot(CO2$conc)

对于单样本 t 检验,我们将使用 `t.test(x,mu=0)`。其中 x 为变量,mu 由原假设设定。在我们的例子中,mu 为 550。
t.test(CO2$conc, mu = 550)
结果:
二氧化碳浓度不等于 550,且显著低于假设的总体均值。
One Sample t-test
data: CO2$conc
t = -3.5617, df = 83, p-value = 0.0006134
alternative hypothesis: true mean is not equal to 550
95 percent confidence interval:
370.7805 499.2195
sample estimates:
mean of x
435
如何在 R 中进行双样本 t 检验
在双样本 t 检验中,我们将比较两种处理类型(未冷却与冷却)的二氧化碳吸收速率。
我们可以使用箱线图可视化两组的分布。
plot(uptake ~ Treatment, data=CO2)
Welch 双样本 t 检验
这是一种统计假设检验,用于研究两个相互独立且方差可能不等的组的均值是否存在显著差异。该检验在考虑各组内部变异性的情况下比较两组均值。

- x̄1 = 第一组的样本均值
- x̄2 = 第二组的样本均值
- n1 = 第一组的样本量
- n2 = 第二组的样本量
- s12 = 第一组的样本方差
- s22 = 第二组的样本方差
默认情况下,t.test() 函数假定两组方差不等(var.equal=FALSE)。因此我们无需做任何更改。
我们使用公式方法获取 t 检验结果,其中 uptake 是数值向量,Treatment 是 CO2 数据集中的二元类别列。
t.test(uptake ~ Treatment, data = CO2)
结果:
两组均值存在显著差异,未冷却组的吸收量高于冷却组。
Welch Two Sample t-test
data: uptake by Treatment
t = 3.0485, df = 80.945, p-value = 0.003107
alternative hypothesis: true difference in means between group nonchilled and group chilled is not equal to 0
95 percent confidence interval:
2.382366 11.336682
sample estimates:
mean in group nonchilled mean in group chilled
30.64286 23.78333
等方差的双样本 t 检验
双样本 t 检验也可用于在假定两组方差相等的情况下,判断两个独立组的均值是否存在显著差异。该检验同样在考虑组内变异性的前提下比较两组均值。

- x̄1 = 第一组的样本均值
- x̄2 = 第二组的样本均值
- n1 = 第一组的样本量
- n2 = 第二组的样本量
- sp = 合并标准差
要进行等方差的双样本 t 检验,我们需将 var.equal 设为 TRUE,并使用相同的公式和数据集再次运行检验。
t.test(uptake ~ Treatment, data = CO2, var.equal = TRUE)
结果:
如我们所见,结果几乎一致,即两组均值之间存在显著差异。
Two Sample t-test
data: uptake by Treatment
t = 3.0485, df = 82, p-value = 0.003096
alternative hypothesis: true difference in means between group nonchilled and group chilled is not equal to 0
95 percent confidence interval:
2.38324 11.33581
sample estimates:
mean in group nonchilled mean in group chilled
30.64286 23.78333
如何在 R 中进行配对 t 检验
配对 t 检验是一种统计假设检验,用于判断两组相关或成对样本的均值是否存在显著差异。它通过比较成对观测值的差异,并考虑这些差异的变异性来计算 t 检验值。

- dࠡ = 成对观测的均值差
- sd = 差值的样本标准差
- n = 成对样本的数量
要在 R 中进行配对 t 检验,我们需将paired 参数设为 TRUE,并使用相同的公式和数据集再次运行检验。
t.test(uptake ~ Treatment, paired = TRUE, data = CO2)
结果:
结合 t 值和 p 值来看,两组均值之间存在统计学上显著的差异。
Paired t-test
data: uptake by Treatment
t = 7.939, df = 41, p-value = 8.051e-10
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
5.114589 8.604458
sample estimates:
mean difference
6.859524
在第二个示例中,我们将按同一种植物的两个来源来比较吸收速率:一种来自魁北克,另一种来自密西西比。
plot(uptake ~ Type, data=CO2)

我们将公式中的 Treatment 替换为 Type,查看配对 t 检验的结果。
t.test(uptake ~ Type, paired = TRUE, data = CO2)
结果:
同样,魁北克组与密西西比组的均值之间存在显著差异。
Paired t-test
data: uptake by Type
t = 11.374, df = 41, p-value = 2.937e-14
alternative hypothesis: true mean difference is not equal to 0
95 percent confidence interval:
10.41177 14.90727
sample estimates:
mean difference
12.65952
试用 R 中的 t 检验 DataLab 工作簿。它附带代码与结果,您也可以复制工作簿,开始在不同示例上练习。
注:扎实的统计学基础将在各行各业助您一臂之力。统计学是现代 AI 的基石,建议从 Statistics Fundamentals with R 技能路径开始您的学习之旅。
如何解读 R 中的 t 检验结果
我们已经生成了结果,但 df、p-value、备择假设或样本估计到底是什么意思?本节将学习如何解读 R 中的 t 检验结果。
让我们先使用 rnorm 创建两个分组,并运行双样本 t 检验。
set.seed(125)
group1 <- c(rnorm(100, mean = 24, sd = 3))
group2 <- c(rnorm(100, mean = 43, sd = 2.4))
t.test(group1, group2)
输出:
Welch Two Sample t-test
data: group1 and group2
t = -47.765, df = 179.99, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-19.51569 -17.96722
sample estimates:
mean of x mean of y
24.30063 43.04208
- data:双样本 t 检验所用的数据(group1 与 group2)。
- t:t 统计量。负的 t 值 -47.765 表明 group1 的样本均值显著小于 group2。
- df:与该 t 值相关的自由度。
- p-value:表示结果的统计显著性。p 值为 2.2e-16,低于显著性水平 alpha(0.005),这表明仅靠随机性获得两组间如此之大差异的概率极小。
- alternative hypothesis:我们可以设定备择假设。在这里设定为检验真实均值差是否不等于 0。
- 95 percent confidence interval: 以 95% 的置信度认为两组总体均值差异位于 -19.51569 与 -17.96722 之间。
- sample estimates:分别给出各组的样本均值,group1 与 group2 分别为 24.30063 与 43.04208。这意味着平均而言,group2 的数值高于 group1。
t 检验包含两种假设:
- H0:µ1 = µ2:两总体均值相等。
- HA:µ1 ≠µ2:两总体均值不相等。
总之,Welch 双样本 t 检验结果表明,有充分证据显示 group1 与 group2 之间存在统计学上显著的差异。
结论
在本教程中,我们学习了单样本、双样本和配对 t 检验的 R 编程示例,以及如何解读结果。
t 检验是众多用于假设检验的统计工具之一。如果您想全面学习假设检验,请参加交互式课程 Hypothesis Testing in R。课程涵盖 t 检验、方差分析(ANOVA)、比例检验以及卡方检验。
您也可以更进一步,加入我们的 Statistician with R 职业路径,掌握关键技能,胜任统计学家的岗位。
