5.1 估计量、置信区间与 p 值:结论依赖怎样获得样本
差四个百分点听起来很精确,但还得问:谁进入了样本,里面有多少独立单位?统计推断把估计值与抽样过程连起来;p 值再小,也补不回缺失的研究设计。
本课目标
- 明确总体、样本、estimand 与估计量;
- 正确解释标准误和频率学置信区间;
- 为两组差值直接构造区间;
- 准确解释 p 值与“不拒绝零假设”。
1. 先写 estimand
estimand 是希望从目标总体获得的量,例如:
目标总体:未来一个季度符合准入条件的任务
处理:使用新训练方案
对照:使用旧方案
结果:任务在 24 小时内完成
estimand:两方案完成概率之差(百分点)样本均值、样本比例和回归系数是估计量。它们是否估计目标 estimand,依赖抽样、分配、测量和缺失机制。统计公式只能量化模型内的不确定性,不能修复选择偏差。
严格说,估计量是作用于随机样本的计算规则,本次数据算出的具体数值是估计值。从当前样本推到下季度,还需要说明目标人群与运行条件变化时为何仍可推广。
2. 标准差与标准误
- 标准差描述观测值之间的离散;
- 标准误描述估计量在重复抽样中的波动。
独立同分布样本均值的估计标准误:
同一队伍的多条任务可能相关。队内正相关时,把每行都当独立单位通常会低估标准误。应按分配或相关单位处理聚类、使用合适的层级模型,或在保留目标权重的前提下聚合;直接聚合可能把“平均任务”换成“平均队伍”。
3. 95% 置信区间的频率学解释
一套 95% 置信区间构造程序若在相同条件下重复抽样,长期会有约 95% 的区间覆盖固定参数。
得到本次区间后,在频率学框架里参数被视为固定,不能说“真实参数有 95% 概率落在这个已算出的区间”。可以说:
按当前抽样与模型假设,估计差异为 4.0 个百分点,
95% 置信区间为 [1.2, 6.8] 个百分点。贝叶斯 credible interval 可对后验参数概率作另一种解释,但需要先验和概率模型,不应与频率学 CI 混用。
4. 两组差异要直接估计
对两个独立组的同一个连续结果,Welch 方法不要求方差相等。以下 Python 代码使用 NumPy 和 SciPy 1.11 及以上版本,按顺序运行;用于交叉核对的结果对象从 1.11 起提供置信区间方法。
import numpy as np
from scipy import stats
old = np.asarray([30, 32, 35, 29, 34, 31], dtype=float)
new = np.asarray([24, 28, 25, 27, 26, 29], dtype=float)
if any(x.ndim != 1 or len(x) < 2 or not np.isfinite(x).all() for x in (old, new)):
raise ValueError("Each independent group needs at least two finite observations")
estimate = new.mean() - old.mean()
new_component = new.var(ddof=1) / len(new)
old_component = old.var(ddof=1) / len(old)
se = np.sqrt(new_component + old_component)
if se == 0:
raise ValueError("Both groups have zero sample variance; review the measurement design")
degrees_of_freedom = (new_component + old_component) ** 2 / (
new_component ** 2 / (len(new) - 1)
+ old_component ** 2 / (len(old) - 1)
)
critical = stats.t.ppf(0.975, degrees_of_freedom)
interval = (estimate - critical * se, estimate + critical * se)
reference = stats.ttest_ind(new, old, equal_var=False)
print(estimate, interval, reference.pvalue)
print(reference.confidence_interval(confidence_level=0.95))不能把“新组区间下界减旧组区间下界”当作差异区间。差值有自己的抽样分布和标准误。
样本估计为 -5.333 分钟,95% 区间约为 [-8.058, -2.608] 分钟,双侧 p 值为 0.00151。差值定义为 new 减 old,因此负值表示新方案时长较短。独立性要求仍然存在,小样本严重长尾时,t 近似也可能不可靠。SciPy Welch 检验按 (new, old) 调用时使用相同差值方向。
两组各自 95% CI 是否重叠也不是标准的 5% 差异检验规则。区间略有重叠时,差异仍可能显著;应直接计算差值区间或相应检验。
5. 比例需要适合比例的方法
若每项任务结果是成功/失败,保留计数:
new_success / new_total
old_success / old_total差值、风险比和优势比回答不同问题。完成率差通常以百分点最容易解释;相对风险需给出基线。
new_success, new_total = 3, 5
old_success, old_total = 3, 10
risk_difference = new_success / new_total - old_success / old_total
relative_risk = (new_success / new_total) / (old_success / old_total)
new_rate_ci = stats.binomtest(new_success, new_total).proportion_ci(method="wilson")
print(risk_difference, relative_risk, new_rate_ci)
zero_rate_ci = stats.binomtest(0, 5).proportion_ci(method="wilson")
print(zero_rate_ci)点估计差为 0.30,即 30 个百分点,相对风险为 2。这里的 Wilson 区间只针对新组概率,不是两组差值区间。即使五次中零成功,区间上界也约为 43.45%;没观察到事件不能证明概率为零。这类区间要求独立、成功概率相同的 Bernoulli 观测。参见 SciPy 比例区间。
小样本或接近 0/1 时,简单正态近似区间可能覆盖不佳。可使用 score/Newcombe、精确方法或合适模型。把每个聚合组的 success_rate 当普通连续观测做 t 检验,会忽略分母差异。
6. p 值是一项条件概率
给定:
- 零假设
; - 检验统计量;
- 抽样与模型假设;
p 值是在
它不是:
为真的概率; - 结果由随机造成的概率;
- 效果在现实中重要的概率;
- 研究可重复的概率。
“更极端”由单侧或双侧备择和统计量定义。看完方向再选择单侧检验会改变错误率。
美国统计协会关于 p 值的声明也区分了数据与模型的相容程度、效应大小和实际重要性。模型假设本来就是结论的一部分,不是可有可无的脚注。
7. 显著性阈值应事先决定
显著性水平 0.05 是惯例,不是自然法则。
报告连续 p 值和区间,不把 0.049 与 0.051 描述成性质完全不同的结果。p=0.06 不能改叫“接近显著”;应报告估计、区间、样本量和决策规则。
不拒绝
8. Bootstrap 仍依赖重抽样单位
bootstrap 可通过重复重抽样估计统计量分布,适合复杂估计量,但不是无假设方法。
若任务在队伍内相关,应按队伍 cluster 重抽,而不是逐行抽。时间序列需 block bootstrap 等保留依赖的方法。错误重抽样单位会产生过窄区间。
常见误区
- 本次 95% CI 表示参数有 95% 概率在其中:这是频率学区间的常见误读。
- 两组 CI 重叠就不显著:应直接分析差值。
- p 值小证明效果大:样本量也会推动 p 值变小。
- bootstrap 可以忽略相关性:重抽样单位必须匹配数据生成过程。
练习
- 为新旧方案写出总体、样本、estimand 和估计量。
- 解释标准差大但均值标准误小可能怎样同时发生。
- 用 Welch 公式计算均值差区间,并与两组单独 CI 比较。
- 为重复用户数据设计 cluster bootstrap。
小结
统计推断从 estimand 和采样机制开始。置信区间描述估计精度,p 值描述零假设下统计量的极端程度;二者都必须连同假设、单位和差值定义解释。
下一课选择具体检验,并把效应量、功效、多重比较和分析计划放进同一套决策流程。