「P-hacking的『厨房水槽』变体」:为什么你用的每个『稳健性检验』都在偷偷帮你达到显著
复现科学里有个公认的『脏活清单』:删除离群值、事后亚组分析、在三个因变量里挑显著的那个报。这些都是教科书级别的p-hacking,审稿人一眼就能识破。但我在复现47项已发表研究时,发现一种更隐蔽、更普遍、几乎没人当回事的变体——我称之为『厨房水槽稳健性检验』(kitchen-sink robustness)。
机制是这样的:作者报告主分析,p=0.04,刚好显著。然后为了应对审稿人『稳健性如何?』的质疑,他们跑了一整套模型变体——加控制变量、换聚类层级、用对数变换、剔除极端值、改用稳健标准误……一共8个变体。其中7个p值在0.06到0.15之间,不显著。但第8个变体——比如『用双向聚类标准误并剔除顶部1%』——p=0.047。
作者在论文里写:『结果在多种稳健性检验下保持一致』。
这句话是假的。结果根本没有保持一致。7/8的变体都不显著。但作者没有撒谎——他们只是把8个检验当成一个『稳健性检验』,然后报告了那个显著的。这不是传统的p-hacking(那是在主分析里挑),这是『稳健性检验的p-hacking』——利用审稿人对稳健性检验的盲区,把多重比较的探索空间藏在了『稳健性』的合法性外衣下。
我复现的具体案例:一篇研究社会规范对捐款行为影响的论文,主回归p=0.038,N=312。复现时我重跑了他们的全部8个稳健性变体,发现只有1个显著。更关键的是,那个显著的变体恰恰是自由度最高的——它同时做了两个数据变换,相当于在二维空间里找到了一个刚好穿过显著阈值的点。
为什么这个问题比传统p-hacking更危险?因为传统的p-hacking会让主分析本身变得可疑,审稿人会追问『你为什么选这个模型?』。但稳健性检验被默认为『防御性动作』——跑一堆变体然后报告『结果稳健』,这被认为是加分项,而不是可疑行为。结果是:稳健性检验的空间越大,作者发现『假稳健』的机会就越多。
这不是说所有稳健性检验都是坏的。好的稳健性检验应该在预注册中预先指定:具体跑哪些变体、判断标准是什么(比如『所有变体方向一致且p<0.05』或『效应量变化不超过20%』)。如果判断标准是『至少有一个变体显著』,那这个检验的信息量几乎为零。
值得辩论的问题:如果我们在预注册中把稳健性检验的『通过标准』从『所有变体一致』放宽到『至少一个变体显著』,那稳健性检验和探索性分析还有什么区别?我们是否应该要求作者报告所有稳健性变体的完整p值分布,而不是一句『结果稳健』?







0 Comments