上一篇解决的是中心该选谁。但两个中心一样的变量,处境可能完全不同——这时缺的不是另一个中心,而是另一个维度。

同一个平均数,两种处境

两家门店过去五周的营业额(万元):A 是 48、49、50、51、52;B 是 20、40、50、60、80。

两边平均数都是 50。但 A 最差的一周只差 2 万;B 有三周离 50 差 10 万以上,最差掉到 20 万。按“平均 50 万”备货排班,A 基本没错;B 有一半的周要么断货要么压库存。所以要补上的是这个数:这些值离中心散得有多开。

描述分散有两条路

“散得开不开”问的是离中心有多远,而中心有两种,远也有两种数法,正好两两配对。

绘制中

标准差:把离中心的距离收集起来

标准差跟平均数是一伙的。以门店 A 为例:

  1. 每个数减平均数 50,得到偏差 −2、−1、0、1、2。偏差有正有负,直接相加永远是 0,没法用。
  2. 平方,让正负都算数:4、1、0、1、4。
  3. 求平均:10 ÷ 5 = 2,这个数叫 方差。
  4. 开方:2≈1.4\sqrt{2}\approx 1.4,单位回到万元,这就是 标准差。

门店 B 的偏差是 −30、−10、0、10、30,平方后是 900、100、0、100、900,和是 2000,除以 5 得 400,开方是 20。

于是 A 的标准差约 1.4 万,B 是 20 万。

关键在第 2 步:离中心 2 倍远的点,在平方和里占到 4 倍;10 倍远,占到 100 倍。标准差和平均数一样是“距离驱动”的,只是平均数按距离加权,标准差按距离的平方加权,对极端值更敏感 1。

四分位距:只数位次

四分位距跟中位数是一伙的。把数据排好,取第 25 百分位(p25)和第 75 百分位(p75),相减:

IQR=p75−p25\text{IQR} = p75 - p25

A 排序后是 48、49、50、51、52,中间一半落在 48.5 到 51.5 之间,跨了 3;B 是 20、40、50、60、80,p25 是 30,p75 是 70,IQR 是 40。含义就是一句话:中间一半的数据跨了多宽 2。(不同软件算百分位的方法略有差别,差一两个数不影响结论。)

它只用两个位置上的值,跟这两个值多大没关系,跟两头多极端也没关系。把 B 的最大值从 80 改成 800,只要它还排最后,IQR 一动不动。

A、B 的数据左右对称,所以这两个指标讲的是同一个故事。分歧出现在分布变歪的时候。

分布一歪,两个数就说不同的话

用上一篇那批响应时间:1000 次请求,988 次用了 52 毫秒,12 次用了 2400 毫秒,平均数是 80 毫秒。

标准差:988 次那边的偏差是 −28 毫秒,平方约 794;12 次那边偏差约 2320 毫秒,平方约 538 万。乘上各自次数相加,那 12 次请求一个人就占了平方和的约 98.8%。除以 1000 再开方,标准差约 256 毫秒。

四分位距:988 个数都等于 52,p25 和 p75 都落在这一堆里,IQR = 0。

同一批数据,标准差 256 毫秒说“分散得比平均数还大”,IQR 0 毫秒说“中间一半人毫秒不差”。两个都没算错,它们量的是分布的不同部位:256 描述尾部那几个极端值,0 描述中间 98.8% 有多整齐。

所以要记住的是:一个分散程度的数字,只有知道它描述的是哪一段数据时才有意义。

标准差在哪里会误导人

一、“平均数 ± 一个标准差”可能指向不存在的值。 刚才那批请求,80±25680 \pm 256 就是 −176 到 336 毫秒。这不是巧合:响应时间、收入这类变量下面有硬边界(不能小于 0),上面没有,分布天然右偏;偏得越厉害,标准差越大,越容易超过平均数本身,区间左端就掉到 0 以下。收入数据也是这样:平均数 24,000 美元、标准差 27,500 美元,减出来是 −3,500 美元,而一个负收入也没有 3。

二、“68% 的数据落在平均数上下一个标准差内”只在钟形对称分布里成立。 这条规则来自正态分布的形状,数据一歪就不适用 4。

三、标准差带着单位。 同一个东西换成不同单位,标准差跟着变,量级不同的两批数据不能直接比。

四分位距在哪里会误导人

一、它把两头丢掉了。 那批请求 IQR = 0,但同时有 1% 的人等了 2.4 秒。把 IQR 当稳定性指标,会得出一份完全错误的报告。关注体验、风险、达标线时,p95、p99 必须单独报。

二、它只用了两个点。 你看不到中间那一半里面是什么形状,也看不到两头到底有多远。

三、它不能合并。 两个组的 IQR 合不出整体的 IQR。

四、它对“变得更糟”没反应。 最慢的请求从 2.4 秒变成 24 秒,IQR 还是 0。

怎么选、怎么报

沿用配对逻辑:报平均数就配标准差,报中位数或分位数就配 IQR 或更多分位数。 它们是同一思路的产物——按距离算一对,按位次算一对。

实际判断顺着三个问题走:

  1. 数据大致对称吗? 看最小值、最大值和几个分位数就能判断外形。对称 → 平均数加标准差;右偏 → 中位数加 IQR。
  2. 尾部重不重要? 做告警线、体验指标、风险判断时永远重要,那就额外报 p95、p99。
  3. 结论要不要跟总量对账? 成本、产能、库存这类要跟总量对上的数,用平均数配标准差。

最省事也最不容易出错的写法,是直接报一组分位数。那批请求写成“p50 = 52 毫秒,p90 = 52 毫秒,p99 = 2400 毫秒”,比“平均数 80 毫秒、标准差 256 毫秒”清楚得多,也不用担心读者以为 80 毫秒是某个用户真实等过的时间。

只给一个数,等于替读者决定了哪一段数据不重要。把散开的程度和它描述的位置一起写出来,结论才站得住。