t 检验
一、直观理解:差值大到什么程度就不能怪“运气”
t 检验回答的问题是:样本均值与某个假定值(或另一组均值)之间的差异,是否大到无法用抽样波动解释。
把一枚硬币掷 10 次得到 7 次正面,你会怀疑硬币不公平吗?样本少时,“7/10”也可能只是运气。t 检验把“差异大小”除以“差异的标准误”,得到无量纲的 t 统计量:比值越大,越不像纯运气。
常见三种形式:
- 单样本 t 检验:这批数据的均值是否等于 ?
- 两独立样本 t 检验:两组总体均值是否相等?
- 配对 t 检验:同一对象处理前后的差值均值是否为 0?
名字中的 t 来自 Student’s t 分布:当总体方差未知、用样本方差代替时,统计量不再严格服从正态分布,而服从 t 分布。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 连续型结果变量;比较均值与常数、两组均值、配对前后差异;样本量中等且近似正态,或大样本下中心极限定理可用。 |
| 核心优点 | 经典、可解释;能给 p 值与置信区间;MATLAB 中 ttest / ttest2 即可完成。 |
| 局限与缺点 | 对强偏态、重尾和极端异常值敏感;独立样本还需考虑方差齐性;只能比较均值,不直接描述整个分布差异;相关不等于因果。 |
使用前检查:
- 观测是否独立(配对设计要用配对 t,而不是独立样本 t);
- 分布是否近似正态,或 是否足够大;
- 两样本时方差是否齐性,不齐则用 Welch t 检验;
- 效应量(如 Cohen’s d)与置信区间是否一并报告。
三、核心原理
1. 单样本 t 检验
,统计量
其中 为样本标准差。双侧 p 值为 分布两侧尾部概率。
均值差的 置信区间:
2. 两独立样本(方差齐性)
自由度 。
3. Welch t 检验(方差不齐,推荐默认)
分母改用 ,自由度用 Welch–Satterthwaite 近似。不齐方差时它比经典合并方差 t 更稳妥。
4. 配对 t 检验
对差值 做单样本 t:。配对利用了个体基线信息,往往比独立样本更有功效。
四、关键决策
1. 单侧还是双侧?
除非事前有明确单向科学假设,默认双侧。不能先看数据方向再改单侧。
2. 正态性不够怎么办?
- 中等偏态、大样本:t 检验仍可粗用,但应报告稳健性;
- 明显偏态、小样本、有序等级:改用 Wilcoxon / Mann–Whitney;
- 存在异常值:考虑符号秩检验、稳健均值或置换检验。
3. 如何报告“有没有意义”?
不要只写 p<0.05。同时给出:
- 均值差及 95% CI;
- 效应量 Cohen’s ;
- 样本量与检验类型。
4. 多重 t 检验
对多组两两比较时,直接多次 t 会膨胀第一类错误,应改用方差分析 + 多重比较,或 Bonferroni / FDR 校正。
五、MATLAB 示例
rng(2);
% ---- 单样本:平均体重是否为 70 ----
x = [68.5 71.2 69.0 72.5 70.1 67.8 73.0 69.5 70.8 71.6]';
[h, p, ci, stats] = ttest(x, 70);
fprintf("单样本 t=%.3f, df=%d, p=%.4g\n", stats.tstat, stats.df, p);
fprintf("均值 95%% CI: [%.3f, %.3f]\n", ci(1), ci(2));
% ---- 两独立样本:Welch(默认 Variance 不等)----
a = [12.1 11.8 13.0 12.5 12.7 11.9 12.4];
b = [13.5 14.1 13.8 14.0 13.2 14.3 13.9 14.5];
[h2, p2, ci2, stats2] = ttest2(a, b); % 默认 Welch
fprintf("Welch t=%.3f, df=%.2f, p=%.4g\n", stats2.tstat, stats2.df, p2);
fprintf("均值差 95%% CI: [%.3f, %.3f]\n", ci2(1), ci2(2));
% 经典合并方差版本
[~, p_eq, ~, st_eq] = ttest2(a, b, "Vartype", "equal");
fprintf("Equal-var t=%.3f, p=%.4g\n", st_eq.tstat, p_eq);
% 效应量 Cohen's d(以合并标准差近似)
sp = sqrt(((numel(a)-1)*var(a)+(numel(b)-1)*var(b))/(numel(a)+numel(b)-2));
d = (mean(a)-mean(b))/sp;
fprintf("Cohen's d = %.3f\n", d);
% ---- 配对 t:干预前后 ----
pre = [120 118 130 125 140 128 132];
post = [114 115 122 121 135 124 127];
[h3, p3, ci3, stats3] = ttest(pre, post); % 对 pre-post 差值
fprintf("配对 t=%.3f, p=%.4g, 差值CI=[%.3f, %.3f]\n", ...
stats3.tstat, p3, ci3(1), ci3(2));
% 正态性粗查(小样本仅供参考)
figure;
subplot(1,2,1); qqplot(a); title("组A QQ");
subplot(1,2,2); qqplot(b); title("组B QQ");
六、如何解释结果
建议表述结构:
- 设计类型(独立/配对)与假设 ;
- 每组 、均值±标准差;
- t 统计量、自由度、p 值;
- 均值差的 95% 置信区间;
- 效应量;
- 假设检查结论(正态、方差齐性、独立性);
- 实际意义:差异是否大到值得改变决策。
示例:“实验组与对照组的平均成绩相差 −1.65 分(Welch t=−4.21,df≈12.3,p=0.001),95% CI 为 [−2.50, −0.80],Cohen’s d≈−1.9。在本题分数尺度上,约 1.7 分的差距具有明确教学含义,并非仅统计显著。”
七、常见误区
1. p>0.05 就断言“没有差异”
正确理解是“未发现足以拒绝 的证据”,可能是功效不足。应看置信区间是否包含有实际意义的效应。
2. 配对数据却做独立样本 t
会算错标准误,通常损失功效,有时结论完全不同。
3. 先看哪组更大再做单侧检验
这是对第一类错误的作弊,必须事前规定。
4. 忽略方差不齐
两组样本量与方差同时差异大时,经典 t 的 p 值不可靠,优先 Welch。
5. 把 t 检验当因果鉴定
若组别不是随机分配,均值差可能混杂了别的因素。
八、小结
t 检验的核心是:
用“均值差 / 标准误”衡量差异是否超出随机波动,并在方差未知时借助 t 分布给出 p 值与置信区间。
它是均值比较的第一工具,但必须匹配设计(独立/配对)、检查分布与方差,并同时报告效应量与区间。统计显著只是起点,实际意义才是建模要交代的重点。