TOPIC 19 · PHASE C

幂律与重尾POWER LAWS AND HEAVY TAILS

「平均」在这里是个陷阱(When the average is a trap)

2026-08-05 · 自组织与临界

你可以算一个国家的平均身高,也可以算一次地震释放的平均能量。前一个数字有意义。后一个不但没意义,而且在数学上根本不存在——不是因为数据不够,是因为它不存在。

你在做一件很正常的事:估个平均数。一本书平均能卖多少册、一次停电平均影响多少户、一个新用户平均带来多少收入。把历史数据拉出来一除,得到一个数,拿它去做计划。

对身高、体重、每天通勤时间这类东西,这个动作完全没问题。对上面那三个,它会把你带沟里,而且是那种越努力越错的沟:你多收集一年数据,那个数不但不会更稳,还可能整个翻一倍。再收一年,它可能又变回去。

问题不在样本量。问题在于"求个平均"这个动作偷偷假设了一件从来没人跟你说过的事——典型值这个东西存在。有一大类系统里它不存在,而这类系统恰好包括了你最想预测的那些:崩盘、爆红、事故、疫情、暴富。

本站讲临界的几期各有各的问法:第 16 期问临界点上为什么细节不重要,第 17 期问连通性怎么会突然贯通,第 18 期问那个临界点是被谁调到的。本期不问机制,问产物——这些系统吐出来的那条统计规律本身长什么样,以及它取消了你哪几个惯用动作。

01一百个人,同样的总量(One Hundred Draws, the Same Total)

先看一眼东西长什么样,再谈它叫什么。

下面是两组数,每组 100 个,总和完全相同。你可以把它想成同一笔钱的两种分法、同样一堆流量的两种落点、同样多的读者两种分布方式。两组都按从大到小排好队画成柱子,纵轴刻度也一样。

两组各 100 个数 · 总和相同 · 同一纵轴 正态分布(身高型) 幂律分布(销量型) 均值 最大的一个 = 均值的 1.6 倍 53 个低于均值 最大的一个 = 均值的 12 倍 71 个低于均值 · 前 10 名拿走 44%
同样多的东西、同样的总量,两种分法。右边那根顶天的柱子不是异常值,它是这个分布正常运转的样子。

左边这组,"平均值 6.7"是一句有内容的话:绝大多数柱子都在它附近,最高的那根也就是它的 1.6 倍。你告诉别人平均值,对方脑子里浮现的图基本是对的。

右边这组,同一句话几乎不传递任何信息。100 个数里有 71 个低于均值,中位数只有 3.1——连均值的一半都不到;而最高的那个是均值的 12 倍,前 10 名合起来拿走了总量的 44%。"平均 6.7"这句话没有描述任何一个具体的柱子:多数人比它低得多,少数几个比它高得多,正好落在它附近的反而最少。

右边这种形状叫幂律(power law)。它的定义可以写得很朴素:规模超过 x 的东西有多少个,正比于 x 的某个负次方。写成式子是 P(超过 x) ∝ x−β,这个 β 叫尾指数(tail index)。β 越小,尾巴越沉、越容易出巨物。→ 参考 · 幂律的识别与误判

这条式子有个立刻能用的读法:把横轴和纵轴都换成"每格乘以 10"的刻度(也就是双对数坐标),幂律就是一条直线,斜率就是 −β。而钟形的正态分布在同样的坐标下会迅速向下拐、贴到地板上:它对"超过均值 5 倍的东西"给出的预测次数基本是零。

为什么会长成两种样子,根子在生成方式。正态分布(normal distribution)来自很多小因素相加——身高是成百上千个基因和营养条件的加总,谁也不能一票定乾坤。幂律往往来自相乘传染:已经卖得好的书被更多人看见于是卖得更好,已经连上的电网节点承担更多负载于是更容易被压垮。加法把差异磨平,乘法把差异放大。

顺便处理掉一个被说滥的说法。"80/20 法则"——两成的人占八成的量——不是幂律的定义,它只是某一个特定尾指数下的推论:β ≈ 1.16 时恰好是 80/20。β 换一个值,比例就完全不同(β 更小,可能是 90/10;β 更大,可能只有 60/20)。把 80/20 当成一条普适定律去套,等于把一个参数当成了一条规律。

🎯 决策线

拿到任何一组"规模"数据(销量、故障影响面、客户价值、事故损失),第一个动作不是求均值,是按大小排序,算出最大的那 1% 占总量的百分之几。这个数超过 10%,就把均值口径从你的报表里拿掉,换成中位数加上"前 1% 占比"这两个数一起报。这一步不需要任何统计知识,五分钟能做完。

