1.6

1.6 面向工程指标的统计素养

概述与动机

运营好一个指标项目,不需要统计学学位,但确实需要避开少数几种具体、常见的错误,因为它们会让原本治理良好、埋点可靠的指标变得具有实际误导性。一个团队可以把一切都做对(说清决策、避开古德哈特定律、权重偏向结果、治理所有权、可靠地埋点)却仍然得出错误的结论,因为它在需要百分位数的地方看了平均值、把噪声误认为趋势,或者被一个装扮成因果的巧合骗了。本主题是本书假定后面每个主题读者都已具备的最低限度统计判断力。

核心问题在于,按正式统计学的标准来看,工程指标通常都是嘈杂、偏斜、小样本的。一个团队每周的部署次数,不是一条平滑的钟形曲线;它是一小撮数据点,偶尔夹杂着大的异常值(一次大发布、一波由事故驱动的连续回滚)。把针对大规模、行为良好的数据集所建立的天真直觉,套用到这类数据上,会定期产出自信却错误的结论。学会识别一个数字何时嘈杂到不可信、一个平均值何时在骗你,以及两件事一起移动何时其实什么也说明不了因果,这不是一种可有可无的严谨,而是区分一个真正教会组织某件真事的指标项目,与一个教会它某件听起来可信、实则虚假之事的指标项目的关键。

在企业与政府规模上,统计错误会累积,因为一个具有误导性的结论,一旦被领导层接受,就会在许多团队中被付诸行动,而无人想到要重新审视其背后的分析。对两个事业部之间、或某次重大重组前后进行的一次统计上天真的比较,可能在多年间塑造资源分配决策,而其依据不过是噪声,或者一个无人加以控制的混杂因素。本主题的存在,正是为了降低这种失败发生的可能性。

核心原则

  • 中位数或百分位数通常比平均值告诉你更多信息。 工程数据经常被异常值扭曲,平均值会吸收这些异常值,百分位数则不会。
  • 小样本会产生嘈杂的数字。 一个由一小撮事件计算出的百分比,会因与真实变化毫不相干的原因而剧烈摆动。
  • 均值回归不断愚弄人们。 一次异常好或异常差的读数之后,往往会跟随一次更正常的读数,无论有没有任何干预。
  • 相关不是因果,混杂变量无处不在。 两个一起移动的指标,可能共享一个隐藏的第三重原因,而不是其中一个驱动了另一个。
  • 控制图胜过单一的前后对比。 看清正常的变异范围,才能让你把真正的转变与噪声区分开来。

建议

对偏斜数据默认使用中位数与百分位数

工程中基于时间的指标(交付周期、事故恢复时间、响应延迟)几乎总是右偏的:大多数值聚集在低端,伴随着偶尔出现大异常值的长尾。一个被那条长尾拉扯的平均值,可能描绘出一幅任何典型情形实际上都不像的画面。报告中位数(中间值,一半观测值高于它,一半低于它)并配合第90或第95百分位数(低于该值的观测值占90%或95%的那个数值),二者一起,既能展示典型情形,也能展示团队实际经历过的最坏情形长尾。本书姊妹篇software-engineering-guide一书的KPI主题,以及本书第2部分各主题中的交付指标,都通篇假定了这一习惯。

知道何时一个样本小到不可信

在一个进度缓慢的周里,仅从三次部署计算出的变更失败率,算不上一个有意义的信号;一次失败就能让这个百分比一夜之间从0%变成33%,而原因可能与底层风险毫不相干。在对一个基于百分比的指标作出反应之前,先检查底层的计数。作为一条实用的经验法则,把由少于大约二三十个底层事件计算出的比率视为嘈杂,需要更长的观察窗口才能得出结论,并在仪表盘上明确地说明这一点,而不是把一个波动的小样本百分比,以与一个稳定的大样本百分比同等的自信呈现出来。

在为某项干预措施归功之前,留意均值回归

如果一个团队史上最差的事故周之后,紧接着领导层的关注和随之而来的改善,人们很容易把功劳归于那次干预。但往往一部分改善无论如何都会发生,因为一次异常极端的读数之后,纯粹作为一种统计假象,往往会跟随一次更典型的读数,这种现象被称为均值回归。要防范这一点,就要与一条更长的历史基线相比较,而不是与触发关注的那个单一极端数据点相比较,并对将多少观察到的改善归因于某项具体行动这件事,保持恰如其分的谦逊。

在宣称某个指标导致某个结果之前,寻找混杂变量

当两个指标一起移动时(例如部署频率与客户满意度一同上升)要抵御那种在考虑混杂变量(一个驱动两者的隐藏第三因素)之前,就宣称一个导致另一个的本能反应。一次新功能发布,可能独立地同时推高部署频率(更多的后续修复)和满意度(功能本身),而这两个指标之间根本没有因果联系。在把一种相关性呈现为因果证据之前,主动追问同一时间还有什么其他变化,可以解释这两种变动。

使用控制图,而不是单一的前后对比快照

