Skip to content
  • 概念笔记「因果推断方法阵营」
  • 概念笔记「频率推断核心张力」 sources:
  • 共形预测无分布不确定性量化AngelopoulosBates2022
  • multi-arm-experiment-design
  • two-stage-sampling-experiment---

因果推断的每个诊断检验都是一次假设检验——p-hacking 不只污染显著性,还污染因果识别

问题:因果方法的有效性检验本身可能被 p-hack

频率学派推断的核心张力——「它构建的工具禁止你用直觉理解它们」——在因果推断中有一种特殊的复发形式。每种因果方法都附带一组诊断检验来验证方法的假设是否成立。但这些诊断检验本身也是假设检验——而研究者在做这些检验时,完全可能(而且经常)在不自知的情况下进行 p-hacking。

因果方法 诊断检验 检验的是什么 如何被 p-hack
IV 第一阶段 F 统计量 工具变量是否足够强 「试试不同的工具变量组合,看哪个 F>10」
DID 平行趋势检验(事件研究图) 干预前趋势是否平行 「选不同的干预前时间窗口,看哪段最平行」
RDD McCrary 检验 断点处密度是否连续(无操纵) 「微调带宽,直到 McCrary 不显著」
RDD 安慰剂检验 假断点处是否也有效应 「做 10 个安慰剂点,只报告最不显著的那个」
PSM 平衡性检验 匹配后协变量是否平衡 「逐步加/减协变量,直到所有标准化差异 < 0.1」
中介分析 逐步检验(Baron-Kenny) 每个因果路径是否显著 「换中介变量的操作化定义,直到全部路径显著」

每做一个诊断检验,假阳性的累积风险就增加——但几乎没有因果推断的教材或实践指南提到这个问题。

具体场景

场景 1:IV——选工具变量时的「F 钓鱼」

研究者有 5 个候选工具变量(如「医生处方偏好」「医院距离」「政策时间差」「天气」「出生月份」),每个都单独跑第一阶段回归:

工具变量 1: F=8.2  ← 「接近但不达标,试试去掉几个协变量」
工具变量 2: F=4.1  ← 太弱
工具变量 3: F=12.7 ← 「过了!」
工具变量 4: F=9.1  ← 「再试试」
工具变量 5: F=3.5  ← 太弱

选择工具变量 3,报告「第一阶段 F=12.7,通过弱工具检验」。

问题:如果 5 个工具中只有 1 个 F>10 是真实的信号(其他 4 个都是噪声),那么选择最大的 F 统计量 = 选择最有可能只是运气好的噪声。这就是winner's curse in IV selection——报告的 F 统计量系统性地高估了工具的真实强度。

防御:报告你测试过的所有候选工具变量及其 F 统计量,并论证选择当前工具的理由基于设计阶段的先验知识(为什么这个工具在理论上应该相关?),而非仅凭 F 的大小。

场景 2:DID——平行趋势的「窗口选美」

DID 的事件研究图需要选择干预前的观测窗口。假设你有 10 期干预前数据(t=-10 到 t=-1):

窗口 [-10, -1]:t=-8 和 t=-3 期有轻微偏离 → 平行趋势不完美
窗口 [-5, -1]:全部平行 ✅ → 报告这个窗口

问题:你选择了「看起来最平行」的时间窗口,但「平行趋势在 [-5, -1] 成立」的推论并不自动意味着「平行趋势在干预后也成立」——你只是选择了数据最配合的窗口。

防御: 1. 如果数据允许,预注册干预前窗口 2. 报告全窗口事件研究图(包括所有干预前时点),而不是只报告「看起来好的」窗口 3. 做敏感性分析:用不同窗口重复分析,看结论是否稳健

场景 3:RDD——带宽和安慰剂的双重 p-hacking

RDD 有两个可以「调」的参数: - 带宽:断点附近包括多少观测?带宽越宽,样本越多、标准误越小——但局部性越弱 - 安慰剂断点:在非真实断点处测试,应该「没有效应」

一个典型的 p-hacking 路径: 1. 跑主分析,带宽 = 10 → 效应不显著(p=0.08) 2. 试试带宽 = 8 → p=0.04 ✅ 3. 「现在需要验证有效性:McCrary 检验 + 前定变量连续性」 4. 做 5 个安慰剂断点 → 4 个不显著,1 个显著 → 报告「5 个中 4 个不显著,说明有效性良好」