🌀 经济与制度 · 为什么统计局报的是中位数 各国统计部门公布居民收入时用的是中位数而不是平均数,正是因为收入的形状是右边那张图。顺着这条机制能推出一个不那么显然的结论:凡是以"人均"为口径设定的政策目标,在重尾的量上表达的都不是多数人的处境,而是尾部的规模。人均住房面积、人均带宽、人均藏书量都吃这个亏——指标涨了,可能只是头部又拉长了一点,中间那一大段一动没动。

EN Two samples of 100 draws with identical totals. Under a normal distribution the largest draw is 1.6× the mean and 53 fall below it; under a power law 71 fall below the mean, the median is under half the mean, and the top ten take 44% of everything. A power law says the count of items exceeding x scales as x to a negative power — a straight line on log-log axes. The "80/20 rule" is not the definition; it is what one particular exponent (β ≈ 1.16) happens to give.

02那个平均数根本不收敛(The Average That Never Settles)

上一节说"平均值不代表任何人",那还只是描述得不好。这一节说的是更硬的一件事:那个平均值你可能根本测不出来。

你大概隐约信着一条规律:数据多了就稳了。抛硬币抛一百次正面比例上下乱跳,抛一百万次就贴着 50% 不动了。这条规律叫大数定律(law of large numbers),它是几乎所有"多收集点数据"这类建议的靠山。

它有前提。而在重尾(heavy tail)的世界里,前提可能不满足。所谓重尾,就是"极端事件的概率衰减得比指数还慢"这一大类分布,幂律是其中最干净的一种。下面这张图是真的跑出来的:两组随机数各抽十万个,每抽一个就重算一次到目前为止的平均值,看它往哪儿走。纵轴是"当前平均值 ÷ 理论平均值",所以 1.0 就是收敛到位。

跑动平均值 ÷ 理论平均值 — 抽十万次 1.0 2.0 3.0 幂律 — 十万次仍未收敛 正态 — 几百次即收敛 第 21668 个样本:一个数就把均值抬到 2.9 倍 1 10 100 1000 1 万 10 万 已抽样本数(每格乘以 10)→ 橙线这组的理论均值是存在的 — 但十万个样本还没把它测出来
蓝线几百步就躺平了。橙线在两万步上被一个样本抬高了近三倍,然后花掉剩下八万步慢慢往回爬,最后停在 1.3。

请注意橙色那条线的关键细节:它不是抖动,是跳台阶。前面两万步它一直待在 0.7 附近,你要是在那儿停下,会以为自己已经测准了;然后来了一个数,一步就把整个平均值抬到 2.9 倍。这个数不是错误、不是脏数据、不需要剔除——它就是这个分布该有的样子。而这样的跳跃,往后还会有,只是越来越稀疏。

所以"多收集点数据"在这里失效得非常彻底:你的平均值不是慢慢变准,而是长期偏低,偶尔被一次跳跃修正过头。任何一次快照都不可信,而你没有办法知道自己现在处在两次跳跃之间的哪个位置。

这背后有一条很干净的数学事实,值得记住,因为它把"这个量能不能算平均"变成了一个可查的问题。对尾指数为 β 的幂律:

尾指数 β 决定哪些"常用统计量"还活着 β = 1 β = 2 均值不存在 方差不存在 均值存在 方差不存在 均值存在 方差存在 尾指数 β → 地震能量 ≈ 0.67 词频 / 城市人口 ≈ 1 财富(80/20 那个点)≈ 1.16 正态分布的身高在这条轴上没有位置 — 它的尾巴衰减得比任何幂律都快
β 落在哪一段,决定了你手上的哪些统计习惯还能用。这不是精度问题,是存在性问题。

β 大于 1,平均值才存在;β 大于 2,方差(也就是"波动幅度"这个概念)才存在。不存在的意思不是"很大",是这个积分发散、这个数字没有极限值可言——你算出来的样本均值只是一个随样本量乱走的随机数,它不在收敛到任何东西。

(这里有个约定上的坑:不少论文写的是概率密度的指数 α,两者的关系是 α = β + 1,于是同一件事在那边写成"α > 2 才有均值、α > 3 才有方差"。读到具体数字先确认对方用的是哪一套,否则会差整整 1。)

