邂逅集的年终报告写「散乱垃圾减少五成」。市议会的第一句话是:这五成怎么算出来的。 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 秒实验
- 如果对照组降幅是 12%(比如赶上连续下雨),净效果还剩多少?报告还站得住吗?
- 把 8 个样方的变化值算出来,最大的和最小的差多少?这个差说明抽样稳不稳?
- 想一想:为什么报告只写「减少五成」不写「另有对照组」?这是疏忽还是选择?
常见误区
- 只做前后对比,不做对照:把季节性下降、天气变化都算成自己的功劳。
- 专挑脏的角落取样:样方位置不随机,降幅必然虚高。
- 只报平均不报分布:8 个样方里如果有 2 个反而变脏,平均会把它藏起来。
- 把「变化」说成「效果」:两个词一个中性一个因果,混用就是夸大。
自测三问(点开对答案)
1. 为什么「减少五成」这句话不够? —— 因为它没有对照。没人扫的地方同期也在变,只有减去这个自然变化,才算清扫的效果。 2. 净效果怎么算? —— 清扫组降幅减去对照组降幅。这里是 50.0% − 2.6% = 47.4 个百分点。 3. 抽样时「位置随机」为什么重要? —— 不随机就能人为挑结果。挑最脏的角落扫,降幅一定漂亮,但不代表全镇。降幅算出来了,可议员追问一句「垃圾量到底是什么」,故事又卡住了。下一篇处理「量不出来」这件事。
- ☐ (本篇完,下一篇 8.2 计量不出来的垃圾)