问题:每一步的选择都基于「什么让结果看起来最好」——这在数学上等价于 p-hacking,但因为分散在多个步骤中,研究者和审稿人都难以察觉。

实践建议:因果推断的诊断纪律

1. 预注册诊断计划(在接触结果数据之前)

在分析前明确: - 哪些诊断检验你会做? - 每个检验的阈值是什么?(F>10?标准化差异 < 0.1?) - 如果某个诊断检验未通过,你的预案是什么? - 你会报告多少个候选工具变量/安慰剂断点/平行趋势窗口?

2. 多重比较校正——不只在主分析中,也在诊断检验中

如果你做了 5 个安慰剂检验,报告「全部 5 个都不显著」比报告「5 个中选 1 个报告不显著」更诚实。如果必须从多个选项中选一个,用 Bonferroni 或更温和的 Holm 校正调整显著性阈值。

3. 区分「设计驱动的诊断」和「数据驱动的诊断」

设计驱动的诊断 数据驱动的诊断
基于理论预期选择工具变量,然后检验 F 跑 5 个工具变量,选 F 最大的
基于制度知识选择 RDD 带宽 跑 10 个带宽,选 p 最小的
基于政策实施日期定义 DID 干预时点 试 3 个可能的日期,选效应最大的

设计驱动 = 诚实。数据驱动 = 本质上是 p-hacking,尽管看起来像「稳健性检验」。

4. 反向诊断:如果结论不显著了,你还会报告吗?

一个强力的自检:如果同样的诊断检验得出了「方法假设不成立」的结论,你会诚实报告并放弃这个方法吗? 如果答案是「不,我会微调参数直到通过」——那么你已经进入了 p-hacking 的领域,而因果推断变成了仪式性的修辞而非实质性的识别。

跨域链接

  • 关联不等于因果——可交换性是分界线:SUTVA 是最需要诊断检验的因果假设——SUTVA 违反时因果框架本身已经崩塌。
  • 机器学习失败金字塔——算法选择是塔尖:ML 评估指标面临与因果诊断检验相同的 p-hacking 陷阱——多次尝试不同模型/特征直到指标好看。
  • 频率推断核心张力——工具禁止直觉理解:p-hacking 的根在频率学派推断框架中——p 值的定义被系统性误解,诊断检验放大了这个问题。
  • 因果推断方法阵营——分歧不在数学:每种因果方法都有诊断检验,每种诊断检验都是 p-hacking 的入口——IV 的 F 钓鱼、DID 的窗口选美、RDD 的带宽调优。
  • 度量选择是元决策——选错比没有更危险:诊断检验的阈值(F>10、标准化差异<0.1)本质上是度量选择——选错阈值导致系统性错误判断。
  • 决策理论三张面孔——规范描述规定:诊断检验的结果解释需要决策框架——"检验通过"不等于"假设成立",需要损失函数来权衡两类错误。
  • 贝叶斯与频率学派分歧——不是方法偏好:贝叶斯诊断(后验预测检查、WAIC)避免了频率学派诊断检验的 p-hacking 问题——因为它们不以显著性检验为核心。
  • 实验设计与在线对照实验——从显著到可信:A/B 测试的诊断检验(SRM、A/A 测试)同样面临 p-hacking——多次分流直到 SRM 不显著。\n\n## 追加——设计阶段的 p-hacking 与分布自由的检验替代(2026-07-02 常青化)\n\n本轮追加将诊断检验的 p-hacking 风险从「分析阶段」(因果推断)延伸到「设计阶段」(实验设计),并提出了分布自由的替代方案。\n\n设计阶段的 p-hacking——三重复发模式:(1) 多臂实验的协变量调整陷阱——当各臂独立使用调整模型时,模型选择变成了后选择,破坏跨臂效应估计的可比性;(2) 两阶段抽样的方差悖论——当研究者注意到标准误比预期大后「重做设计」,设计空间的探索增加了选择效应,使最终标准误向下偏;(3) 共形预测作为分布自由的诊断替代——通过分数函数的经验分布构造有限样本有效的覆盖保证,规避「用假设检验去诊断另一个假设检验」的自指问题。\n\n核心洞察:每种诊断检验都是一次假设检验,在分析阶段和设计阶段面临相同的 p-hacking 风险,共形预测提供了规避假设自指的出路。