控制图把一个指标随时间的走势画出来,并明确展示其正常的变异范围,通常表现为围绕一条中心平均线的带状区域。这让你能够把一次真正的转变(一个数据点或一段持续的走势落在正常范围之外)与单一前后对比无法区分的普通噪声区分开来。在宣布”变更之后数字改善了”之前,先画出足够的历史数据,看清正常变异是什么样子,再检查变更后的读数是否真的落在这个范围之外。

权衡取舍:利与弊

方案优点缺点
平均值简单、熟悉、容易计算在偏斜的工程数据上会被异常值扭曲
中位数与百分位数对异常值稳健,能同时展示典型情形与长尾对非技术受众而言略微陌生
单一的前后对比快速、直观、易于呈现容易受均值回归与噪声影响
控制图与更长的基线能可靠地把真实转变与噪声区分开来需要更多历史数据,向非技术受众解释起来也更费力

核心张力是简单性与严谨性之间的张力。平均值与单一的前后对比更容易计算和解释,这正是它们在非正式报告中占主导地位的原因,但它们也是最容易在本书这类指标所产生的嘈杂、偏斜数据上,产出自信却错误结论的两种技术。解决之道是:对任何有真实后果的决策,默认使用更严谨的技术(中位数、百分位数与控制图,把更简单的技术留给风险较低、探索性的初步查看,在那里,一次错误的解读代价不高。

与团队讨论的问题

  1. 我们仪表盘上的哪些瓷砖报告的是平均值,而中位数或百分位数会讲述一个更真实的故事? 基于时间的工程指标几乎总是偏斜的,偏斜数据上的平均值可能看起来还不错,而典型情形或最坏情形长尾却讲述着一个完全不同的故事。专门针对这种替代,审计你基于时间的瓷砖。

  2. 我们基于百分比的指标背后的底层样本有多小,我们是否把一个来自十个事件的指标,与一个来自一千个事件的指标同等自信地对待? 一个呈现时不带底层计数的、波动的小样本比率,会招致对噪声的过度反应。检查你的变更失败率及类似的百分比瓷砖是否存在这个缺口。

  3. 我们是否曾把一次改善归功于某项干预,而这次改善本来仅凭均值回归就会发生? 这是最容易犯、也是事后最难察觉的统计错误之一,因为那次干预与那次改善确实是按那个顺序发生的。回顾一个最近的”我们把它修好了”的故事,诚实地问一问,基线比较是否足够长,能够排除这种可能。

  4. 在哪些地方,我们在没有检查混杂变量的情况下,就假定一个指标导致了另一个指标? 两件事一起移动很常见;其中一个导致另一个是一个更强的断言,需要更多证据。挑一个你的团队目前深信不疑的相关性,试着说出一个能在完全没有因果联系的情况下解释它的合理混杂因素。

  5. 对我们最重要的指标而言,我们是否有足够的历史数据来知道正常变异是什么样子,还是我们在比较单一的点? 没有对正常范围的把握,任何单一读数看起来是令人担忧还是令人安心,取决于心情,而不是证据。讨论一下,你们最受关注的指标是否曾被画成一张控制图,而不只是一个单一数字。

  6. 我们目前如何向非技术利益相关方传达不确定性,我们的仪表盘是否暗示了比数据实际支持的更高精度? 一张不显示正常变异或样本量的图表,可能让领导团队对噪声反应过度,或者同样常见地,把一个真实信号当作噪声打发掉。讨论一下你们的报告能如何在不变得难以阅读的前提下,诚实地传达这一点。

行业视角

初创公司。 小团队几乎在任何地方都会产生小样本,这意味着本主题关于小样本的警示始终适用。抵御从单独一个糟糕的周或单独一个出色的周中得出强结论的冲动;只有一小撮数据点时,对”这是不是一个趋势”最诚实的回答,往往是”我们还不知道”。

小型企业。 现成工具的内置仪表盘,往往默认使用平均值和单一周期比较,因为它们计算和展示起来最简单。只要工具允许,就把基于时间的指标切换成中位数,并对任何由较小底层计数计算出的”本月上升40%“这类头条数字保持怀疑。

企业。 在这样的规模上,统计错误会被固化进影响数百人的资源分配与重组决策之中。投资培养分析师或嵌入式数据从业者,让他们能够在业务单元之间的比较、或某次重大变更前后的比较被当作既定事实呈现给领导层之前,构建恰当的控制图并检查混杂因素。

政府。 一次统计上天真的比较,一旦支撑起公开报告或预算理由,可能带来放大的现实后果,也恰恰会招来那种公开揭露草率分析的审视。把更严谨的技术(控制图、文档化的样本量、混杂因素检查)当作对任何对外发布内容的常设实践,而不是偶尔为之的最大努力。

案例

企业。 一家软件公司的领导团队,在推出一项新的代码评审政策一个月后,庆祝变更失败率改善了25%,并直接把功劳归于该政策。一次更仔细的审视发现,那个”变更前”的月份异常糟糕,是由某个团队一次出问题的迁移所驱动的,而两个月的底层样本量,在全公司范围内都不到三十次部署。一张使用十二个月历史数据的控制图显示,这个新读数完全落在正常变异范围之内,并非一次真正的阶跃变化,而该政策的实际效果,虽然真实存在,却远比头条数字所暗示的要小得多。

政府。 一家公共交通机构报告了一套新数字化排班系统带来的准点率同比大幅改善,比较的是单一的”变更前”季度与单一的”变更后”季度。一次独立审查发现,那个”变更前”季度恰好碰上了一次与之无关的施工封闭,压低了整个网络的表现,而一条更长的基线显示,准点率其实在新系统上线之前就已经在恢复了。该机构修订后的报告,使用了一张完整的多年控制图,并把一项更为温和、却更站得住脚的改善,具体归因于新系统。

商业理由:动机、投资回报与总拥有成本

统计素养的回报是避免误导:一个正确归因了一次改善、或正确地把噪声识别为噪声的组织,会把下一笔投资花在真正有帮助的地方,而不是去追逐一个幻影效应。上面的零售案例很典型:一家相信自己的评审政策单独驱动了25%改善的公司,可能会对其他真正的贡献因素投资不足,或者以一种误导未来决策的方式,夸大该政策的价值。

统计严谨性的成本主要是一种习惯上的转变,而不是新工具:选用中位数而不是平均值、在反应之前检查样本量、在宣布胜利之前画出更长的基线。这些习惯采纳起来成本不高,却能预防那种因自信却错误的结论而做出的决策所带来的、大得多也更难察觉的代价。

反模式与陷阱

  • 对偏斜的、基于时间的数据报告平均值: 把典型情形与长尾都隐藏在一个具有误导性的单一数字背后。
  • 对一个看不见样本量的百分比作出反应: 把来自一小撮事件的噪声,当作一个稳定、有意义的趋势来对待。
  • 在没有排除均值回归之前就为某项干预归功: 一种常见、易犯、又难以察觉的错误。
  • 在没有考虑混杂因素的情况下,从相关性宣称因果性: 夸大了数据实际所能支持的结论。
  • 比较单一的前后快照,而不是画出更长的基线: 无法把真实的转变与普通的变异区分开来。
  • 在面向领导层的报告中暗示比数据实际支持的更高精度: 招致对噪声的过度反应,或者对真实信号的轻视。

成熟度模型

  • 第一级,启动: 指标以原始平均值和单一前后快照的形式报告,不关注样本量、偏斜或基线变异。
  • 第二级,发展: 部分分析人员非正式地使用中位数或百分位数,但没有一致的组织实践,混杂因素也很少被检查。
  • 第三级,标准化: 中位数与百分位数是基于时间的偏斜指标的默认选择;在全组织范围内,基于百分比的指标旁边都会展示样本量。
  • 第四级,管理: 带历史基线的控制图是任何”真实转变”断言的标准实践;在报告中作出因果断言之前,会主动考虑混杂变量。
  • 第五级,协奏: 统计严谨性被内建到工具本身之中,仪表盘默认渲染百分位数与控制带,组织能够证明某个具体的过去决策,因为一次统计上天真的解读在塑造战略之前就被发现而得到了纠正。

讨论思路

  1. 如果我们把某个平均值换成中位数,我们当前仪表盘上的哪些头条数字看起来会不一样?
  2. 我们是否曾因为发现某个百分比其实基于比我们所假定的小得多的样本,而改变过一项决策?
  3. 有哪个最近的”我们改善了这个指标”的故事,值得我们重新审视是否存在均值回归?
  4. 我们的哪两个指标可能是通过一个隐藏的第三重原因相关联,而不是其中一个驱动了另一个?
  5. 我们最重要的图表展示的是正常的变异范围,还是仅仅一条单一的趋势线?

要点回顾

  • 对偏斜的、基于时间的工程指标,优先选用中位数与百分位数,而非平均值。
  • 把来自小样本的百分比视为嘈杂,明确说明这一点,而不是把它当作一个稳定趋势来反应。
  • 在为某项干预因一次异常糟糕读数之后的改善而归功之前,留意均值回归。
  • 相关不是因果;在作出因果断言之前,主动寻找混杂变量。
  • 使用带有真实历史基线的控制图,而不是单一的前后快照,来把真正的转变与普通噪声区分开来。

参考文献与延伸阅读

  • The Signal and the Noise,Nate Silver著(在不完美的数据中区分真实信号与噪声)。
  • How to Measure Anything,Douglas W. Hubbard著(面向组织衡量的统计推理)。
  • Understanding Variation: The Key to Managing Chaos,Donald J. Wheeler著(控制图,以及普通原因变异与特殊原因变异之间的区别)。
  • Thinking, Fast and Slow,Daniel Kahneman著(包括均值回归与因果叙事幻觉在内的认知偏差)。
  • The Visual Display of Quantitative Information,Edward R. Tufte著(定量数据的诚实、高诚信度呈现)。