这不是数学家的玩具。地震就活在最左边那一格:古登堡-里希特定律(Gutenberg-Richter law)说震级每升 1 级、次数降到约十分之一,换算成地震释放的能量之后,尾指数大约是 2/3——小于 1。也就是说,"一次地震平均释放多少能量"这个问题,在这个模型里没有答案。现实中之所以还能算出个数,是因为地球尺寸有限、断层长度有上限,把那条尾巴硬生生截断了。你算出来的那个平均值,其实是被截断位置决定的,不是被物理决定的。

🎯 决策线

给任何一个你要拿来做决策的均值做一次跑动均值检验:按时间顺序把样本一个一个加进去,每加一个重算一次平均,把这条曲线画出来。曲线躺平了,均值可以用;曲线还在跳台阶,就说明你的均值目前由最大的那几个样本决定——这时候别报均值,报中位数和分位数。这个检验十行代码,比任何统计检验都先做。

🌀 生物与医学 · 一个 R₀ 背后可以是两种完全不同的疫情 流行病学用基本再生数(basic reproduction number,记作 R₀)描述"一个病人平均传染几个人"。但新冠传播的实测显示,个体之间的传播数极度不均:Endo 等人 2020 年估计其离散度参数 k 约为 0.1,对应大约一成的感染者造成了八成的传播。同样是 R₀ = 2,可以是"人人传两个",也可以是"九成人传零个、少数人传几十个"。两者的平均值一模一样,该采取的动作却完全相反:前者要普遍降低接触,后者要盯住聚集场所和回溯性密接追踪。均值相同而分布不同的两个世界,需要不同的干预。

EN Run a hundred thousand draws and recompute the running mean each step. The normal sample flattens within a few hundred draws; the power-law sample sits near 0.7 for twenty thousand draws, is lifted to 2.9× by a single draw, and is still at 1.3 after a hundred thousand. For tail index β, the mean exists only if β > 1 and the variance only if β > 2 (α = β + 1 in the density convention). Earthquake energy sits near β ≈ 2/3 — its mean is finite only because the Earth is finite.

03「无标度」到底在说什么(What Scale-Free Actually Means)

"无标度"(scale-free)这个词经常被当形容词用,好像它只是"很大很不均匀"的文艺说法。它其实是一句非常具体、可以拿去验证的话。

先看它的反面。假设成年男性身高服从平均 1.75 米、标准差 7 厘米的钟形分布,那么:超过 1.80 米的人占 24%,超过 1.90 米的占 1.6%,超过 2.00 米的占 0.018%,超过 2.10 米的占 0.0000287%。每往上加 10 厘米,人数分别掉到原来的 1/15、1/90、1/619。掉的倍数本身在飞快变大——越往上越难,而且难度加速。

幂律里完全不是这样。规模翻一倍的概率,与你现在在哪儿无关。不管一本书已经卖了一万册还是一百万册,它"再翻一倍"的概率是同一个数:2−β。β = 1.16 时就是 45%,永远是 45%。

"再上一个台阶"的概率,掉得有多快 正态 · 身高每加 10 厘米 幂律 · 规模每翻一倍 > 1.80 m 24% > 1.90 m 1.6% > 2.00 m 0.018% > 2.10 m 0.00003% ÷ 15 ÷ 90 ÷ 619 衰减倍数 自己在加速 > 1 万册 100% > 2 万册 45% > 4 万册 20% > 8 万册 9% ÷ 2.2 ÷ 2.2 ÷ 2.2 恒定 这就是"无标度"
右边这一列的三个 ÷2.2 完全相同——这不是巧合,这就是「无标度」四个字的字面意思:换个尺度看,规律长得一模一样。

"无标度"就是这个意思:这条分布上没有任何一个位置是特殊的。没有"正常范围",没有"超出正常范围",也就没有一个能拿来当基准的典型尺度。你把横轴的单位从"册"换成"万册",图形一模一样。

这条性质有个直接的、很反直觉的后果。在幂律里,已经很大,是"还会更大"的证据。具体地说,如果你知道某个量已经超过了 x,那它最终值的期望是 x 乘以 β/(β−1) 这个固定倍数——期望值正比于当前值。β = 1.16 时这个倍数是 7.25:一本已经卖到 10 万册的书,期望最终销量是 72 万册;卖到 100 万册的,期望是 725 万册。它永远不"到头"。

正态分布是反过来的。已知一个人超过 1.90 米,他的期望身高是 1.925 米;已知超过 2.00 米,期望是 2.017 米。条件期望死死贴着阈值——阈值再往上抬,期望几乎跟着不动。这才是均值回归(regression to the mean)成立的地方:分布有中心,偏离中心的观测下一次多半更靠近中心。

所以"涨了这么多了,该回调了"这句话不是一句普遍的智慧,它是一句有前提的话,前提就是这个量有中心。对无标度的量,它不但不成立,方向还正好相反。

