跳到主要内容

t 检验

一、直观理解:差值大到什么程度就不能怪“运气”​

t 检验回答的问题是:样本均值与某个假定值(或另一组均值)之间的差异,是否大到无法用抽样波动解释。

把一枚硬币掷 10 次得到 7 次正面,你会怀疑硬币不公平吗?样本少时,“7/10”也可能只是运气。t 检验把“差异大小”除以“差异的标准误”,得到无量纲的 t 统计量:比值越大,越不像纯运气。

常见三种形式:

  • 单样本 t 检验:这批数据的均值是否等于 μ0\mu_0?
  • 两独立样本 t 检验:两组总体均值是否相等?
  • 配对 t 检验:同一对象处理前后的差值均值是否为 0?

名字中的 t 来自 Student’s t 分布:当总体方差未知、用样本方差代替时,统计量不再严格服从正态分布,而服从 t 分布。

二、适用场景与优缺点​

类型说明
适用场景连续型结果变量;比较均值与常数、两组均值、配对前后差异;样本量中等且近似正态,或大样本下中心极限定理可用。
核心优点经典、可解释;能给 p 值与置信区间;MATLAB 中 ttest / ttest2 即可完成。
局限与缺点对强偏态、重尾和极端异常值敏感;独立样本还需考虑方差齐性;只能比较均值,不直接描述整个分布差异;相关不等于因果。

使用前检查:

  1. 观测是否独立(配对设计要用配对 t,而不是独立样本 t);
  2. 分布是否近似正态,或 nn 是否足够大;
  3. 两样本时方差是否齐性,不齐则用 Welch t 检验;
  4. 效应量(如 Cohen’s d)与置信区间是否一并报告。

三、核心原理​

1. 单样本 t 检验​

H0:μ=μ0H_0:\mu=\mu_0,统计量

t=Xˉ−μ0s/n∼tn−1(在正态且 H0 下)t=\frac{\bar X-\mu_0}{s/\sqrt{n}}\sim t_{n-1}\quad (\text{在正态且 }H_0\text{ 下})

其中 ss 为样本标准差。双侧 p 值为 tt 分布两侧尾部概率。

均值差的 1−α1-\alpha 置信区间:

Xˉ±tn−1,1−α/2⋅sn\bar X\pm t_{n-1,1-\alpha/2}\cdot \frac{s}{\sqrt{n}}

2. 两独立样本(方差齐性)​

t=Xˉ1−Xˉ2sp1/n1+1/n2,sp2=(n1−1)s12+(n2−1)s22n1+n2−2t=\frac{\bar X_1-\bar X_2}{s_p\sqrt{1/n_1+1/n_2}},\quad s_p^2=\frac{(n_1-1)s_1^2+(n_2-1)s_2^2}{n_1+n_2-2}

自由度 ν=n1+n2−2\nu=n_1+n_2-2。

3. Welch t 检验(方差不齐,推荐默认)​

分母改用 s12/n1+s22/n2\sqrt{s_1^2/n_1+s_2^2/n_2},自由度用 Welch–Satterthwaite 近似。不齐方差时它比经典合并方差 t 更稳妥。

4. 配对 t 检验​

对差值 Di=Xi−YiD_i=X_i-Y_i 做单样本 t:H0:μD=0H_0:\mu_D=0。配对利用了个体基线信息,往往比独立样本更有功效。

四、关键决策​

1. 单侧还是双侧?​

除非事前有明确单向科学假设,默认双侧。不能先看数据方向再改单侧。

2. 正态性不够怎么办?​

  • 中等偏态、大样本:t 检验仍可粗用,但应报告稳健性;
  • 明显偏态、小样本、有序等级:改用 Wilcoxon / Mann–Whitney;
  • 存在异常值:考虑符号秩检验、稳健均值或置换检验。

3. 如何报告“有没有意义”?​

不要只写 p<0.05。同时给出:

  • 均值差及 95% CI;
  • 效应量 Cohen’s d=(xˉ1−xˉ2)/sd=(\bar x_1-\bar x_2)/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");

六、如何解释结果​

建议表述结构:

  1. 设计类型(独立/配对)与假设 H0H_0;
  2. 每组 nn、均值±标准差;
  3. t 统计量、自由度、p 值;
  4. 均值差的 95% 置信区间;
  5. 效应量;
  6. 假设检查结论(正态、方差齐性、独立性);
  7. 实际意义:差异是否大到值得改变决策。

示例:“实验组与对照组的平均成绩相差 −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 就断言“没有差异”​

正确理解是“未发现足以拒绝 H0H_0 的证据”,可能是功效不足。应看置信区间是否包含有实际意义的效应。

2. 配对数据却做独立样本 t​

会算错标准误,通常损失功效,有时结论完全不同。

3. 先看哪组更大再做单侧检验​

这是对第一类错误的作弊,必须事前规定。

4. 忽略方差不齐​

两组样本量与方差同时差异大时,经典 t 的 p 值不可靠,优先 Welch。

5. 把 t 检验当因果鉴定​

若组别不是随机分配,均值差可能混杂了别的因素。

八、小结​

t 检验的核心是:

用“均值差 / 标准误”衡量差异是否超出随机波动,并在方差未知时借助 t 分布给出 p 值与置信区间。

它是均值比较的第一工具,但必须匹配设计(独立/配对)、检查分布与方差,并同时报告效应量与区间。统计显著只是起点,实际意义才是建模要交代的重点。