7.1 假设检验的思想¶
暑假里,小率把一张生活实践作业拿来找均哥:社区团购的盒装牛奶标着“净含量 250 mL”,他随机买了 10 盒,用量杯一盒盒倒出来,平均只有 247 mL。
| 牛奶编号 | 1 | 2 | 3 | 4 | 5 | ... |
|---|---|---|---|---|---|---|
| 容量(mL) | 246 | 249 | 248 | 247 | 245 | ... |
这 3 mL 的差距,到底是测量和抽样带来的小波动,还是灌装机真的偏少?假设检验要回答的不是“真实平均值是多少”,而是:
如果厂家说的 250 mL 真的没问题,现在这组样本会不会显得太反常?
7.1.1 先保护一个默认说法¶
假设检验一开始不会直接相信“牛奶少了”。它先保护一个默认说法,叫 原假设(Null Hypothesis):
意思是:灌装机没有系统性偏少,真实平均容量仍然是 250 mL。
小率真正怀疑的是另一件事,叫 备择假设(Alternative Hypothesis):
意思是:真实平均容量小于 250 mL。
为什么不直接证明 H1
因为我们通常能计算的是“如果 \(H_0\) 为真,样本会怎样波动”。先设定一个参考世界,再看当前数据在这个参考世界里是否罕见,这就是假设检验的基本反证法。
7.1.2 五步走完一次检验¶
假设检验可以压缩成五步:
- 写出 \(H_0\) 与 \(H_1\)。
- 假设 \(H_0\) 为真,确定统计量应该怎样分布。
- 把样本结果换成检验统计量。
- 计算 p 值,或比较临界值。
- 根据预先设定的显著性水平 \(\alpha\) 做决定。
以牛奶为例,若我们知道灌装过程长期标准差约为 \(\sigma=5\) mL,抽样 \(n=10\),样本均值 \(\bar x=247\),就可以把“少 3 mL”换成:
它的意思不是“少了 1.90 mL”,而是:
样本均值比 250 mL 低了约 1.90 个标准误。
7.1.3 p 值回答“有多罕见”¶
p 值(p-value)问的是:
如果 p 值很小,说明当前数据在 \(H_0\) 世界里很罕见,\(H_0\) 就站不太住。
不拒绝不等于证明正确
若 p 值不小,我们只能说“证据不足以反驳 \(H_0\)”。这不等于证明 \(H_0\) 正确,也不等于证明牛奶一定足量。
7.1.4 单侧和双侧取决于问题¶
备择假设决定拒绝域在哪边。
| 问法 | 备择假设 | 检验方向 |
|---|---|---|
| 是否偏少 | \(H_1:\mu<250\) | 左侧检验 |
| 是否偏多 | \(H_1:\mu>250\) | 右侧检验 |
| 是否不等于标称值 | \(H_1:\mu\ne250\) | 双侧检验 |
如果小率在抽样前只关心“有没有少装”,左侧检验合理;如果他只是怀疑“标称值不准”,不管偏多偏少都算问题,就应该用双侧检验。
不要看完数据再选方向
先看到样本均值偏低,再把双侧改成左侧,会人为降低 p 值。检验方向必须在看主要结果前定好。
7.1.5 Python 走一遍牛奶检验¶
from scipy import stats
import math
mu0 = 250
xbar = 247
sigma = 5
n = 10
z = (xbar - mu0) / (sigma / math.sqrt(n))
p_left = stats.norm.cdf(z)
print(f"z = {z:.2f}")
print(f"左侧 p 值 = {p_left:.4f}")
print("决策:", "拒绝 H0" if p_left < 0.05 else "不拒绝 H0")
完整脚本见:
7.1.6 检验和置信区间是一枚硬币两面¶
若做双侧检验,显著性水平为 \(\alpha\),那么:
在 \(\alpha\) 水平下不拒绝 \(H_0:\mu=\mu_0\),等价于 \(\mu_0\) 落在 \(1-\alpha\) 的置信区间里。
所以报告中常同时给出:
- 点估计:样本均值是多少。
- 置信区间:合理范围有多宽。
- p 值:原假设下当前结果有多罕见。
小率的笔记本
假设检验先写 \(H_0\) 和 \(H_1\),再假设 \(H_0\) 为真,计算当前数据是否罕见。p 值小,说明数据与 \(H_0\) 不合拍;p 值不小,只能说证据不足。检验方向要事先确定,不要看完数据再改。