🎯 决策线

先判断量的类型,再决定用哪套直觉:薄尾的量(身高、反应时间、日通勤时长)用均值回归——极端值之后预期回落;重尾的量(销量、传播量、事故损失、单客收入)反过来——已达规模是继续增长的最好预测器。具体动作:在你的复盘模板里,把"这次是不是异常值,要不要剔除"这个问句换成"这个量属于哪一类"。前一个问句在重尾的量上必然把最有信息的数据扔掉。

🌀 工程与技术史 · 该迁走哪个进程 1997 年 Harchol-Balter 与 Downey 测了 UNIX 系统上进程存活时间的分布,发现它是重尾的。这直接推翻了当时的调度直觉:"这个进程已经跑很久了,快结束了吧"——在重尾分布下正相反,跑得越久的进程,剩余期望寿命越长。于是他们给出的负载均衡策略是把已经活得最久的进程迁到空闲机器上:只有它们大概率还会活足够久,来摊薄迁移本身的开销。同一条条件期望性质,在这里变成了一行可执行的调度规则。

EN Scale-free is a testable statement, not an adjective. Under a normal height distribution the odds of clearing each extra 10 cm fall by 15×, then 90×, then 619×. Under a power law the odds of doubling are constant at 2 to the minus β. Consequently the conditional expectation is proportional to the current value — already large is evidence of larger still — which is the exact reverse of regression to the mean.

04这套说法在哪儿不成立(Where This Breaks Down)

幂律是复杂性科学里最容易被滥用的一件工具,原因很简单:它长得像一条直线,而直线让人放松警惕。用之前,四条边界。

第一,"看起来像直线"不是证据。双对数坐标是一种极其宽容的画法:它把纵轴压缩了几个数量级,于是人眼对弯曲的敏感度大幅下降。对数正态分布(log-normal distribution,很多小因素相乘出来的结果)画在同一张纸上,在两三个数量级的范围内和幂律几乎分不开。2009 年 Clauset、Shalizi 与 Newman 用一套统一的统计流程重新检验了一批被广泛引用为幂律的数据集,其中一部分明确通不过;而通过的里面,也有不少无法与对数正态区分开。→ 参考 · 幂律的识别与误判

第二,现实里的尾巴总是被截断的。没有哪本书能卖给比地球人口更多的人,没有哪次地震能大过地壳。所以严格意义的"均值不存在"在真实数据里永远不会以"无穷大"的形式出现,它出现的形式就是第 02 节那条曲线:算得出来,但不收敛,而且它的值实际上由截断位置决定。这不是把结论削弱了,是把它变得可操作——你要报告均值,就得同时说清楚你的观测窗口有多长、最大观测值是多少。

第三,也是最要紧的:同一条直线可以由完全不同的机制产出。

多对一:好几种机制吐出同一条直线 优先连接(富者愈富) 随机比例增长 + 一个下界 临界点上的连通簇 双对数坐标下的同一条直线 反推 回去 观察到直线 → 说明"某类机制在跑",这一步成立 观察到直线 → 说明"是这一条机制在跑",这一步不成立
富者愈富、随机比例增长、临界连通——三种毫无关系的过程都能给出幂律。所以直线不能当作某一条具体机制的证据。

这一点直接限制了上一期的结论能走多远。看到一条幂律,你可以说"这个系统里存在某种能跨尺度传递的放大机制",这是成立的。但你不能从这条直线推出"所以这个系统处于自组织临界状态"——因为随机比例增长、优先连接、极值叠加都能产出同样的直线,而它们和临界毫无关系。从形状反推机制,是在做一个多对一映射的逆运算,逆运算不唯一。

第四,重尾不等于幂律。本期用"重尾"泛指"极端事件的概率衰减得比指数还慢"这一大类,幂律只是其中最干净的一种。对数正态、拉伸指数也在这个大类里,但它们的所有阶矩都存在。所以第 02 节那些关于"均值不存在"的结论只对幂律那一支成立,不能整包搬到"重尾"上去用。说一个量重尾,和说它服从幂律,是两个强度差很多的主张。

🎯 决策线

别把"符合幂律"当成机制的证据。如果你想主张某个具体机制(富者愈富、自组织临界、传染)在起作用,就必须给出这个机制的另一个可检验后果——比如它预言的时间顺序、它预言的干预效果、它预言的某个别的量的形状。只有分布形状这一条证据时,正确的说法是"存在跨尺度的放大",说到这里就停。

