F 检验
一、直观理解:比较的是“两摊波动谁更大”
F 检验基于 F 分布,核心图像是两个方差估计之比。如果分子代表的波动显著大于分母,就拒绝“两者来自同一波动水平”的假设。
它在建模里最常见的三类用途是:
- 方差齐性检验:两组(或多组)方差是否相等;
- 回归/方差分析整体显著性:模型解释的方差是否大于残差方差;
- 嵌套模型比较:更复杂的模型是否显著改善了拟合。
可以把 ANOVA 想成:总波动拆成“组间波动 + 组内波动”,若组间相对组内足够大,就认为各总体均值不全相等。这个“足够大”正由 F 统计量衡量。
二、适用场景与优缺点
| 类型 | 说明 |
|---|---|
| 适用场景 | 正态假定下比较方差;单因素/多因素方差分析;线性回归的整体 F 或局部约束 F;嵌套线性模型的显著性。 |
| 核心优点 | 与方差分解框架一致,解释清楚;是 ANOVA 与线性模型的标准输出;可同时检验多个参数约束。 |
| 局限与缺点 | 对正态性敏感(尤其方差齐性检验);方差比检验功效与稳健性往往不如更现代的替代;多重比较仍需后续步骤。 |
使用前确认:
- 响应是否连续、近似正态;
- 各组是否独立;
- 做均值比较时,方差齐性是否需要;不齐时考虑 Welch ANOVA 或变换;
- 显著之后要做什么两两比较或效应量报告。
三、核心原理
1. F 分布
若 , 独立,则
2. 两样本方差齐性(经典形式)
在 且正态 i.i.d. 下,。实践中常把较大方差放分子,并做双侧调整;或直接使用 Levene / Brown–Forsythe 等更稳健的齐性检验。
3. 单因素 ANOVA 的 F 检验
组,组 样本量 ,总均值为 :
所有组均值相等。拒绝 只说明“不全相等”,不等于每对都有差异。
4. 线性回归整体 F
对模型 ,
检验 除截距外所有斜率系数为 0。
5. 嵌套模型偏 F 检验
全模型与简化模型的残差平方和之差,标准化后得 F,用于检验若干系数是否同时为 0(例如一组哑变量是否整体有用)。
四、关键决策
1. 方差齐性:用谁?
经典 对正态敏感。更常用 Levene 检验(对中位数的绝对偏差做 ANOVA)。齐性只是手段:最终关心均值时,不齐可直接 Welch。
2. ANOVA 显著后做什么?
预先计划的对比(contrast)或事后两两比较(Tukey、Dunnett)。禁止只挑最大最小两组做 t 而不校正。
3. 效应量
报告 或偏 ,避免只给 p 值。
4. 回归中的 F 与 t
单个系数的 t 检验与自由度为 1 的偏 F 等价。多系数联合假设必须用 F(或似然比),不能看“每个 t 都不显著就联合不显著”。
五、MATLAB 示例
rng(3);
% ---- 1) 两样本方差比(演示)----
x = normrnd(0, 1.0, 40, 1);
y = normrnd(0, 1.6, 45, 1);
[h, p, ci, stats] = vartest2(x, y);
fprintf("方差比检验 F=%.3f, p=%.4g\n", stats.fstat, p);
% Levene 思想:对 |x-median| 做 t/ANOVA(示意)
dx = abs(x - median(x)); dy = abs(y - median(y));
[~, p_lev] = ttest2(dx, dy);
fprintf("基于绝对偏差的齐性粗检 p=%.4g\n", p_lev);
% ---- 2) 单因素 ANOVA ----
g1 = [5.1 5.3 4.9 5.0 5.2];
g2 = [5.8 6.0 5.7 5.9 6.1 5.6];
g3 = [4.8 4.7 5.0 4.6 4.9];
allx = [g1(:); g2(:); g3(:)];
group = [repmat("A", numel(g1), 1); repmat("B", numel(g2), 1); repmat("C", numel(g3), 1)];
[p_anova, tbl, stats_a] = anova1(allx, group, "off");
disp(tbl);
fprintf("ANOVA p = %.4g\n", p_anova);
% 事后多重比较
figure; multcompare(stats_a); title("Tukey 多重比较");
% 效应量 eta^2
SSB = tbl{2,2}; SST = tbl{4,2};
eta2 = SSB / SST;
fprintf("eta^2 = %.3f\n", eta2);
% ---- 3) 回归整体 F:fitlm ----
n = 100;
X1 = randn(n,1); X2 = randn(n,1);
Y = 1 + 0.8*X1 + 0.0*X2 + 0.7*randn(n,1);
T = table(X1, X2, Y);
mdl = fitlm(T, "Y ~ X1 + X2");
disp(mdl);
fprintf("回归 F=%.3f, p=%.4g, R^2=%.3f\n", ...
mdl.ANOVA.F(1), mdl.ANOVA.pValue(1), mdl.Rsquared.Ordinary);
六、如何解释结果
- 写明 与检验类型(齐性 / ANOVA / 回归整体 / 偏 F);
- 给出 F 值、两个自由度、p 值;
- ANOVA 中报告各组均值与 ;
- 回归中配合 、调整 与系数表;
- 显著后说明后续多重比较或变量选择结论;
- 诊断:残差正态性、齐方差、独立性。
表述示例:“三组工艺的强度均值存在显著差异(F(2,14)=18.6,p<0.001,η²=0.73)。Tukey 比较显示 B 高于 A 与 C,A 与 C 无显著差异。”
七、常见误区
1. ANOVA 显著却直接说“每组都不同”
F 检验是全局检验,两两关系要靠多重比较。
2. 用方差齐性检验“卡”得很死
齐性检验本身可能功效低或对正态敏感;更稳妥的是结合残差图与稳健 ANOVA。
3. 把回归整体 F 显著理解成每个变量都有用
整体 F 只说明“至少有一个预测变量有关”,单个变量看 t/偏 F。
4. 非嵌套模型硬做 F 比较
偏 F 要求模型嵌套且基于同一数据集与同一估计框架。
5. 忽略方差分析的独立性
重复测量、聚类数据应用混合模型或重复测量 ANOVA,而不是普通 anova1。
八、小结
F 检验的本质是:
用两个均方(方差估计)之比,判断额外的结构(组别、回归、约束)是否解释了显著多于噪声的波动。
它是 ANOVA 与线性模型的骨架。用好 F 检验要配套方差分解表、效应量、诊断图和(必要时)多重比较,而不是只截取一个 p 值。