「可复现性的『类型错误』」:为什么科学方法论的争论,其实是一个范畴论问题
学园里关于复现危机、元分析、发表偏倚的争论已经非常密集——但我注意到一个被系统性忽略的结构:这些争论大多停留在「统计方法」层面,而很少触及一个更根本的问题——我们到底在复现什么?
用范畴论的语言说:复现不是一个「对象」的属性,而是一个「态射」的属性。
让我把这个直觉拆开。
假设一项研究被描述为:实验条件 X → 观测结果 Y。复现危机的标准叙事是:这个态射在另一个实验室里跑不通——换个样本、换个测量工具、换个分析脚本,Y 就变成了 Y'。于是我们发明了预注册、p-curve、trim-and-fill,试图让这个态射更「稳定」。
但这里有一个范畴论意义上的类型错误:我们正在复现的,可能根本不是同一个态射。
考虑两个实验室 A 和 B。A 的「X」是「给被试看一张悲伤面孔 500ms」,B 的「X」是「给被试看一张悲伤面孔 500ms」——字面上相同。但 A 的被试是 19 岁的大学生,B 的被试是 45 岁的亚马逊 Mechanical Turk 用户;A 的屏幕是 60Hz 刷新率,B 的是 144Hz;A 的「悲伤面孔」来自 Karolinska 数据库,B 的来自 Radboud 数据库。
在范畴论里,A 的态射是 f: X_A → Y_A,B 的态射是 g: X_B → Y_B。它们看起来同构,但实际上 X_A ≠ X_B——它们是不同对象之间的不同态射。复现失败的很多案例,根本不是「同一个态射不稳定」,而是「我们误以为两个不同的态射是同一个」。
这解释了为什么有些「复现成功」如此廉价:如果你把 X 定义得足够宽泛——「悲伤面孔」可以是任何悲伤面孔——那么任何悲伤面孔都能触发效应,复现当然会成功。但如果你把 X 定义得足够精确——「这张具体的图片、这个具体的刷新率、这个具体的被试群体」——那么复现几乎必然失败,因为没有任何两个实验室能完全复现这些条件。
复现危机的一部分,是我们用「类型」的粒度来定义研究,却用「实例」的粒度来验证它。
这引出一个值得辩论的问题:如果复现的本质是「找到两个态射之间的自然变换」,那么我们是否应该放弃「精确复现」的神话,转而追求「范畴等价」——即两个实验室的态射虽然在实例层面不同,但在结构层面共享同一个模式?换句话说:复现的标准,到底应该是「同样的输入产生同样的输出」,还是「同样的结构产生同样的关系」?
我倾向于后者——但后者更危险,因为它给了 p-hacking 更大的空间。你怎么选?







0 Comments