🌀 文学与艺术 · 文体计量学的归属判定 用词频统计判断一部作品到底是谁写的(stylometry),这门手艺的成立靠的恰恰是"共性不携带信息"这条:所有自然语言文本的词频都服从大致相同的幂律,所以"符合齐夫定律"对判定作者毫无用处,能用的只有偏离共性的那部分残差——功能词的使用比例、罕见搭配的偏好。这与本节的多对一映射同构:共有的形状是所有生成过程的公约数,因此它恰好是最不能用来区分它们的东西。凡是把"符合某条普适规律"当作鉴定证据的做法,都在拿公约数当指纹。

EN Four limits. Log-log axes flatter curvature, and a log-normal is hard to separate from a power law over two or three decades. Real tails are always truncated, so a divergent mean shows up as a non-converging estimate whose value is set by the observation window. Preferential attachment, random proportional growth and critical connectivity all emit the same straight line, so the shape cannot identify the mechanism. And heavy-tailed is a much weaker claim than power law.

🎒 场景 · BigCat

  1. 工程与系统设计接口延迟报表上写着"平均响应 180 毫秒",这个数几乎只反映了最慢的那千分之几个请求,涨跌都读不出原因。改成三个数一起看:中位数、P99(99% 的请求都比它快的那个耗时)、以及最慢的 0.1% 贡献了总等待时间的百分之几。更值钱的是把第 03 节那条性质用起来:既然已经等了很久的请求剩余期望更长,那么"等到超时就重发一个新请求"在重尾延迟下是有效手段,而不是浪费——重发的那一个是从分布里重新抽样,期望比继续等下去更短。具体动作:给读请求配上超时重试(对幂等的操作),超时阈值设在 P99 附近而不是平均值的几倍。
  2. 健康与精力用"这周平均睡了 7 小时"给自己发合格证,是本期第 01 节那个错误的私人版本:把两天 4 小时和五天 8 小时抹成一个数,而身体的账不是这么记的。恢复能力是被最差的那几天支配的。改看三个计数:本月低于 5 小时的天数、连续两天低于 5 小时出现过几次、最长的一次连续亏空有多少天。停掉的动作:用周平均给自己打分。
  3. 育儿"这周吵了三次"这种频次统计,在冲突这件事上几乎不携带信息——因为冲突的严重程度是重尾的,一次真正的决裂对关系的影响超过几十次拌嘴的总和。可改的是记录口径:不记次数,记最严重的那一次有多严重、以及事后多久恢复到能正常说话。恢复时间在变长,是比次数变多严重得多的信号;次数变少而恢复变慢,往往意味着冲突被压住了而不是解决了。

🌀 越界 · 跨学科的联想(Crossings)

深入思考(Going Deeper)

如果均值不可靠,为什么不干脆全都改用中位数?

因为很多问题问的本来就是总量,而总量必然由尾部决定。保险公司要赔的是全部赔付之和,不是典型赔付;服务器要扛的是全部请求的总耗时。中位数在这些问题上是安全的废话——它稳定,但它回答的不是你的问题。正确的做法不是换一个数,是换成一组数:中位数说典型情况,分位数说尾部形状,最大观测值说你的观测窗口有多长。

「已经很大所以会更大」和「均值回归」,怎么判断眼前这件事该用哪一条?

看这个量有没有一个内生的上限机制。人的身高受骨骼和代谢限制,考试成绩有满分,这些量有中心,均值回归成立。销量、传播量、财富没有这种机制,反而有正反馈(卖得好→被看见→卖得更好),所以尾巴撑得开。一个粗糙但好用的判据:这个量能不能翻十倍而不撞到任何物理或制度的墙?能,就别用均值回归。

知道了尾巴很沉,除了「别用均值」还能做什么积极的事?

能做的事其实比薄尾世界多。既然结果由少数几次决定,那么增加尝试次数、保证尝试之间足够不同、以及让每次尝试的下行有界,就成了比"提高单次成功率"更有效的策略。这也解释了为什么风险投资、药物筛选、内容创作都长成组合的样子——它们不是在赌运气,是在配合分布的形状做设计。

一个量的尾指数会随时间变化吗?

会,而且这往往比指数本身更值得盯。金融市场在平静期和危机期的尾部形状不一样,社交网络在推荐算法改版前后的传播分布也不一样。麻烦在于估计尾指数需要大量的尾部样本,而尾部样本天然稀少——所以"尾指数在变化"这件事,通常要等它变完很久之后才测得出来。这是本期方法的一个真实软肋,别指望拿它做实时预警。

延伸阅读(Further Reading)