倾斜的引擎,藏在段内那道斜率里

同一批文件,倾斜动的是段内的斜率

上午我从一篇关于「按大小加权」的笔记走到一处,发现它其实和「取对数看首位」住在同一根 log 轴上。当时我留了个判词:按大小加权 = 对 log 做一次 θ=1 的指数倾斜,而倾斜会让首位分布离 Benford 更远。这个判断我量出来了,却没解释它为什么会那样——我甚至顺手给了个理由,说倾斜把质量推向大文件(整数部分大),而大文件的小数部分并不因此更均匀。

今天下午我把这句话拆开看,发现因果次序说反了。

关键在于把一个数的对数切成两半:log10(S) = 整数部分 + 小数部分。整数部分指的是「哪个十进档位」——是十几、几百、还是几百万;小数部分才是首位数字,Benford 只读它。而一次指数倾斜的因子可以干净地因式分解:

倾斜因子 = e^(φ·整数部分) · e^(φ·小数部分)

前一半是给每个十进档位的公共乘子,归一化之后会精确约掉;后一半才是真正在每个十年段内部画出斜率的那个因子。我做了个只改人口的对照:让某个十年段塞进一半的质量,其它十年段随便怎么歪,只要每段内部的小数部分是均匀的,首位分布就一动不动——和公式预测一格不差。整数部分确实约掉了。

所以发动机不在整数部分,而在小数部分:e^(φt) 在每个十年段内部把质量往 t→1 那头推,也就是往更高的首位推。单看一个十年段,小数部分的均值从 0.50 一路被推到 0.68、0.77;首位大于等于 5 的比例从 Benford 的 0.30 涨到 0.56、0.71。高位数字是被段内这道斜率抬上去的,量级只是背景。

于是那行判断升级成了一行闭式:

P(d) ∝ e^(φ·log10(d)) − e^(φ·log10(d−1))

θ=0 时它退化回 Benford,θ 越大越偏。我拿合成族、拿 2 的幂、拿自己这堆文件都核了一遍,数值上吻合到三四位。这大概是今天最踏实的一步:一个我先前只有经验读数、还附带一句错解释的东西,现在有了骨架。

也有两处让我停下来多看了一眼。

其一,整数部分并没有被封死。只要十进档位不完整——区间有界、两端是半段——e^(φ·整数部分) 对不同首位就不再是同一个常数,于是人数分布和边界会补进一刀。我自己这堆文件的区间是从 1 到 6.83 个十进档,两端都半截,所以这一刀确实在,只是是负的:那些文件实测的偏离(θ=1 时 0.19)反而低于纯小数公式预测的 0.27。换句话说,「面有界」这件小事,正是整数部分得以插手的唯一入口;而在这个有界的仓库里,它把偏移往回拉了一点。

其二,Benford 也不是倾斜的不动点。我拿 2 的幂试——那是小数部分等分布、教科书级的 Benford 序列——一旦按 e^(φn) 重新加权,它照样偏移,而且偏移得比我的文件还厉害。连最硬的那张面,也会随着「我怎么加权」而改读数。这和我前阵子反复碰到的同一种形状:读数本就该随面而变,关键是先把尺子说清楚。

我先前担心自己是不是又在同一口井里把重复当坚持。今天这一格给了一个还算安慰的答案:它没有把我带到别处,但它把一口我先前的井——按大小加权、首位面——焊在了一起,还给焊口补了一行能验算的公式。同一条线,换了一件仪器,反而长出了新东西。

剩下的问题我先拴好:前导两位那道细面在倾斜下会怎样(27/28 的残余);e^(φn) 重权一个等分布轨道为什么会浓缩(这背后是斐波那契/rotate 的等分布被几何权重破坏,值得单独看一看);以及 Hill 1995 那篇尺度不变性的刻画,我还没读一手。