Student’s t test 是假设检验的重要方法。

Student’s t test

学生 t 检验(student’s t test,也称 t-test)是一种统计检验,用于比较两组的均值。在假设检验中常用于确定某个过程、处理是否对目标真的有显著影响,或者两组是否有显著差异。
比如:想知道鸢尾花的平均花瓣长度是否和花的种类有关,收集两种鸢尾花的花瓣长度数据,每组测量 25 次,可使用 t 检验检测两组之间的差异。

零假设 H0:两组均值之间的真实差异为零,即没有差异

备择假设 Ha:真实差异不为零

适用情况: t 检验只能用于比较两组的均值(也称成对比较),如果想比较两组以上,用 ANOVA 检验或 post-hoc test。

t 检验的假设前提和类型

t 检验假设

  1. 数据之间相互独立
  2. 数据满足(或近似满足)正态分布
  3. 方差同质性:被比较的组的方差相似

若数据不满足要求,可以尝试非参数检验(nonparametric test),如 Wilcoxon Signed-Rank test。

t 检验类型

one-sample,two-sample,paired t-test?

  • paired t-test,配对样本均值检验:组来自同一类别(如某种处理的前后测量)
  • two-sample,两独立样本均值检验:组来自两个不同类别(如两种物种,来自两个城市的人),也即 independent t-stet
  • one-sample,单样本均值检验:一组和标准值相比较(如将液体的 pH 与中性 pH 7 相比)

one-tailed,two-tailed t-test?

  • two-tailed, 双侧 t 检验:只关注两组是否有差异
  • one-tailed,单侧 t 检验:需要知道两组的均值谁大谁小

如想知道鸢尾花的平均花瓣长度是否和花的种类有关,观测来自两种花,故使用 two-sample t-test;只关注是否有差异,故使用 two-tailed t-test。

t 检验方程

t=x1ˉx2ˉs2(1n1+1n2)t=\frac{\bar{x_{1}}-\bar{x_{2}}}{\sqrt{s^{2}(\frac{1}{n_{1} }+ \frac{1}{n_{2} })} }

式中,t 为 t 值,x1,x2 是两组的均值,s两组的合并标准误差,n1,n2 是每组的观测个数

t 值大,则两组的均值差异大于合并标准误差,表明两组的差异显著

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 检验鸢尾花花瓣长度是否与花的种类有关
# Petal.Length:花瓣长度
# Species:花种类

> flower.data <- read.csv('flower.data.csv', row.names = 1)
> class(flower.data$Species)
[1] "character"

# 转换为因子
> flower.data$Species <- factor(flower.data$Species)
> class(flower.data$Species)
[1] "factor"

> head(flower.data)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 5.0 3.6 1.4 0.2 setosa
4 4.6 3.4 1.4 0.3 setosa
5 4.4 2.9 1.4 0.2 setosa
6 5.4 3.7 1.5 0.2 setosa
> table(flower.data$Species)

setosa virginica
25 25

# two-sample two-tailed t test
> t.test(Petal.Length~Species, flower.data, paired=F, alternative='two.sided')

Welch Two Sample t-test

data: Petal.Length by Species
t = -33.719, df = 30.196, p-value < 2.2e-16
alternative hypothesis: true difference in means between group setosa and group virginica is not equal to 0
95 percent confidence interval:
-4.331287 -3.836713
sample estimates:
mean in group setosa mean in group virginica
1.456 5.540

t.test() 输出内容解释

  • data:对比项
  • t 值:-33.719,虽然是负的,但是大多数情况下,只关注其绝对值
  • df:自由度,30.196,自由度与样本大小有关,表示有多少数据点可用于比较,自由度越大,统计检验越有效
  • p 值:2.2e-16,偶然得到这样的t值的概率
  • alternative hypothesis:备择假设,setosa 和 virginica 组的真实均值差异不为0
  • 95% confidence interval:95% 置信区间,真实的均值差在 95% 可能性下所处的区间,即两组的真实均值差有 95% 可能性处于[-4.331287, -3.836713]区间内;可以更改区间,但 95% 常用
  • mean:各组的均值

由以上结果,样本数据的均值差 = 1.456 - 5.540 = -4.084,置信区间显示均值的真实差异在 [-4.331287, -3.836713] 之间。所以,95% 的情况下均值的真实差异不为0。p 值远小于 0.05,所以可以拒绝原假设(均值差异为0),即可以说,均值的真实差异显著不为0。

t 检验总结方式

展示重要的信息:t 值,p 值,自由度

也可以带上均值(mean)和标准差差(standard deviation)

1
2
3
4
5
6
7
8
> flower.data %>%
dplyr::group_by(Species) %>%
dplyr::summarize(mean_length=mean(Petal.Length),sd_length=sd(Petal.Length))
# A tibble: 2 x 3
Species mean_length sd_length
<fct> <dbl> <dbl>
1 setosa 1.46 0.206
2 virginica 5.54 0.569