📈 第8章 启发法
📄 一句话概括

邂逅集的年终报告写「散乱垃圾减少五成」。市议会的第一句话是:这五成怎么算出来的。 8 个样方清扫前后各数一次,44.0 件降到 22.0 件,降幅 50.0%——这一步算得没错。 错在少了对照:没人扫的街区同期也降了 2.6%。净效果是 47.4 个百分点,不是 50%。

📝 本章和前面几章的关系

第 7 章处理「没有频率」的事。第 8 章处理另一种困境:连量都量不准。 这里的街道名、抽样数、清扫量都是本节设定值,方法照书里的路子走:先抽样,再对照,最后谈口径。

一、一份没人能验证的报告

邂逅集是镇上负责清扫的队伍,任务是「减少散乱垃圾量」。 年终报告上写:本年散乱垃圾减少五成,工作卓有成效。 市议会的反应很直接:这话听着挺好,可我们没法验证。没法验证的成效,在预算会上等于零。

于是他们被要求补一份能查的报告。你要做的是:把「减少五成」这句话拆成能核对的步骤。

二、第一步:抽样怎么抽

全镇划 8 个样方,每个样方 100 米长的路面。清扫前后各数一次垃圾件数。 样方是把「整个镇」缩小成一个能数的东西。这一步不做,后面全是空话。 抽样的两个基本要求:位置要随机(不能专挑脏的角落),数量要够(8 个不算多,但比 1 个强)。

三、第二步:降幅怎么算

样方 清扫前 清扫后 变化
1 42 18 −24
2 38 22 −16
3 51 27 −24
4 47 19 −28
5 33 15 −18
6 55 31 −24
7 40 20 −20
8 46 24 −22

8 个样方的变化全是负数,一个例外都没有。这在抽样里叫「方向一致」,是个好信号。 清扫前平均 44.0 件,清扫后 22.0 件,降幅 50.0%。报告上那个「五成」是从这儿来的。

四、第三步:这个降幅是谁的功劳

问题来了:垃圾变少,可能因为清扫,也可能因为天气、因为居民习惯变了、因为附近工地停工了。 要分开这两件事,只有一个办法:找一个没被扫过的对照组,同期也数一遍。 对照街区(8 个样方,没安排清扫):42.88 件降到 41.75 件,降幅 2.6%。

这 2.6% 就是「自然变化」。它没有出现在报告里,因为报告只写了好消息。

五、第四步:净效果

净效果 = 清扫组降幅 − 对照组降幅 = 50.0% − 2.6% = 47.4 个百分点。 报告该写的是「比没扫的地方多降了 47.4 个百分点」,而不是「减少五成」。 两个说法差 2.6 个百分点,看着不多,但这个差距是有意义的: 它区分了「我们干的」和「本来就会发生的」。

一份报告最该说清的,就是这两者之间的界线。

六、动手 Demo:他们说自己扫干净了,怎么核

8 个样方清扫前后各一次,加上一组没扫的对照街区。 先算毛降幅,再减掉对照组的自然变化,得到净效果。

BEFORE = [42, 38, 51, 47, 33, 55, 40, 46]
AFTER = [18, 22, 27, 19, 15, 31, 20, 24]
C_BEFORE = [44, 36, 49, 45, 31, 53, 41, 44]
C_AFTER = [43, 35, 47, 44, 30, 52, 40, 43]

def mean(v):
    return sum(v) / float(len(v))

mb, ma = mean(BEFORE), mean(AFTER)
cmb, cma = mean(C_BEFORE), mean(C_AFTER)
drop = (mb - ma) / mb * 100
cdrop = (cmb - cma) / cmb * 100

print("清扫组:%.1f -> %.1f  降幅 %.1f%%" % (mb, ma, drop))
print("对照组:%.2f -> %.2f  降幅 %.1f%%" % (cmb, cma, cdrop))
print("净效果:%.1f 个百分点" % (drop - cdrop))
print()
print("报告写「减少五成」,多算了 %.1f 个百分点" % cdrop)

