第三章:把长尾藏进合格分位数
本章造假目标
九个整数等待时间已经按升序记录为
1, 1, 2, 2, 3, 3, 4, 6, 14.
当前结论:样本均值为 4,样本方差为 16.5;按最近秩规则计算的样本第 90 百分位数为 14 秒。
验收目标:前两个数字保持不变,样本第 90 百分位数不超过 10 秒;当前数据未通过第三项。
可动范围:允许修改等待时间,每个数仍为不小于 1 的整数,样本量保持为九。
本章任务:让三个字段同时合格,再检查新数据的阈值比例、区间空洞、偏度和等待机制是否协调。
三个目标先变成三条代数约束
设修改后的排序数据为
y(1)≤⋯≤y(9).
均值保持为 4,等价于总和保持为
i=1∑9yi=9×4=36.
样本方差保持为 16.5,等价于平方偏差和保持为
i=1∑9(yi−4)2=(9−1)×16.5=132.
展开平方偏差:
i∑(yi−4)2=i∑yi2−8i∑yi+9×16.
代入总和 36,方差约束可以改写成
i=1∑9yi2=276.
用 qp 表示样本的最近秩分位数。它取排序后的第
r=⌈np⌉
个排序位置。这里
r=⌈9×0.9⌉=9,
所以样本第 90 百分位数就是最大值。一般地,最近秩规则在 p>1−1/n 时满足 ⌈np⌉=n,此时样本 p 分位数落在最大值上。本章的样本验收条件等价于
q0.90=y(9)≤10.
再加上整数下界,完整约束为
1≤y(1)≤⋯≤y(9)≤10,
i∑yi=36,i∑yi2=276.
均值约束固定一次和,方差约束固定平方和,分位数约束卡住最大值。造假目标已经变成一个有限整数搜索问题。
压低 14 以后,丢失的平方和必须从别处补回
最直接的动作是把 14 改成 10。总和随之减少
14−10=4,
平方和减少
142−102=96.
为了守住均值,其他八个观测合计必须增加 4;为了守住方差,它们的平方和还必须增加 96。把 4 个单位均匀分配到中部只能小幅增加平方和,远远补不回 96。方差约束迫使部分观测继续向两端移动。
平方改变量解释了如何寻找补偿。把一个值 x 增加 δ,平方和会增加
(x+δ)2−x2=2xδ+δ2.
同样的正改动落在较大的 x 上,会补回更多平方和。先把 4 和 6 各提高 4:
4⟶8,6⟶10.
这一步使总和增加 8,平方和增加
(82−42)+(102−62)=48+64=112.
目标只需要总和增加 4、平方和增加 96,因此还要减去总量 4 和平方和 16。把 2,2,3,3 各降低 1,总量恰好减少 4,平方和减少
2(22−12)+2(32−22)=2×3+2×5=16.
两步合并后,总量净增加 4、平方和净增加 96,恰好补回把 14 压到 10 的两项损失。由此得到候选数据:
1, 1, 1, 1, 2, 2, 8, 10, 10.
它相对于原排序数据的逐位改动为
δ=(0,0,−1,−1,−1,−1,+4,+4,−4).
改动总和为零:
i∑δi=0,
所以均值保持不变。新数据的平方和为
1+1+1+1+4+4+64+100+100=276,
所以样本方差仍为 16.5。最大值为 10,q0.90 也降到 10。三个报告字段全部合格。
这张表同时出现了新的形状:四个观测堆在下界 1,3 到 7 之间完全空缺,最高端又堆了两个 10。均值与方差没有记录这些位置变化,当前分位数指标也只读取最后一个排序值。要看清整条数轴发生了什么,需要逐一检查所有阈值。
造假动作留下的影子
把最大值从 14 压到 10 会同时损失总和与平方和。为了把两项摘要补回原值,其他观测被推向下界与上端,最终形成四个 1、中段空洞和两个 10。三个验收字段都正确,伪造压力却从最大值转移到整条排序结构。
单个阈值只检查一个位置,分布函数检查全部阈值
服务承诺只检查阈值 10:等待时间不超过 10 秒的比例是多少?若核查者把阈值依次移到 1,2,3,…,每个位置都会得到一个累计比例。随机等待时间记为 X,它的分布函数定义为
F(x)=Pr(X≤x).
这个函数把“在阈值 x 以内完成”的概率作为 x 的函数。阈值向右移动时,已经计入的结果不会退出,因此 F(x) 单调不降;阈值移到所有可能值左侧时 F(x) 趋近 0,移到所有可能值右侧时趋近 1。
等待时间按整数记录。令
p(k)=Pr(X=k)
表示恰好等待 k 秒的概率。累计概率与单点概率满足
F(k)=j=1∑kp(j),
p(k)=F(k)−F(k−1).
于是分布函数的每次跳跃都对应某个整数等待时间的概率质量。连续变量没有这样的单点跳跃;若存在密度 f,区间概率改由面积给出:
Pr(a<X≤b)=F(b)−F(a)=∫abf(x)dx.
离散质量与连续密度都在回答同一问题:概率沿数轴怎样分布。
总体分布未知,样本怎样画出累计阶梯
真实的 F(x) 看不见,样本却能给每个阈值投票。第 i 个观测不超过 x 时记为 1,超过时记为 0:
1(xi≤x)={1,0,xi≤x,xi>x.
把九张票相加再除以九,得到经验分布函数
F9(x)=91i=1∑91(xi≤x).
每个观测使累计阶梯上升 1/9;重复值会让同一位置出现更高跳跃。原数据与候选数据在若干阈值上的累计比例为
| 阈值 x | 1 | 2 | 3 | 4 | 6 | 8 | 10 | 14 |
|---|
| 原数据 F(x) | 2/9 | 4/9 | 6/9 | 7/9 | 8/9 | 8/9 | 8/9 | 1 |
| 候选数据 F(x) | 4/9 | 6/9 | 6/9 | 6/9 | 6/9 | 7/9 | 1 | 1 |
候选数据在 x=1 处一次累计了 4/9,随后从 2 到 7 长时间不再上升,到 8 和 10 又突然跳跃。原数据的累计阶梯较连续,只在 6 与 14 之间留下长尾空档。单独检查 x=10 时,候选数据达到 100%;检查整条阶梯时,低端堆积和中段空洞同时显现。
分位数是从累计概率反查位置
分布函数输入位置 x,输出累计概率 F(x)。分位数反向查询累计概率达到 p 时的位置。总体 p 分位数定义为
qp=inf{x:F(x)≥p}.
总体服务水平若要求第 90 百分位数不超过 10 秒,可以写成
q0.9≤10.
总体分位数看不见,只能由样本估计。本章采用最近秩规则
qp=x(⌈np⌉).
原数据与候选数据的几个样本分位数为
| 数据 | q0.50 | q0.75 | q0.90 |
|---|
| 原数据 | 3 | 4 | 14 |
| 候选数据 | 2 | 8 | 10 |
候选数据把 q0.90 降到合格值,中位数也从 3 降到 2,第 75 百分位数则从 4 跳到 8。三个位置之间的间距变得很不均匀。单个高分位数只控制排序结构上的一个节点,其他分位数会显示补偿操作发生在什么位置。
适用边界:小样本分位数依赖口径
最近秩、线性插值和不同软件默认规则可能给出不同样本分位数。按本章规则,九个观测的 q0.90 正好等于最大值;采用插值规则时,结果通常仍会强烈依赖最大值。如此小的样本难以稳定估计总体尾部,q0.90≤10 只说明当前九个观测通过了样本验收。正式服务承诺还需固定分位数定义、观察窗口和最少样本量,并用抽样不确定性评估总体条件 q0.90≤10。
直方图为什么可能遮住空洞
经验分布保留每个排序跳点,阅读时却不如区间计数直观。把相邻数值合并成箱,就得到直方图。使用宽度为 2 的半开区间:
[1,3),[3,5),[5,7),[7,9),[9,11),[11,13),[13,15).
两组频数为
| 区间 | [1,3) | [3,5) | [5,7) | [7,9) | [9,11) | [11,13) | [13,15) |
|---|
| 原数据 | 4 | 3 | 1 | 0 | 0 | 0 | 1 |
| 候选数据 | 6 | 0 | 0 | 1 | 2 | 0 | 0 |
候选数据分成低端六个观测与高端三个观测,中间两个箱完全为空。若把箱宽放大,空箱会和相邻观测合并,间隔看起来较弱;改变起点也会改变每个箱的计数。直方图适合发现候选结构,经验分布与分位数可以进一步检查这种结构是否只由分箱选择造成。
等待机制先决定应该比较哪一种分布
“看起来像钟形”没有说明等待为何会形成钟形。这里给出一个最简单的等待机制:每一秒服务都有固定概率 r 完成;若本秒没有完成,下一秒以同样概率继续尝试,各秒结果相互独立。
等待恰好在第 k 秒结束,需要前 k−1 秒都失败、第 k 秒成功,所以
Pr(K=k)=(1−r)k−1r,k=1,2,…
这就是几何分布。累计到第 k 秒仍未完成的概率为
Pr(K>k)=(1−r)k,
因此分布函数为
FK(k)=1−(1−r)k.
对取正整数值的随机变量,尾概率求和公式来自交换两层非负求和:
E(K)=m=1∑∞mPr(K=m)=m=1∑∞k=0∑m−1Pr(K=m)=k=0∑∞Pr(K>k)=k=0∑∞(1−r)k=r1.
样本均值为 4。令模型均值 1/r 等于样本均值,是最简单的矩估计,由此得到
r^=41.
这个模型天然右偏,因为大量请求较早完成,少数请求会连续失败并进入长尾。模型的第 p 分位数为满足
1−(1−r)k≥p
的最小整数,即
qp=⌈log(1−r)log(1−p)⌉.
取 r=1/4,理论中位数为 3,第 75 百分位数为 5,第 90 百分位数为 9。与样本比较:
| p=0.50 | p=0.75 | p=0.90 |
|---|
| 几何模型 qp | 3 | 5 | 9 |
| 原数据 qp | 3 | 4 | 14 |
| 候选数据 qp | 2 | 8 | 10 |
原数据在中部接近模型,最高位偏长;候选数据把最高位降到 10,却把样本第 75 百分位推到 8。模型提供了一条由机制产生的完整参照,三个分位数共同显示补偿操作把异常从尾端转移到了中上部。
方法来路:等待分布为什么从逐次失败产生
几何分布把“第一次成功发生在第几次尝试”写成概率模型。前 k−1 次失败与第 k 次成功直接给出 (1−r)k−1r。它适合离散时间、固定成功概率和独立尝试;服务负载随时间变化、任务难度不同或完成概率具有记忆时,需要更丰富的等待模型。
Q–Q 思路把多处分位数放到同一张关系图
逐个列出分位数很快会变成长表。Q–Q 图把理论分位数放在横轴、样本分位数放在纵轴。对第 i 个排序观测,可使用概率位置
pi=ni−0.5,
再计算目标模型的理论分位数 qpimodel,绘制
(qpimodel,x(i)).
若样本与目标模型协调,点列会沿对角关系展开;系统弯曲表示某些概率区间被拉长或压短。离散几何分布会产生重复理论分位数,点列因此带有阶梯,这属于模型本身的离散结构。
原数据在最高概率位置向上偏离,表示样本最大等待比几何模型更长。候选数据的最低几个位置压在 1,中上部又突然跳到 8,10,10,点列会先低于参照、再越到参照上方。Q–Q 关系把“低端堆积—中段空洞—上端补偿”连成一条弯曲轨迹。
正态 Q–Q 图若用在这组数据上,会额外混入模型选择问题。正态分布允许负值,等待时间却满足 X≥1;几何模型从逐秒完成机制出发,更符合当前变量。参照分布应由生成机制选择,不能只挑一条最容易画直的理论曲线。
偏度压成一个数以后会遗漏什么
经验分布与 Q–Q 关系保留许多位置。若只想用一个有方向的数概括左右不对称,可以考察三阶中心矩。对当前样本,使用未经有限样本校正的矩偏度
g1=[n1∑i(xi−xˉ)2]3/2n1∑i(xi−xˉ)3.
三次方保留偏差方向,右侧远端点产生较大的正贡献。原数据的均值为 4,三次偏差和为
2(−3)3+2(−2)3+2(−1)3+03+23+103=936.
代入得到
g1old≈1.852.
候选数据的偏差为
−3,−3,−3,−3,−2,−2,4,6,6,
三次偏差和为 372,所以
g1new≈0.736.
偏度明显下降。单看 ∣g1∣,候选数据似乎更接近对称;g1 却没有记录四个 1、中段空洞和两个 10 分别位于哪里。一个高阶矩仍然是压缩摘要,适合提示不对称方向,无法代替经验分布与排序检查。
样本偏度还有不同有限样本校正口径。九个观测中,一个位置变化就能明显改变结果,正式报告必须说明公式并保留原始数据。
对数变换压缩距离,却不会改变排序事实
另一种外观处理是把等待时间改写到对数尺度:
Y=logX.
大值之间的原始距离会被压缩,6 与 14 的差从 8 变成
log14−log6=log(14/6).
对数函数连续且严格单调递增,因此排序完全不变。分布函数满足
FY(y)=Pr(logX≤y)=Pr(X≤ey)=FX(ey),
分位数也满足
qp(Y)=logqp(X).
对数直方图可能显得更对称,反变换后的样本第 90 百分位数仍然是 14。变量变换改变距离尺度和均值解释,无法抹去排序与超时比例。若合同用原始秒数定义,必须在原尺度完成判断。
第一章讨论的是样本均值的重复抽样波动,结论对象为 Xˉ。在独立同分布、方差有限等条件下,更大样本的 Xˉ 可以近似服从正态分布;单次等待 X 仍然可以右偏、离散并带有硬下界。样本均值的抽样分布与单次观测的总体分布需要分别判断。
一个长等待可能代表另一类请求
原数据中的 14 也可能来自真实的复杂故障。假设前八个观测属于常规请求:
1,1,2,2,3,3,4,6,
最后一个 14 属于复杂故障。常规组均值为
μR=822=2.75,
复杂组均值为 μC=14。按样本比例混合后,
μ=98(2.75)+91(14)=4.
对离散等待时间,若共有 G 个潜在类别,一般的混合概率质量函数写成
p(x)=g=1∑Gπgpg(x),g∑πg=1.
其中 πg 是第 g 类的混合比例,pg(x)=Pr(X=x∣C=g) 是该类的概率质量函数。记
μg=E(X∣C=g),σg2=Var(X∣C=g),μ=g∑πgμg.
在第 g 类内部展开 X−μ=(X−μg)+(μg−μ),条件期望中的交叉项为零,因此
Var(X)=g∑πgσg2+g∑πg(μg−μ)2.
等号右侧依次是组内方差的加权平均与组间均值差异。这就是全方差公式在有限混合模型中的形式。
对当前九个经验观测,使用分母 n 的二阶中心矩为
9132=14.667.
常规组内部二阶中心矩为 2.4375,加权组内贡献为
98×2.4375=2.167.
组间均值差贡献为
98(2.75−4)2+91(14−4)2=12.5.
两部分相加正好得到 14.667。在这个假设分类下,这列数据的大部分波动来自请求类型差异。直接把 14 压回主体,会掩盖复杂故障的存在;若日志确实记录了两类请求,应保留类型并分别报告等待分布。
适用边界:数值大小不能自行证明潜在类别
把 14 归入复杂故障只是一个待核对的机制假设,分类依据必须来自请求类型、错误码或运行日志。复杂组目前只有一个观测,无法据此稳定估计该组的均值和方差;混合分解在这里用于说明可能的方差来源,不能单独确认两类请求真实存在。
三个字段合格以后,形状检查得到什么结论
候选数据 1,1,1,1,2,2,8,10,10 确实满足均值 4、样本方差 16.5、样本第 90 百分位数 q0.90=10。这一点已经由总和、平方和与排序位置逐项复算。
继续检查全部阈值,经验分布在 1 处跳到 4/9,从 2 到 7 出现平台;直方图显示中间两个宽度为 2 的箱完全为空;分位数序列从 2 直接跳到 8;相对几何等待模型的 Q–Q 关系先下弯再上跳;偏度虽从 1.852 降到 0.736,仍无法描述边界堆积;混合分解则提示原来的长等待可能携带请求类型信息。
三个报告字段达标后,候选数据仍缺少自然的等待机制。补偿均值和方差所需的改动把一个长尾问题改造成低端堆积、中段空洞和潜在类型丢失。下一章将聚焦单个远端观测:面对 14 这样的点,何时可以删除、缩尾或单独建模?
本章知识链
-
固定均值和方差等价于固定一次和与平方和;最近秩 q0.90 在九个观测中把验收约束落在最大值上。
-
分布函数检查全部阈值,经验分布函数用样本比例估计累计概率;样本分位数 qp 用排序位置估计总体分位数 qp。
-
直方图受箱宽和起点影响,Q–Q 关系同时比较多个理论分位数与样本排序值。
-
几何分布从固定完成概率和独立逐秒尝试推出,为离散等待时间提供右偏参照。
-
偏度会遗漏堆积与空洞,单调变换保留排序,混合方差分解则把组内波动与类型差异分开。
思考与练习
-
验证候选数据的总和、平方和、样本方差与最近秩样本第 90 百分位数,并逐项核对改动向量对总和和平方和的影响。
-
补全原数据与候选数据在阈值 x=1,2,…,14 上的经验分布函数表,找出两条阶梯差值最大的区间。
-
分别用箱宽 2,4,7 为两组数据制作频数表。说明哪些空洞会随箱宽消失,哪些累计事实不会改变。
-
从 Pr(K>k)=(1−r)k 推导几何分布均值 1/r,并计算 r=1/4 时第 95 百分位数。
-
使用本章偏度公式复算原数据与候选数据的 g1。构造一组偏度接近零但明显双峰的数据,说明偏度为何不足以定义形状。
-
证明连续且严格单调递增的变换满足 qp(g(X))=g(qp(X)),并解释对数变换为何不能让原始样本第 90 百分位数从 14 变成 10。
-
复算常规请求组的二阶中心矩 2.4375,再完成组内与组间方差分解。
-
为等待时间提出一个比固定成功概率几何模型更真实的机制,并指出分布函数会怎样改变。
专题导航