📈 第2章 实验
📄 一句话概括

星巴仕挑八家店,四家降价、四家不降,一个月后收数:实验组 −3.0%,控制组 −11.0%。 差 8 个百分点。这 8 个点才是降价的净效果,前面那些比较都没给出这个数。 这一篇讲控制组为什么不可省,以及「把最差的店拿去降价」这种好心的提议为什么必须拒绝。

📝 本章和前面几章的关系

上一篇承认了观察数据走到头。这一篇开始做实验,第一件事是找一个基准线。 控制组这个概念会一直用到第 4 章(图形对比)、第 11 章(误差基准)——凡是比较,都得先有基准。

一、两个数,一个差

实验组四家降价,一个月后跌 3.0%;控制组四家不降,跌 11.0%。 只看实验组的 −3.0%,你什么都说不了——因为整个行业都在跌。 控制组给出的正是这个背景值:什么都不做,也要跌 11%。

组 变化 这个数里有什么
实验组 −3.0% 降价的效果 + 行业下滑
控制组 −11.0% 只有行业下滑
差值 +8.0 个点 降价自己的贡献

二、为什么不能只用实验组

这是新手最常犯的错:只测「做了之后怎么样」,不测「不做会怎么样」。 没有后者,你无法把「我的动作」和「世界的变化」分开。 控制组不是配角,它决定了你能不能说因果。

三、「避免解雇」那个提议

实验做到一半,有人提议:把业绩最差的四家店拿去降价,反正死马当活马医。 听起来很合理,实际会毁掉整个实验。业绩最差的店本来就在往下掉,降完还是差。 你会得出「降价没用」,而真实原因是分组时就把差的挑进去了——这次混杂是你自己造的。

四、控制组要「像」实验组

理想状态:两组除了降不降价,别的都一样。 现实里做不到完全一样,只能做到「平均来看差不多」。 这个「平均来看」不是靠挑,是靠随机——下一篇的主题。

五、一个月够不够

时间太短,降价的效果还没显出来;时间太长,别的事情会掺进来(换季、竞品、促销)。 选多长,取决于你预期效果多久能显现,以及你能承受多久拿不到数。 这次选一个月,是因为咖啡的消费频次高,一个月足够让老客来四五次。

六、动手 Demo:控制组:实验的基准线

两行数,一个差值。这段代码把「差值是算出来的」这件事摆清楚。 顺便算一下:如果只有实验组,你会得出什么结论。

exp = [-1.0, -4.0, -2.0, -5.0]    # 实验组四家店的变化 %
ctl = [-10.0, -12.0, -9.0, -13.0]  # 控制组四家店的变化 %

me = sum(exp) / len(exp)
mc = sum(ctl) / len(ctl)
print('实验组 %.2f%%  控制组 %.2f%%  差值 %+.2f 个点' % (me, mc, me - mc))
print()
print('如果只看实验组:跌了 %.1f%%,只能说「情况不妙」' % abs(me))
print('有了控制组:跌得比对照组少 %.1f 个点,这才是降价的效果' % (me - mc))
print()
print('组内波动:实验组极差 %.1f,控制组极差 %.1f'
      % (max(exp) - min(exp), max(ctl) - min(ctl)))

实跑输出:

--------------------------------------------------------------------
控制组:实验的基准线
--------------------------------------------------------------------

  ① 一个月后的两个数
  --------------------------------------------------------------------
  星巴仕挑了八家店,四家降价、四家不降,一个月后收数。
  实验组(降价):−3.0%
  控制组(不降):−11.0%
  差 8 个百分点——这是降价的净效果。

  ② 为什么必须有控制组
  --------------------------------------------------------------------
  如果只有实验组那一个 −3.0%,你什么都说明不了:
  这个 −3.0% 里,有多少是降价带来的,有多少是「整个行业都在跌」?
  控制组给出的正是这个背景值:什么都不做,也会跌 11%。

| 组 | 变化 | 怎么读 |
|---|---|---|
| 实验组 | −3.0% | 降价 + 行业下滑 |
| 控制组 | −11.0% | 只有行业下滑 |
| **差值** | **+8.0 个点** | **降价自己的贡献** |


  ③ 「避免解雇」那个插曲
  --------------------------------------------------------------------
  实验设计到一半,有人提议:把业绩最差的四家店拿去降价,反正死马当活马医。
  这个提议听起来合理,实际会毁掉整个实验——业绩最差的店本来就在往下掉,
  降完还是差,你会得出「降价没用」的结论,而真正的原因是分组时就挑了差的。
  ! 分组不能挑,一挑就引入了新的混杂因素,而且这次是你自己造的。

  ④ 控制组要「像」实验组
  --------------------------------------------------------------------
  理想的控制组,是「除了没降价,别的都和实验组一样」。
  现实里做不到完全一样,只能做到「平均来看差不多」。
  下一篇讲怎么用随机化逼近这个「平均来看差不多」。

差值 8.0 个点是两个均值相减,不是四家店两两相减再平均——后者会被极端值带偏。 组内极差都是 4 个点,组间差 8 个点:组间差是组内波动的两倍,这才有得谈。

30 秒实验

  1. 把控制组全部减 3(整体更差),差值变成多少?结论会变吗?
  2. 把实验组里最差那家从 −5 改成 −15(一家店崩了),均值差会被拉低多少?
  3. 想一想:如果控制组只有一家店,这个差值还可信吗?

常见误区

  1. 只测实验组:把大环境的变化记在自己账上,好时贪功,坏时甩锅。
  2. 挑最差的店做实验:分组一挑,混杂就回来了,而且这次是你自己造的。
  3. 控制组和实验组不同期:先做实验组、三个月后再做控制组,季节和行情全变了。
  4. 时间窗口随便定:太短看不出效果,太长混进别的事,得按业务频次定。
自测三问(点开对答案) 1. 控制组的作用是什么? —— 提供「什么都不做会怎样」这个背景值,让你能把动作效果和世界变化分开。 2. 为什么不能把业绩最差的店拿去降价? —— 那样分组就和「原本业绩」相关,引入了新混杂,结论会被分组方式本身污染。 3. 差值是 8 个点,这个 8 是怎么算的? —— 两组各自均值相减:−3.00 减 −11.00 等于 +8.00 个点。

控制组要「像」实验组,可怎么保证像?靠挑不行,只能靠随机。下一篇把随机分组跑两千遍给你看。

相关笔记