实跑输出:

--------------------------------------------------------------------
他们说自己扫干净了,怎么核
--------------------------------------------------------------------

  ① 邂逅集的报告
  --------------------------------------------------------------------
  邂逅集是镇上负责清扫的队伍。他们的任务是「减少散乱垃圾量」。
  年终报告上写:本年散乱垃圾减少五成,工作卓有成效。
  市议会的第一个问题是:这五成是怎么算出来的?

  ② 先看他们怎么抽的样
  --------------------------------------------------------------------
  全镇划了 8 个样方,每个样方 100 米长的路面。清扫前后各数一次垃圾件数。

| 样方 | 清扫前 | 清扫后 | 变化 |
|---|---:|---:|---:|
| 样方 1 | 42 | 18 | -24 |
| 样方 2 | 38 | 22 | -16 |
| 样方 3 | 51 | 27 | -24 |
| 样方 4 | 47 | 19 | -28 |
| 样方 5 | 33 | 15 | -18 |
| 样方 6 | 55 | 31 | -24 |
| 样方 7 | 40 | 20 | -20 |
| 样方 8 | 46 | 24 | -22 |

  8 个样方的变化全是负数,没有一个例外——这是个好信号。

  ③ 平均降了多少
  --------------------------------------------------------------------
  清扫前平均 44.0 件,清扫后平均 22.0 件。
  降幅 50.0%。报告上说的「五成」,是从这里来的。

  ④ 可降幅不一定是他们的功劳
  --------------------------------------------------------------------
  同一段时间,他们没扫的 8 个样方也在变。可能是天气、可能是居民习惯变了。
  对照街区:清扫前平均 42.88 件,之后平均 41.75 件,降幅 2.6%。
  这批样方没人扫,却也降了 2.6%——这就是「自然变化」。

  ⑤ 净效果
  --------------------------------------------------------------------
  净效果 = 清扫组降幅 − 对照组降幅 = 50.0% − 2.6% = 47.4 个百分点。
  ! 报告上写「减少五成」,严格说该写「比没扫的地方多降了 47.4 个百分点」。
  这两个说法差 2.6 个百分点。

8 个样方的变化全是负数,方向一致——这条能写进报告,它说明结果不是靠一两个极端样方撑起来的。 没有对照组的降幅,只能叫「变化」,不能叫「效果」。这两个词在预算会上差别很大。

30 秒实验

  1. 如果对照组降幅是 12%(比如赶上连续下雨),净效果还剩多少?报告还站得住吗?
  2. 把 8 个样方的变化值算出来,最大的和最小的差多少?这个差说明抽样稳不稳?
  3. 想一想:为什么报告只写「减少五成」不写「另有对照组」?这是疏忽还是选择?

常见误区

  1. 只做前后对比,不做对照:把季节性下降、天气变化都算成自己的功劳。
  2. 专挑脏的角落取样:样方位置不随机,降幅必然虚高。
  3. 只报平均不报分布:8 个样方里如果有 2 个反而变脏,平均会把它藏起来。
  4. 把「变化」说成「效果」:两个词一个中性一个因果,混用就是夸大。
自测三问(点开对答案) 1. 为什么「减少五成」这句话不够? —— 因为它没有对照。没人扫的地方同期也在变,只有减去这个自然变化,才算清扫的效果。 2. 净效果怎么算? —— 清扫组降幅减去对照组降幅。这里是 50.0% − 2.6% = 47.4 个百分点。 3. 抽样时「位置随机」为什么重要? —— 不随机就能人为挑结果。挑最脏的角落扫,降幅一定漂亮,但不代表全镇。

降幅算出来了,可议员追问一句「垃圾量到底是什么」,故事又卡住了。下一篇处理「量不出来」这件事。

相关笔记