5D Library › 概率判断、布莱尔分数校准与群体智慧的统计理论 · English
第五章 参考类别预测与计划谬误
内部视角与外部视角
卡尼曼后来常讲一个故事:他和几位同事编写一本教科书,一年后讨论还需要多久完成,大家的估计都在一年半到两年半之间。他又问其中一位经验丰富的课程专家:类似的团队,从这个阶段开始,通常要多久?这位专家想了一会儿说:据他所知,大约四成团队根本没有完成,完成了的也几乎都用了七到十年。这本书最终用了八年 (Kahneman and Lovallo 1993)。
这个故事所区分的两种预测方式,在卡尼曼与特沃斯基 1979 年的论文中第一次被系统地表述 (Kahneman and Tversky 1979)。内部视角从这个项目本身出发:我们的计划、我们的能力、我们能想到的障碍。外部视角则先问:这个项目属于哪一类,这一类项目的结果通常是怎样分布的?他们把人们系统地低估完成时间、成本与风险,同时高估收益的倾向称为计划谬误,并提出了一套纠正程序:选定参考类别,估计这一类结果的分布,做出直觉的估计,评估自己对个案的预测能力有多强,再据此把直觉估计向参考类别的平均值回拉 (Kahneman and Tversky 1979)。
证据
毕业论文要写多久。 布勒、格里芬与罗斯请 37 名心理学专业的高年级学生估计完成荣誉论文所需的时间。平均估计为 33.9 天;「一切顺利」时的估计为 27.4 天,「一切都不顺」时为 48.6 天。实际平均用了 55.5 天,只有约 30% 的人在自己估计的时间内完成——比「最坏情况」的估计还要长一个星期 (Buehler, Griffin, and Ross 1994)。他们的其他研究发现,人们在估计时几乎只想着未来的计划,很少回顾自己过去类似任务用了多久;即使想到过去的延误,也倾向于把它归为特殊情况。
证据
高管与投资。 卡尼曼与洛瓦洛认为,组织中的决策者常常同时犯两种看似相反的错误:在单个决策上胆怯(厌恶损失、孤立地看每一个选择),在预测上却大胆(采用内部视角、过分乐观)(Kahneman and Lovallo 1993)。他们在《哈佛商业评论》上的文章把这种「成功的妄想」归于乐观偏差、锚定与组织压力,并建议在重大投资决策中系统地使用参考类别预测 (Lovallo and Kahneman 2003)。
交通基建:近九成超支
「几乎所有项目都超时超支」是一种常见的说法。实际的数据更有用,因为它告诉我们超支的频率和幅度。
证据
258 个交通项目。 弗吕夫布约格、霍尔姆与布尔汇集了 20 个国家、五大洲、跨越约 70 年的 258 个交通基建项目的成本数据(按不变价格计算)。近十分之九(86%)的项目成本超支;平均超支幅度因类别而异:铁路 44.7%(58 个项目,标准差 38.4 个百分点),桥梁与隧道 33.8%(33 个),道路 20.4%(167 个)。超支在所有国家都存在,并且在 70 年中没有减少的迹象 (Flyvbjerg, Holm, and Buhl 2002)。
弗吕夫布约格认为,这种系统性的偏差有两种互补的来源:一是无意的乐观偏差,二是为了在竞争中获得批准与资金而有意的策略性误报——低报成本、高报收益 (Flyvbjerg, Holm, and Buhl 2002; Flyvbjerg 2006)。参考类别预测针对的是前一种;对后一种,需要独立评审与问责等制度手段。
证据
参考类别预测的第一次应用。 2004 年,英国交通部依据弗吕夫布约格等人的数据,为大型交通项目规定了按类别的「乐观偏差上调」:如果只愿意承担 20% 的超支风险,道路项目的预算应在原估计上上调 32%,铁路 57%,固定连接(桥梁与隧道)55%。2004 年 10 月,爱丁堡有轨电车 2 号线的评估第一次用到这些上调值 (Flyvbjerg 2006)。
推导
用一个合成的参考类别演示这一方法。以铁路项目平均超支 44.7%、标准差 38.4 个百分点为依据,从对数正态分布中抽取 2,000 个「过去的项目」。对数正态的形状是作者的假设,不是弗吕夫布约格的数据:真实的参考类别尾部更重,也有少数项目低于预算。内部视角的预算为 100(任意货币单位),假定团队认为它是准确的。
推导
# Synthetic reference class: 2,000 lognormal overrun ratios with the rail mean 44.7 %
# and SD 38.4 points of Flyvbjerg et al. (2002). The lognormal shape is an assumption,
# not their data.
import math, random
rng = random.Random(2002)
MEAN, SD = 1.447, 0.384
S2 = math.log(1 + (SD / MEAN) ** 2)
MU, SIG = math.log(MEAN) - S2 / 2, math.sqrt(S2)
def sample(n=2000):
return sorted(math.exp(rng.gauss(MU, SIG)) for _ in range(n))
def quantile(xs, q):
i = q * (len(xs) - 1)
lo = int(i)
return xs[lo] + (xs[min(lo + 1, len(xs) - 1)] - xs[lo]) * (i - lo)
if __name__ == "__main__":
xs = sample()
print(f"lognormal mu = {MU:.4f}, sigma = {SIG:.4f}; synthetic class mean overrun "
f"{sum(xs) / len(xs) - 1:.1%}")
over = sum(x > 1 for x in xs)
print(f"synthetic projects over budget: {over} of {len(xs)}")
est = 100.0
med = est * quantile(xs, 0.5)
print(f"inside-view budget {est:.0f}; outside-view median outcome {med:.1f}")
print(" accept risk of overrun | budget needed | uplift")
for risk in (0.50, 0.30, 0.20, 0.10):
b = est * quantile(xs, 1 - risk)
print(f" {risk:.0%} | {b:6.1f} | {b / est - 1:+.0%}")
# lognormal mu = 0.3355, sigma = 0.2609; synthetic class mean overrun 45.2%
# synthetic projects over budget: 1809 of 2000
# inside-view budget 100; outside-view median outcome 140.0
# accept risk of overrun | budget needed | uplift
# 50% | 140.0 | +40%
# 30% | 162.3 | +62%
# 20% | 175.5 | +75%
# 10% | 195.9 | +96%在这个合成的参考类别中,2,000 个项目里有 1,809 个超支,约 90%,略高于弗吕夫布约格全部 258 个项目中的 86%;两者接近只是因为对数正态分布在这一均值与标准差下恰好如此,不是对真实数据的检验。如果团队愿意承担 50% 的超支风险,预算需要上调 40%;只愿意承担 20% 的风险,需要上调 75%;10% 的风险,需要上调 96%。弗吕夫布约格在论文中给出的英国铁路例子是:50% 风险上调 40%,10% 风险上调 68% (Flyvbjerg 2006)。50% 处的数字与本模型一致,10% 处相差很大:这正说明,上调值应当来自真实参考类别的经验分布,而不是一个假设的分布形状。
把自己的经验与同类的历史合在一起
外部视角并不要求完全忽视个案。一个团队过去确实比同行做得更好,这个信息是有用的;问题在于,几次项目的记录充满了运气。统计学中有一个成熟的工具处理这个问题:经验贝叶斯收缩。它把每个团队自己的平均记录,按其可信程度向全体的平均值回拉;记录越少、噪声越大,回拉越多 (Efron and Morris 1977)。这与卡尼曼与特沃斯基纠正程序中的「向参考类别平均值回拉」是同一个思想。
推导
12 个团队,各自真实的「典型超支」 服从 ;每个完成的项目在此基础上有标准差 30 个百分点的随机波动;团队过去完成了 2 到 8 个项目。比较三种估计:只看本团队的平均;只看所有团队的平均(参考类别);以及经验贝叶斯收缩,权重 由数据估计。参数是示意性的,重复 5,000 次。
推导
# Empirical-Bayes shrinkage of 12 teams' own overrun records towards the reference
# class. theta_i ~ N(40, 10^2); project noise SD 30; n_i = 2..8 past projects; sigma
# known, mu and tau^2 by method of moments; B_i = (s^2/n_i) / (s^2/n_i + tau^2). 5,000
# replications.
import random
rng = random.Random(1975)
MU, TAU, SIG = 40.0, 10.0, 30.0
NS = (2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8)
def one_rep():
th = [rng.gauss(MU, TAU) for _ in NS]
yb = [t + rng.gauss(0, SIG / n ** 0.5) for t, n in zip(th, NS)]
v = [SIG ** 2 / n for n in NS]
w = [1 / vi for vi in v]
mu_hat = sum(wi * y for wi, y in zip(w, yb)) / sum(w)
k = len(NS)
tau2 = max(0.0, sum((y - mu_hat) ** 2 for y in yb) / (k - 1) - sum(v) / k)
shr = [(vi / (vi + tau2)) * mu_hat + (tau2 / (vi + tau2)) * y for vi, y in zip(v, yb)]
se = lambda est: sum((e - t) ** 2 for e, t in zip(est, th)) / k
return se(yb), se([mu_hat] * k), se(shr), [vi / (vi + tau2) for vi in v]
if __name__ == "__main__":
reps = 5000
tot = [0.0, 0.0, 0.0]
bsum = [0.0] * len(NS)
for _ in range(reps):
a, b, c, B = one_rep()
tot = [tot[0] + a, tot[1] + b, tot[2] + c]
bsum = [x + y for x, y in zip(bsum, B)]
print("mean squared error of each team's estimate (percentage points squared):")
names = ("own record only", "reference-class mean", "empirical-Bayes shrinkage")
for name, val in zip(names, tot):
print(f" {name:26s} {val / reps:7.1f}")
print("average weight on the reference class, B_i, by number of past projects:")
cells = [f"n={n}: {bsum[i] / reps:.2f}" for i, n in enumerate(NS) if i % 2 == 0]
print(" " + " ".join(cells))
# mean squared error of each team's estimate (percentage points squared):
# own record only 234.5
# reference-class mean 109.3
# empirical-Bayes shrinkage 94.9
# average weight on the reference class, B_i, by number of past projects:
# n=2: 0.83 n=3: 0.78 n=4: 0.74 n=5: 0.70 n=6: 0.68 n=8: 0.63只看自己的记录,均方误差为 234.5;只看参考类别平均,降到 109.3;收缩估计最好,为 94.9。只有 2 个项目记录的团队,收缩估计把约 83% 的权重放在参考类别上;有 8 个项目记录的团队,这一权重降到约 63%,但仍然超过一半。在这组参数下,团队之间的真实差异(标准差 10 个百分点)远小于单个项目的随机波动(30 个百分点),所以外部视角应当占主导。如果团队之间的真实差异很大,或者记录很长,权重就会更多地落在团队自己身上;收缩估计会根据数据自动做出这一取舍。
假说 · 尚未验证
作者的假说(尚未确立): 个人对自己日常任务的时间估计(例如写一份报告、搬一次家),如果先写下自己过去 5 次同类任务的实际用时并取其中位数作锚,再做调整,误差会比直接估计小。如果在随机对照的日记研究中,这一步骤不能减少实际用时与估计之比的偏离,或者只是让人把估计普遍放大、而不改善对个别任务的区分,这个假说就是错的。
本章小结
计划谬误是人们采用内部视角、系统地低估时间与成本的倾向;学生写论文的实际用时比「最坏情况」的估计还长。258 个交通项目中近九成(86%)成本超支,平均幅度铁路 44.7%、桥梁与隧道 33.8%、道路 20.4%,超支的来源既有乐观偏差,也有策略性误报。参考类别预测先找同类项目的结果分布,再定位个案;合成模型显示,上调值取决于愿意承担的风险,并且应当来自真实的经验分布。经验贝叶斯收缩把团队自己的记录按可信程度与参考类别合并,在记录少、波动大时明显优于只看自己。下一章从个人转向群体。
参考文献
Fan, Y. (2026). Probabilistic Judgement, Brier-Score Calibration and the Statistics of Collective Intelligence: From Base-Rate Neglect and Signal Detection Theory to Superforecasting, Read Beside Classical Chinese Strategic Calculation [概率判断、布莱尔分数校准与群体智慧的统计理论] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23764998 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).