郢书燕说:从死三文鱼到因子动物园,噪声是怎么被读成机制的
引言 · 郢人夜书,燕相读之
郢人有遗燕相国书者,夜书,火不明,因谓持烛者曰"举烛",云而过书"举烛"。举烛,非书意也。燕相受书而说之,曰:"举烛者,尚明也;尚明也者,举贤而任之。"燕相白王,王大说,国以治。治则治矣,非书意也。
——《韩非子·外储说左上》
这是中国最早的一则关于过拟合的寓言。
楚国郢都有人给燕国相国写信。夜里写,烛火不够亮,他就冲举烛的仆人喊了一句"举烛"——然后顺手把这两个字误写进了信里。
燕相国收到信,读到"举烛",陷入沉思。他想通了:举烛者,崇尚光明也;崇尚光明,就是要举贤任能啊。他把这个解读禀告燕王,燕王大悦,依此施政,燕国因此大治。
韩非在结尾下了六个字的判词:治则治矣,非书意也。
治是真的治了。但那不是信的意思。
这则寓言之所以两千三百年后仍然锋利,是因为它同时说清了三件事,而这三件事恰好是现代统计学最难处理的三个层次:
第一,信里那两个字确实是噪声。它不是错误的信息,它根本不是信息——它是烛火不亮时的一次手滑。
第二,燕相国的解读在逻辑上无懈可击。"举烛→尚明→举贤"这条链条每一步都成立,你无法从解读内部指出它错在哪里。
第三,也是最要命的,燕国确实大治了。如果它一开始就乱,没有人会上当。
把这三件事翻译成今天的语言:一个纯噪声的信号,被赋予了一套自洽的机制解释,并且在样本内取得了漂亮的表现。
这正是从功能磁共振成像到量化因子挖掘,整个现代实证科学最普遍的失效模式。本文要回答的问题是:
- 为什么当候选项足够多时,出现一个"极其显著"的结果不是奇迹,而是可以精确计算的定理?一亿只猴子的冠军, 统计量到底是多少?
- 为什么你明明只跑了一个分析,有效的检验次数却远大于一?你不知道自己的 ,这件事有多严重?
- 燕相国为什么问心无愧?为什么"我没有作弊"这句辩护在数学上完全无效?
- 从 Bonferroni 到 Benjamini-Hochberg,统计学在 1995 年发生了一次什么样的哲学转向?
- 学术界是怎么用模算术、分布形状和字体,反向侦破一份被挑选过的数据的?
- 落到量化:三百多个因子的动物园里, 这个门槛是怎么来的?一个策略的夏普比率,究竟该打几折?
一、数学的必然:冠军猴子的 值是可以算出来的
1.1 入门版本:全族误差率
先把最基础的那层说清楚。
单次假设检验中,取显著性水平 ,意味着即使被检验的指标完全是随机噪声,也有 的概率被误判为显著。这是第一类错误,假阳性。
现在同时检验 个彼此独立的随机指标。至少出现一次假阳性的概率,称为全族误差率(Family-Wise Error Rate, FWER):
其中 是假阳性的个数。当 很小时,这个式子有一个更直观的近似:
代几个数: 时是 ; 时是 ; 时是 ;到 ,也就是一亿只猴子,这个概率在任何有限精度下都等于 。
所以"一亿只猴子里总有一只能选出完美预测历史的指标"——这句话在数学上不是修辞,是确定性事件。
但 FWER 只回答了"有没有",它没有回答更有用的那个问题:那只冠军猴子,到底能好到什么程度?
1.2 锋利版本:极值统计
这才是真正该算的东西。
设 是 个独立同分布的标准正态变量——把它们想成 个纯噪声策略各自的 统计量。记
我们要问的是 的分布。
经典的 Fisher-Tippett-Gnedenko 极值定理给出:对正态分布,经过适当的中心化与标度化之后, 收敛到 Gumbel 分布。具体地,令
则
Gumbel 分布的均值是 Euler-Mascheroni 常数 ,方差是 。于是
现在把一亿代进去。,:
这两个数值得盯着看一会儿。
第一个数:一亿只纯噪声猴子里的冠军,期望 统计量是 。作为参照,粒子物理学宣布"发现新粒子"的黄金标准是 。也就是说,一亿次纯随机的尝试,其冠军在统计显著性上超过了人类宣布发现希格斯玻色子所要求的门槛。
第二个数更狠:标准差只有 。
这意味着 几乎不随机。一亿只噪声猴子的冠军 值,会以极高的概率落在 到 这个狭窄区间里。它不是"运气好碰上的",它是可以提前预报的。
为什么标准差这么小
Gumbel 的尺度参数 随 增大而缩小。搜索空间越大,冠军的位置反而越确定。
物理直觉是:正态分布的尾部衰减极快(),所以"最大值能站在哪里"被尾部的陡峭度死死钉住。多一只猴子几乎不能把冠军往右推,但一亿只猴子里少了任何一只,冠军也几乎不会往左退。
这是极值统计里一个反直觉的事实:最极端的那个样本,往往是整批样本里最可预测的。
1.3 增长得有多慢
把 对几个量级的 列出来:
| 搜索次数 | (冠军 值) |
|---|---|
从 到 ,搜索空间涨了一百万倍,冠军 值只从 涨到 ,连翻倍都不到。这是 这个形式的必然后果:它增长得极慢,但从不停下。
这个"慢"有两面。
好的一面:搜索空间爆炸不会让 值爆炸。你不会看到 的噪声因子。
坏的一面要严重得多:既然 涨得这么慢,那么把显著性门槛提高也就挡不住什么。
把门槛从 提到 ,听上去是把显著性要求从 收紧到了 ,像是一次大手术。但从上表读: 对应的 大约是 。也就是说, 这道门槛,只能挡住四百次量级的搜索。如果你的团队一个季度跑了五千个回测,它形同虚设。
记住这个数字 。它会在第六节以一种令人不安的方式再次出现。
二、你不知道自己的
上一节所有的数学都建立在一个前提上:你知道 是多少。
现实中的困难几乎全部来自于——你不知道。而且你通常严重低估它。
2.1 是乘出来的,不是加出来的
一个典型的量化研究流程:
回看窗口取 四选一;信号平滑用 三选一;股票池是 三选一;持仓加权是 三选一;再平衡频率是 三选一。
研究员的主观感受是"我做了一个策略,调了几个参数"。数学上的 是 。查上表,即使这个策略毫无信号,它的冠军配置期望 值也有 左右。
而这只是一个策略族。一年下来,一个中型量化团队的累计 轻易进入五位数。
2.2 分叉小径的花园
比参数网格更隐蔽的,是 Andrew Gelman 与 Eric Loken 提出的分叉小径的花园(The Garden of Forking Paths)。
他们的核心洞见极其重要,也极其容易被误解:
即使你只跑了一个分析,只要你选择这条分析路径的依据来自于你看到的数据,你的有效 就已经大于一。
这句话值得慢读一遍。
传统的 p-hacking 图景是:研究者跑了 50 个模型,挑了最好看的那个报告。这是主动的、可被指责的。
分叉小径描述的是完全不同的场景:研究者诚实地只跑了一个模型。但他是在看了数据的散点图之后,才决定"这里明显是非线性的,应该取对数";是在看到残差之后,才决定"这三个点显然是记录错误,应该剔除";是在初步结果出来之后,才决定"这个效应在男性样本里更清晰,应该分性别讨论"。
他从未同时跑过 50 个模型。但如果数据长成另一个样子,他会走上另一条小径。他的分析流程是数据的函数。
这在数学上意味着什么?意味着 值的零分布不再是 。 这个概率陈述描述的对象,从来不是手上这组数据,而是产生这个结论的整套流程。流程一旦依赖数据,概率陈述就失效了,哪怕流程只被执行了一次。
这是全文最容易被误读的一点
"我只跑了一次回测,所以不存在多重检验问题"——这是量化研究里最常见的自我安慰,也是错的。
判据不是"你执行了几次",而是"如果数据不同,你会不会做不同的事"。
如果答案是"会"(而它几乎永远是"会"),那么你的有效 就等于所有那些你本来可能走上的路径的总数,无论你实际走了几条。
2.3 薛定谔的样本量:选择性停止
还有一条路径,它连"分叉"都算不上,因为它在时间轴上展开。
按严格的统计规范,样本量 必须在实验开始前通过功效分析确定。现实中的操作往往是这样的:
先测 20 只小鼠,算一下 。研究者叹气:"差一点就显著了,显然是样本量不够导致统计功效不足,再加 5 只。"加到第 24 只,,立刻宣布:"停!显著了,再做就是浪费经费。"
这叫选择性停止(Optional Stopping)。它不修改任何一个数据点,不剔除任何一个样本,在道德上看起来完全清白。
它的数学后果是灾难性的。Armitage、McPherson 与 Rowe 在 1969 年算过这笔账:名义水平 下,
| 中途检验次数 | 实际假阳性率 |
|---|---|
最后一行不是笔误。如果允许无限次地"再加几个样本看看",假阳性率收敛到 。
原因是随机游走的常返性:累积的检验统计量在零假设下是一个(近似)布朗运动,而一维布朗运动以概率 会触及任何给定的水平。你只要肯一直加样本,边加边看,迟早会撞线。
在量化里,这条路径的名字叫延长回测区间。"这个策略 2015 年以来表现一般,但如果从 2012 年开始看就很漂亮"——这是同一个数学错误换了一身衣服。
2.4 先开枪,后画靶
最后一层是 HARKing(Hypothesizing After the Results are Known,结果已知后提出假设)。
论文最终呈现的行文逻辑通常是:先有一个精妙的理论预设,据此设计严密的实验,最后数据完美验证了假设。
现实往往完全相反。研究人员一口气测了几十种表型和上百个基因,绝大多数指标毫无变化,唯独某个冷门指标在某种特定浓度下显著上升。于是他回头翻文献,为这个意外显著的指标量身定制了一套"合情合理"的机理假说,把探索性的偶然发现包装成胸有成竹的验证性实验。
Simmons、Nelson 与 Simonsohn 在 2011 年那篇著名的《False-Positive Psychology》里做过一次量化:只需要把四种寻常的研究者自由度(额外收集样本、剔除异常值、加入协变量、选择性报告因变量)组合起来,就足以把一个完全不存在的效应的假阳性率推到 。
不需要任何一次造假。
这正是燕相国做的事。"举烛"这两个字先出现,解释在后。而解释一旦成立,就再也看不出它是后来补上的了。
三、燕相国为什么问心无愧
到这里,一个自然的反应是:这些不都是学术不端吗?
恰恰相反。真正的造假是可以被抓的,我们在第五节会看到抓造假有多容易。而本文讨论的这套机制之所以难以根除,正是因为参与其中的人绝大多数问心无愧,甚至觉得自己是科学严谨性的守护者。
3.1 只在不显著时启动的质控
在实验室里,没有人会说"让我们挑一个显著的结果吧"。台词永远是极度正义的专业术语:
"这批细胞培养箱昨晚温度波动了 ,这几只对照组显然受到了非特异性干扰,理应剔除。"
"生理代谢过程显然不是线性的,取对数变换更符合真实的生物物理机制。"
"这三只小鼠的数据离群太严重,肯定是给药时漏液了,保留它们才是对科学的不严谨。"
每一句都可能是对的。真正的问题不在任何一句话本身,而在一个不对称性:
这套质控流程,只在结果不显著的时候启动。
如果第一次计算就得到 ,没有人会去查培养箱的温度,没有人会觉得离群点需要处理,没有人会怀疑对数变换是否更合适。所有这些"严谨性"的念头,只在 的时候才被唤醒。
把它形式化。设可选的分析路径为 ,每条路径给出一个 值 。研究者的实际行为是一个停止规则:
也就是说,他持续搜索,直到第一次跨过显著性门槛为止。报告的 值是 。
这个 的分布与 毫无关系。它是 个(可能相关的)随机变量的首次穿越值,在零假设下它的期望远小于 ,且以极高概率落在 的左侧——这正是我们在第五节要用来抓人的那个特征。
3.2 意图不在公式里
这里有一个统计学上极其重要、但在日常讨论中几乎总被忽略的事实:
第一类错误率 的定义式里,没有"意图"这一项。
。这个概率是对流程在重复抽样下的频率陈述。它不关心执行流程的人想什么,是否真诚,是否有既得利益,是否在深夜为自己的严谨而感动。
一个真诚的研究者,如果他的分析路径依赖于数据,他的假阳性率和一个蓄意 p-hacking 的研究者完全一样。
这就是为什么"我没有作弊"作为辩护在数学上完全无效。它辩护的是动机,而被质疑的是流程。两者在概率论里根本不发生关系。
疑邻盗斧
《吕氏春秋·去宥》里有一则更早的寓言:
人有亡鈇者,意其邻之子。视其行步,窃鈇也;颜色,窃鈇也;言语,窃鈇也;动作态度无为而不窃鈇也。俄而抇其谷而得其鈇,他日复见其邻人之子,动作态度无似窃鈇者。
丢斧头的人看邻家孩子,走路像贼、脸色像贼、说话像贼。找到斧头之后再看,哪儿都不像了。
孩子没变。变的是观察者手里那个先验。
这正是动机性推理(Motivated Reasoning)的古典表述——而它与恶意造假的区别在于,丢斧头的人是真的看见了。他没有撒谎。
3.3 量化研究里的同款台词
把上面那三句实验室台词翻译成量化研究员的语言,毫无违和感:
"2020 年 3 月那两周是流动性危机,属于制度性异常,不应纳入常规回测。"
"2008 年之后市场微观结构发生了结构性断裂,样本从 2010 年开始才有可比性。"
"这只票当天有并购公告,属于事件驱动,不该由我们的价量因子负责。"
同样地,每一句都可能是对的。同样地,问题在于——这些反思只在夏普比率不好看的时候发生。
我在〈树欲静而风不止〉里讨论过一个相邻的现象:单位根检验对"价格是不是随机游走"这个问题的检验功效低得惊人,以至于在有限样本里,真实的均值回归和纯粹的随机游走几乎无法区分。那篇文章讲的是数据本身不够有力;这篇讲的是即使数据有力,流程也会把它污染掉。两种失效叠在一起,就是实证金融的日常。
四、两种解药:从"一次都不能错"到"允许多少脏东西"
面对多重检验,统计学给出了两代解药。它们的分歧不在技术,而在哲学。
4.1 第一代:FWER 与 Bonferroni 的诅咒
由 Fisher、Neyman 与 Pearson 建立的经典体系,控制的目标是全族误差率:
一次假阳性都不允许出现。 这是法庭式的无罪推定:宁可放过一千,不可错杀一个。
最直接的实现是 Bonferroni 校正:把单次检验的门槛压到 。
它的正确性来自 Boole 不等式(也叫 Bonferroni 不等式):
注意这个推导不需要任何独立性假设。这是 Bonferroni 校正最大的优点,也是它极度保守的根源——它按最坏情况(所有检验完全不重叠)来定价。
如果确实独立,Šidák 校正更锐利:门槛取 ,这是 的精确反解。但改进极其有限, 大时两者几乎重合。
在农田试验时代,同时测三到五种化肥, 很小,Bonferroni 完美工作。但二十世纪末发生了一件事: 爆炸了。
- 基因芯片与 RNA-seq:
- 全基因组关联分析(GWAS):
- 功能磁共振成像(fMRI): 个体素
当 、 时,Bonferroni 门槛是 。(这正是今天 GWAS 领域的行业标准阈值,它就是这么算出来的。)
代价是第二类错误的全面崩溃:一个确实致病的基因,只要效应量不够极端,就会被无情地扔掉。为了保证"绝不犯一次错",科学界把几乎所有真实的发现一起抹杀了。
这就是所谓的庞弗罗尼诅咒:在高维时代,最严谨的方法变成了最没用的方法。
4.2 第二代:FDR 的范式转移
1995 年,两位以色列统计学家 Yoav Benjamini 与 Yosef Hochberg 在《皇家统计学会学报 B 辑》上发表了一篇论文,提出了一个哲学上的转向:
在海量探索性研究中,"一次错误都不犯"既不现实,也有害。我们应该允许犯错,但严格控制在所有宣称的发现中,假发现所占的比例。
先把记号摆清楚。对 个假设做检验,真实情况与检验结论的交叉分类:
| 未拒绝 | 拒绝 (宣称发现) | 合计 | |
|---|---|---|---|
| 为真(实际无效应) | (假阳性) | ||
| 为假(实际有效应) | (真发现) | ||
| 合计 |
定义错误发现比例(False Discovery Proportion):
错误发现率(False Discovery Rate)就是它的期望:
把 FDR 控制在 ,物理含义极其直白:如果我向世界宣布发现了 100 个靶点基因,其中大约 95 个是真的,约 5 个是混进来的噪声。
这在科研探索和工程落地中是完全可以接受的权衡。它把标准从法庭的无罪推定,换成了工厂的良品率。
4.3 BH 阶梯与它的几何
Benjamini 与 Hochberg 给出的算法(BH 阶梯上升过程)优雅到几乎不像是解决这么大一个问题的:
第一步,排序。 把 个 值升序排列:
第二步,找分界点。 找到满足下式的最大序号 :
第三步,判决。 拒绝序号 到 的全部原假设。若不存在这样的 ,一个也不拒绝。
在独立性(或更弱的正回归依赖 PRDS)条件下,可以证明:
这个算法最精巧的地方要用几何来看。把 画成散点,三种方法对应三条不同的判决线:
- 未校正的检验:一条高度恒为 的水平线。
- Bonferroni:一条被压到 的、几乎贴着横轴的水平线。
- BH:一条从原点出发、斜率为 的射线。
从水平线到斜射线,这一步变化带来了数据自适应性:
如果数据中存在大量强信号, 值会在左端急剧扎堆,散点低于射线的区域向右延伸很远, 变得很大——算法自动对后排较弱的信号放宽容忍。
如果数据纯粹是噪声, 值在 上均匀分布,散点大致沿着斜率为 的对角线排列。由于 ,BH 的射线始终在这条对角线下方,散点几乎无法穿过——算法自动收紧,一个都不放行。
判决门槛由数据自己决定。 这是 BH 算法数学上最漂亮的一笔,也是它与 Bonferroni 那条僵死的水平线之间最本质的差别。
4.4 BY 过程:任意依赖结构的代价只是一个对数
原始 BH 算法依赖 PRDS 条件。2001 年,Benjamini 与 Daniel Yekutieli 证明:在任意依赖结构下(包括极端负相关),只需把门槛除以一个调和数,
FDR 依然被严格控制。
这个修正因子值得算一下。调和数有经典渐近:
时,。
也就是说,为"我对检验之间的依赖结构一无所知"这件事付出的代价,只是把门槛收紧 倍——而 Bonferroni 为同一件事收紧了 倍。
一个对数因子,换掉一个线性因子。这是 FDR 框架相对于 FWER 框架在高维情形下的全部优势,浓缩成一行。
五、如何反推一次"燕说":数据法证
前面四节都在讲如何预防。这一节讲一件更有趣的事:如果一篇论文已经发表了,我们能不能从它公开的数字里,反推出它是不是被挑选过的?
答案是能,而且往往只需要小学算术。
这门手艺叫统计法证(Statistical Forensics),它的全部威力建立在一个人性事实上:
人类大脑极度不擅长模拟真正的随机性,也算不清底层的数学约束。
操纵者能在宏观上凑出漂亮的显著性,却必然在微观的算术粒度、分布形态与方差结构上留下无法自洽的指纹。
5.1 p-curve:分布形状不会撒谎
这是针对"挑选"而非"造假"最直接的武器,由 Simonsohn、Nelson 与 Simmons(学术打假团队 Data Colada)提出。
数学基础很简单,但推论很强。
在零假设下, 值服从 。这是 值的定义决定的:,而任何连续随机变量经自身分布函数变换后都是均匀分布。
在备择假设下,情况完全不同。对于单调似然比族(正态、 分布等都属于), 值的密度函数是严格递减的,而且效应越强、样本量越大,密度越向 集中。
于是有了判据:
- 真效应存在 → 值分布右偏(right-skewed),即 的研究数量应当压倒性地多于 的数量。
- 效应不存在但被 p-hack 出来 → 研究者的停止规则 决定了报告值紧贴门槛左侧,分布在 处异常堆积,整条曲线呈左偏或平坦。
把一个研究领域全部已发表论文的 值汇总画出来,曲线的形状就把这个领域的底裤掀了。
实战:权势姿势
2010 年,哈佛商学院的 Amy Cuddy 等人在《心理科学》发表论文,称保持几分钟昂首挺胸的"高权力姿势"(叉腰挺胸)就能降低皮质醇、提升睾酮,让人更敢冒险。这个结论登上 TED 演讲,播放量数千万。
Data Colada 调取了整个"权势姿势"领域的 值并绘制 p-curve。结果:整条曲线在接近 处突兀翘起,是典型的假阳性分布形态,没有任何证据价值(No Evidential Value)。
在这个纯粹由分布形状构成的证据面前,该论文的第一作者 Dana Carney 发表公开信反水,承认当年为了发表做了大量 p-hacking 操作,并声明"我不再相信权势姿势效应是真的"。
值得注意的是:这里没有任何人伪造数据。每一个实验都真做了,每一个数字都是真测的。被抓住的是流程——正如第三节所说的那样。
5.2 GRIM:除法能不能除尽
GRIM(Granularity-Related Inconsistency of Means,均值粒度不一致测试)由 Nicholas Brown 与 James Heathers 于 2016 年提出。它的原理是模算术,小学水平。
如果一组数据是 个受试者给出的离散整数评分(比如李克特 5 点或 7 点量表),那么总和
必然是整数。因此报告的样本均值 必须满足
也就是说, 只能取 的整数倍。
举例:,可能的均值只有 的倍数——、、……如果论文报告均值为 ,那么 ,在整数评分的前提下,这个数在数学上根本不可能存在。
这个检验的威力来自一个简单的计数。当均值按惯例保留两位小数时,区间内共有 种小数可能,而合法的只有 种(当 )。所以随手编一个均值,不可能的概率是 。 时, 的编造值会当场露馅。
实战:康奈尔的"饮食行为学教父"
Brian Wansink 曾是康奈尔大学食品与品牌实验室主任,以"无底汤碗实验"(证明碗大导致吃得多)和吃披萨心理学名噪一时,甚至参与起草美国饮食指南。
2016 年底,他在自己的博客上炫耀团队如何从一组"毫无显著结果"的披萨自助餐数据里,通过反复切分变量硬榨出 5 篇论文。这篇博客等于自己交代了流程。
数据法证研究者随即对他已发表的论文做普查——只用 GRIM 这一个工具,就发现其中充斥着大面积的"不可能均值"和自由度矛盾。2018 年,康奈尔大学认定其存在学术不端,Wansink 辞职,累计撤稿超过 18 篇。
5.3 Carlisle 方法:编造的随机性太整齐
英国麻醉学家 John Carlisle 想到了一个更狠的角度:审查随机对照试验的基线数据。
在真正的双盲随机分组中,实验组与对照组在受试前的人口统计学特征(年龄、身高、体重、基础血压)应当服从真实的随机扰动——两组会有差异,只是差异不显著。
但造假者为了"证明"两组匹配良好,会本能地把各组均值和标准差编得过于平衡。Carlisle 把一项研究的所有基线变量的检验统计量合并,计算这组数据在真实随机抽样下同时出现的联合概率。
实战:183 篇撤稿
日本麻醉学家藤井孝隆在 1991 至 2011 年间发表了数百篇关于术后止吐药疗效的论文。Carlisle 调取其中 168 篇涉及随机试验的论文,对全部基线指标做蒙特卡洛模拟检验。
结果:这些论文中多组患者的体重、年龄分布相似度高得离谱,其在自然随机抽样下出现的联合概率小于 。
调查委员会随后确认其长达二十年的临床数据几乎全部是在办公室里编的。最终 183 篇论文被撤稿,至今是单人撤稿量的世界纪录。
5.4 死三文鱼:把 Bonferroni 的必要性演示给全世界看
2009 年,神经科学家 Craig Bennett 团队做了一件事:把一条已经死亡的大西洋三文鱼放进功能磁共振成像仪,向它展示人类在社交场景中的照片,并要求它"判断照片中人物的情绪"。
fMRI 把大脑切分为约 个体素,每个体素独立做一次检验。在 的单次门槛下:
期望有 个体素纯粹因为机器热噪声而"显著激活"。
实测结果:死鱼的脑部亮起了数个"极其显著"的神经激活区。
这条鱼以最讽刺的方式向全科学界证明:只要测试的变量足够多,纯粹的随机噪声也能伪造出"死鱼具有共情能力"的假象。该研究直接迫使顶级神经科学期刊强制要求对成像数据做多重校正。它拿了 2012 年的搞笑诺贝尔奖(Ig Nobel Prize)。
5.5 RANDBETWEEN 与两种字体
最后一个案例,是本文的所有线索最锋利的一次交汇。
2012 年,《美国科学院院刊》(PNAS)发表了一篇里程碑式论文,作者之一是行为经济学畅销书《怪诞行为学》的作者 Dan Ariely。结论是:如果让车主在填写车险里程申报表时在表格最上方先签字承诺诚实,他们申报的里程数会比在最下方签字时多出数千英里——意即,先签字减少了作弊。
2021 年,Data Colada 复核了该论文公开的原始数据:
第一,分布形态不对。 真实的汽车年行驶里程必然是长尾的——大部分集中在一两万英里,少数极高。而该数据集从 到 英里的频数呈现出一条近乎完美的水平矩形。只有一种东西长这样:在 Excel 里运行 =RANDBETWEEN(0, 50000)。
第二,字体不对。 数据表格中有一半行使用 Calibri 字体,另一半使用 Cambria 字体,且存在大量成对出现的整数差值匹配——这是复制粘贴后批量改数留下的痕迹。
论文被撤稿。
这个案例的黑色幽默在于它的自指
一篇论证"如何通过签字让人变得诚实"的顶刊论文,其数据完全是编的。
更值得玩味的是造假手段的粗糙:外行总以为学术造假是隐蔽精密的智商博弈,现实中绝大多数翻车现场,纯粹是因为人类大脑对"真正的随机性"一无所知。
骗子为了让数据"看起来真实",本能地会去抚平波动、消除离群点、把均值编得四平八稳。而真随机恰恰充满结块、尖峰和不合理的巧合。
于是精心构筑的宏大理论,最后不是被什么高深的对照实验推翻,而是被"除法能不能除尽"和"字体不一样"这种小学生级别的破绽直接掀了底裤。
这一节的五个案例里,只有后三个是造假。前两个(权势姿势、Wansink 的大部分论文)是挑选——每一个数据点都是真的。
而挑选比造假难对付得多。造假有物证:不可能的均值、错误的字体、均匀的分布。挑选没有物证,它唯一的痕迹是分布的形状,而且必须汇总整个领域才看得出来。
单篇论文是看不出燕说的。因为在单篇论文里,燕说和真理长得一模一样。
六、量化金融的版本:因子动物园与夏普比率的折价
现在把前五节的所有东西落到一个具体的标的上。
金融市场为多重检验提供了人类历史上最理想的温床:数据是公开的、免费的、高频的,收益的信噪比极低,而奖励极高。全世界成千上万个量化团队在同一组历史价格上各自测试不同的指标——这本质上就是一个分布式的"一亿只猴子"网络,只不过每只猴子都以为自己是唯一在敲键盘的那只。
6.1 是怎么来的
2016 年,Campbell Harvey、Yan Liu 与 Heqing Zhu 发表了《…and the Cross-Section of Expected Returns》,系统清点了金融学术界公开发表过的超额收益因子。
他们数出了三百多个。这就是所谓的因子动物园(Factor Zoo)。
他们的论证不是靠直觉,而是把本文第四节的工具直接搬了过来:对这三百多个因子的 统计量做多重检验校正,分别用 Bonferroni、BH 和 BY 三种方法。三条路径给出了大致一致的结论:
传统金融学要求的 在海量挖掘面前完全失效。真正的门槛应当提高到 。
从 到 ,是把显著性要求从 收紧到 。
现在请回到第一节末尾那张极值统计表:
而 Harvey、Liu 与 Zhu 清点出的因子数量,是三百多个。
两条完全独立的推理路径——一条走多重检验校正,一条走 Gumbel 极值分布——收敛到了同一个数。 这不是巧合,它们本来就在描述同一件事:把门槛设在"纯噪声情形下冠军的期望位置"上,恰好就是让期望假发现数降到 附近。
但这个漂亮的吻合,同时也暴露了 的根本局限。
它校正的 是"已发表的因子数"。那些被测试过、不显著、因此从未被写成论文的因子有多少?没有人知道。发表偏倚保证了我们永远只能看到分子,看不到分母。
真实的 是三百多,还是三十万?如果是后者,查表可知门槛应该是 。
6.2 Deflated Sharpe Ratio:给夏普比率打折
Bailey 与 López de Prado 在 2014 年提出了一个更直接的工具:既然多重检验会系统性地抬高观测到的最优表现,那就把这个抬高量算出来,从夏普比率里减掉。
第一步:算出零信号基准线。
假设你做了 次独立的回测试验,这些试验的夏普比率在零信号假设下服从 ,其中 是试验之间夏普比率的方差。那么 次试验中最大夏普的期望,由第一节的 Gumbel 逼近给出:
其中 是 Euler-Mascheroni 常数, 是标准正态分位函数。
这个 的含义非常具体:它是你在完全没有任何信号的情况下,本来就应该看到的那个夏普比率。 它是基准线,不是成绩。
代几个数。取 ——这是一个相当常见的水平:一批回测的年化夏普散落在 附近,标准差半个单位。
| 回测次数 | 零信号下的期望最大夏普 |
|---|---|
跑了一千次回测,挑出一个年化夏普 的策略。
大多数研究员看到 会相当兴奋——这是可以拿去路演的数字。而上表说的是:在完全没有信号的情况下,它本来就该长这样。 你的成绩恰好等于噪声的基准线,超额贡献为零。
第二步:与观测值做检验。
光有基准线不够,还要知道观测到的 本身有多大的不确定性。夏普比率的估计量标准误不是简单的 ——收益分布的偏度和峰度会显著改变它。Lo(2002)与 Mertens(2002)给出的修正式是:
其中 是收益序列的偏度, 是峰度, 是观测期数。
两步合起来,折价夏普比率(Deflated Sharpe Ratio)就是:
读法:DSR 是"这个策略的真实夏普比率大于零"的概率。 才算通过。
负偏度策略的夏普最不可信
盯住分母里的两项:
这一项说明,负偏度会放大标准误。卖期权、carry trade、做空波动率——这类"平时稳定赚小钱、偶尔亏一大笔"的策略,偏度显著为负。
这一项说明,尖峰厚尾同样放大标准误,而且是对 的平方起作用——夏普越高,这一项的惩罚越重。
合起来是一句对量化从业者相当不友好的话:回测里夏普最漂亮的那类策略,恰恰是它们的夏普最不可信的那类。
因为负偏加尖峰这个组合,正是"把尾部风险藏在样本外"的收益特征。关于这类收益结构的不对称性,我在〈只取一瓢〉与〈空穴来风〉里分别从对冲和偏斜的角度讨论过。
6.3 DSR 的阿喀琉斯之踵
DSR 有一个被低估的优点:公式里的 是可测的。你不需要知道全世界跑了多少回测,只需要拿自己那批回测的夏普比率算个样本标准差。
但它有一个致命的依赖: 必须由你自己诚实申报。
而这恰恰是第二节和第三节的全部内容。你不知道自己的 ,因为参数网格是乘出来的;你还会系统性地低估它,因为分叉小径上那些"本来可能走"的路径不在你的记忆里。而 一旦报小, 就压低了,DSR 就虚高了。
于是这个工具形成了一个闭环:它能把多重检验的代价算得很精确,前提是你先诚实地面对多重检验。
这不是技术问题。这是第七节的问题。
6.4 样本外不是免费的
最后说一个几乎所有人都在用、但几乎所有人都用错了的解药。
标准做法是把数据切成两半:样本内开发,样本外验证。逻辑无懈可击——样本外的数据从未参与挖掘,所以它上面的表现是干净的。
第一次确实如此。
问题出在第二次。策略在样本外失效了,研究员回去改参数,再测一次。又失效了,再改,再测。
测到第三次的时候,样本外已经变成样本内了。 因为这时候的策略选择,已经是样本外表现的函数了。第二节那条判据在这里同样成立:判据不是"这批数据参与了几次拟合",而是"如果这批数据长得不同,你会不会做不同的事"。
金融时间序列还有一层额外的麻烦。如果标签是重叠的(比如用未来三日收益做标签),训练集末尾与测试集开头在信息上是连通的,简单的 K 折交叉验证会直接泄漏。López de Prado 提出的 Purged K-Fold 与组合净化交叉验证(CPCV),通过剔除重叠区(purging)与设置禁运期(embargo)来堵这个洞。
但必须说清楚:这些方法解决的是信息泄漏,不是多重检验。
在一个净化得完美无缺的 CPCV 框架里试一千个策略,你的 依然是一千,冠军的期望夏普依然是 。泄漏和过拟合是两种病,CPCV 治的是前一种。
七、制度性解药:把解释权交出去
如果问题的根源是"分析流程依赖于看到的数据",那么所有真正有效的解药都只有一种共同形式:在看到数据之前,把决定权交出去。
这不是数学问题,是制度设计问题。现代科学在过去二十年里立起了三道闸门。
7.1 预注册:把 锁死为 1
临床试验的法定红线。 在 FDA 监管的药物试验中,所有数据收集前必须在 ClinicalTrials.gov 备案,并在数据揭盲前锁定一份不可篡改的统计分析计划(Statistical Analysis Plan, SAP)。SAP 细致到必须写明:用什么模型、缺失值如何插补、离群点的判定标准、主要终点与次要终点分别是什么。
任何事后更改模型的行为,在药审中会被一票否决,或者结果只能被降级标注为"探索性发现"。
它在数学上做的事非常干净:把有效 强制锁定为 。 分析路径一旦在看到数据之前就被冻结,分叉小径的花园就不存在了, 值重新变回那个我们熟悉的、零假设下服从 的东西。
学术界的注册报告(Registered Reports)。 越来越多期刊推行这种出版模式:研究者在做实验前提交"假设 + 设计 + 预定的分析代码",评审只审方案。方案严谨就发放原则性录用(In-Principle Acceptance)。此后无论最终 值是 还是 ,期刊都必须发表。
这一刀砍掉的是整条因果链的源头:既然阴性结果也保证发表,研究者就再没有动机去微调模型。
量化版本:研究日志。 把每一次回测——包括失败的、中途放弃的、"只是试试看"的——写进一份带时间戳、不可回溯修改的日志。
这件事的全部价值,就是让你知道自己的 。而知道了 ,6.2 节那个公式才有意义。
7.2 盲态分析:从物理上切断反馈
这个手段源于高能物理,近年正在渗透进演化生物学与精准医学。
做法是:拿到原始数据后,由第三方独立程序对数据注入掩码——在真实数值上加一个未知的平移常数,或者把组别标签打乱。分析人员面对的是带伪装的数据,在这种状态下开发、比较并敲定最终的分析流程与质控标准。
当且仅当整套代码被完全写死、封存之后,第三方才揭盲,运行代码输出最终结果。
它比预注册更彻底:预注册靠承诺约束,盲态分析靠物理隔离。它从机制上杜绝了"目测中间结果再微调手法"的可能,因为中间结果是假的。
量化版本同样可行:在合成数据、或加了未知偏移的收益序列上开发策略框架,框架定稿后才接真实数据。
7.3 规范曲线:不选了,全都跑一遍
前两道闸门都要求你事先做对。如果数据已经收集完毕、无法重做实验呢?
Simonsohn 等人提出的多宇宙分析(Multiverse Analysis)与规范曲线分析(Specification Curve Analysis)给出了第三条路:与其争论哪种清洗、变换和模型是"唯一正确"的,不如把所有理论上讲得通的路径全部执行一遍,然后看结论在所有平行宇宙中的整体分布形态。
流程分三步:
一、定义决策网格。 明确列出所有有理论依据的选项。比如离群点处理 种、变量变换 种、协变量组合 种、拟合算法 种,共 个平行宇宙。
二、批量并行拟合。 遍历所有组合,记录每个宇宙的效应量 、标准误与 值。
三、联合推断。 关键在这一步——不对单个宇宙做检验,而是把因变量标签随机打乱,生成"无效应"的原假设多宇宙,用置换检验判断实际观测到的这条规范曲线(在"显著宇宙占比"或"中位数效应量"这类统计量上)是否显著偏离纯噪声分布。
读图逻辑:双面板。
标准的规范曲线图由严格上下垂直对齐的两个面板组成:
上半区(曲线面板):横轴是模型序号,按估计出的效应量升序排列;纵轴是效应量本身。每个点带 置信区间的误差棒,虚线标出零效应参考线,显著与不显著用颜色区分。
下半区(决策矩阵):纵轴列出所有可选的具体决策项,横轴与上半区逐列一一对应。在启用的选项上打点。每一竖列的打点组合,就是上方那个估计值的完整来历。
判别方法:
| 视觉特征 | 稳健的真实效应 | 被挑选出的脆弱效应 |
|---|---|---|
| 曲线形态 | 绝大部分平稳运行在零线同一侧,中位数明显偏离零 | 在零线两侧大幅摆动,多数区间横跨零 |
| 显著点分布 | 绝大多数散点显著 | 仅在最左端或最右端翘起极少数 |
| 下半区矩阵 | 显著点在各决策项上均匀散布 | 显著点高度聚集在某一两个特定选项下 |
最后那一行是全图的精华。如果所有显著的宇宙都必须同时满足"用 CLR 变换"且"控制某个特定协变量",一换成别的方法效应立刻归零——那么被发现的不是生理机制,而是某个特定数学变换的数值伪影。
一个微生物组的例子。 某研究想知道双歧杆菌属的相对丰度是否显著降低小鼠血清 IL-6 水平。多宇宙是:序列处理 种(OTU 聚类 vs. DADA2 的 ASV)、归一化 种(抽平 / TSS / CLR)、协变量 种方案、统计模型 种(DESeq2 / ANCOM-BC / OLS),共 个宇宙。
传统论文会这样写:采用"DADA2 + CLR + 全协变量 + ANCOM-BC",得到 ,,结论是该菌属对炎症因子有显著抑制作用。
规范曲线揭示的却是: 个宇宙里只有 个 (占比 ,接近纯随机水平 );其余 个的置信区间全部跨零,中位数效应量只有 ;而那 个显著的宇宙全部依赖同一种组合——必须做 CLR 变换,且必须控制特定协变量。
量化版本是现成的。 把因子构造的所有合理选择全部展开:等权还是市值加权、月频还是周频再平衡、剔不剔微盘股、做不做行业中性、用不用滞后一期避免前视。跑完所有组合,画一条规范曲线。
如果你的因子只在其中一两个宇宙里显著——那不是因子,那是燕说。
7.4 为什么这些解药大多没被吃下去
必须诚实地说完最后这一段。
上面三道闸门在理论上是完美的,在现实中却主要只存在于监管极严的晚期临床试验,或少数有心自律的课题组里。在基础生物学、神经科学、心理学乃至经济学的广大实证研究中,"挑选"依然是维持学术生产力运转的隐性常态。
原因不复杂,是激励结构。
发表偏倚。 顶级期刊几乎只接受"反直觉的、突破性的、显著为正"的故事。没有哪家期刊会发表一篇题为《经过三年实验,我们发现该分子对细胞凋亡没有任何影响》的论文。
沉没成本的威逼。 一个博士生花了三年和数十万美元经费,如果最终算出 ,意味着论文发不出去、学位拿不到、基金无法结题。在这种压力下,"正当调整"几乎是必然发生的。
同行评审的系统性无能。 审稿人只看排版好的 PDF。他们看不到实验记录本,看不到被扔掉的对照组数据,更看不到研究者私下跑过的另外 个分析脚本。而复现别人的实验既无经费支持也不算工作量,没有人有精力去重做几个月的湿实验。
后果是可以被量化的。制药公司安进(Amgen)的科学家曾尝试复现 篇被奉为里程碑的肿瘤基础研究论文,成功的只有 篇,。拜耳(Bayer)做过类似的内部验证,在评估的 个潜在靶点项目中,能稳定复现的学术成果不到 。
工业界研发人员因此有一条公认的潜规则:绝不能完全相信学术界的公开论文,推进管线前必须在自己实验室重新盲测。
这条潜规则在量化行业有一个一模一样的翻版:不要相信任何一篇声称发现了新 Alpha 因子的论文,也不要相信任何一份夏普比率漂亮的回测报告——包括你自己昨天跑出来的那一份。
结语 · 治则治矣,非书意也
回到郢人那封信。
韩非这则寓言最精妙的地方,不在于讥讽燕相国愚蠢——恰恰相反,燕相国是个聪明人,他的解读链条完整、优美,完全可以写成一篇论文。寓言真正的杀伤力在最后六个字:治则治矣,非书意也。
燕国是真的大治了。
这才是全文所有内容里最难处理的那一层。如果一个过拟合选出来的因子上线就亏钱,没有人会上当,这个问题早就自行消失了。真正的困难在于,它常常先赚一段——足够长到让你为它写好机制解释,足够长到让你敢加杠杆,然后才在某一天毫无征兆地归零。
而"举烛"这两个字之所以能被读出"举贤而任之",不是因为燕相国蠢。是因为这两个字本身承载不了任何信息,所以它能承载任何解释。
这是噪声的根本性质:它的问题不是它说了错的话,而是它什么都没说。于是留下的那片空白,被我们自己想说的话填满了。搜索空间越大,可供填充的空白越多;解释能力越强,填得越快、也越像真的。
一亿只猴子在键盘上乱敲,其中一只碰巧打出了"To be or not to be"。整个学术界迅速给这只猴子套上燕尾服,请它登上领奖台,而猴子极其庄重地在论文里阐述自己当初创作这句诗时的文学构思与哲学思考。
没有人想当骗子。大家只是都在维护一场谁都不愿戳破的体面仪式。
所以本文的全部内容,其实可以压缩成一个问题——在你动笔为一个漂亮的结果写下机制解释之前,必须先回答它:
你试了多少次?
如果答不上来,那么无论那个 值多小、夏普比率多漂亮、机制讲得多顺——
治则治矣,非书意也。