整体是双峰,拆开来看两组各自都是单峰——这说明双峰不是巧合,是两套机制叠在一起。 普调组 40 人平均 4.45%,谈过加薪组 15 人平均 9.75%,差 5.30 个百分点。 按 8000 元月薪算,这 5.30 个点等于一年 5085 元。但这是相关,不是因果。
上一篇把箱宽折腾了一遍。这一篇换个方向:不改宽度,改数据范围——只看一部分人。 「按子集画直方图」是书里的原话。它对应的是分析里最常见的一个动作:分群看。
一、把数据拆开
回到那个双峰:如果这批人真来自两类过程,拆开看就该各自是单峰。 按「加薪幅度是否超过 7%」拆成两组:一组 2.5% 到 6.4%,一组 8.0% 往上。 这一步严格说有点作弊——用结果去分组,等于先知道答案再分类。
真实分析里该按「与结果无关」的维度拆:部门、职级、入职年限、有没有提交加薪申请。
二、拆开之后的形状
| 分组 | 人数 | 平均 | 最低 | 最高 |
|---|---|---|---|---|
| 普调组 | 40 | 4.45% | 2.5% | 6.4% |
| 谈过加薪组 | 15 | 9.75% | 8.0% | 11.5% |
普调组跨度 3.9 个点,谈判组跨度 3.5 个点,两组内部的散布都不大。 组间差了 5.30 个百分点——这就是双峰的来源。两个窄峰叠在一起,就成了一个宽的双峰。 各画一张直方图,每组都是单峰。这反过来验证了「两类过程」这个猜测。
三、谈判有没有回报
谈过加薪的 15 人平均 9.75%,没谈的 40 人平均 4.45%,差 5.30 个百分点。 按 8000 元月薪算:每月多 424 元,一年 5085 元。 这个数很扎眼,但它撑不起「谈判能让你多拿 5.3 个点」这个结论。
因为敢谈的人,可能本来就绩效更好、岗位更关键、更会表达。 这些因素同时影响「谈不谈」和「加多少」。
四、要判因果,得怎么办
第一条路:随机对照。随机让一半人去谈、一半人不谈,再看结果。公司里基本做不到。 第二条路:看同一个人谈前谈后。这能排除「人本身」的差异,但排除不了「那年公司效益好」。 第三条路:找自然实验。比如某年公司突然开放「自主申请调薪」窗口,等于给了一批人一个外生的机会。
三条路的共同点:都要让「谈不谈」这件事不受本人特质影响。做到这一点,才谈得上因果。
五、谈判要求加薪对你意味着什么
对个人:同样的绩效,谈和不谈差 5.30 个点,一年 5085 元。这个数不大,但它每年都会复利。 对公司:两套并行的加薪机制,会让薪酬结构越来越散,最后没法用「一个平均数」管。 对分析:这是「先看形状」最实际的回报——如果只看平均 7.24%,你根本发现不了这里有两套机制。
形状告诉你有几套机制,平均只告诉你中心在哪。
六、动手 Demo:只看子集,形状可能完全不同
把 60 条记录拆成两组,各组算人数、平均、极值、跨度。 再把两组画在同一张图上,看它们的区间有没有重叠。
BASE = [round(2.5 + 0.1 * i, 1) for i in range(40)]
NEGO = [round(8.0 + 0.25 * i, 1) for i in range(15)]
def mean(v):
return sum(v) / float(len(v))
for nm, sub in (("普调组", BASE), ("谈过加薪组", NEGO)):
print("%-6s 人数 %2d 平均 %.2f%% 最低 %.1f%% 最高 %.1f%% 跨度 %.1f"
% (nm, len(sub), mean(sub), min(sub), max(sub), max(sub) - min(sub)))
gap = mean(NEGO) - mean(BASE)
print()
print("组间差 %.2f 个百分点" % gap)
print("按 8000 元月薪:每月多 %.0f 元,一年 %.0f 元"
% (8000 * gap / 100, 12 * 8000 * gap / 100))
print("两组区间重叠吗:%s" % ("重叠" if min(NEGO) <= max(BASE) else "不重叠"))
实跑输出:
--------------------------------------------------------------------
只看子集,形状可能完全不同
--------------------------------------------------------------------
① 把数据拆开
--------------------------------------------------------------------
回到那个双峰:如果这批人真来自两类过程,拆开看就该各自是单峰。
按「加薪幅度是否超过 7%」拆成两组:一组 2.5% 到 6.4%,一组 8.0% 往上。
这一步严格说有点作弊——用结果去分组。真实分析里该按部门、职级这种「与结果无关」的维度拆。
② 拆开之后的形状
--------------------------------------------------------------------
| 分组 | 人数 | 平均 | 最低 | 最高 | 极差 |
|---|---:|---:|---:|---:|---:|
| 普调组 | 40 | 4.45% | 2.5% | 6.4% | 3.90 |
| 谈过加薪组 | 15 | 9.75% | 8.0% | 11.5% | 3.50 |
普调组 40 人,平均 4.45%,区间 2.5 到 6.4,跨度 3.9 个点。
谈过加薪组 15 人,平均 9.75%,区间 8.0 到 11.5,跨度 3.5 个点。
两组内部的跨度都不大,组间差了 5.30 个百分点——这就是双峰的来源。
③ 各画一张,都是单峰
--------------------------------------------------------------------
拆开后的图存成 PNG:11642 字节。两组各自的区间没有重叠。
④ 谈判有没有回报
--------------------------------------------------------------------
谈过加薪的 15 人,平均 9.75%;没谈的 40 人,平均 4.45%。差 5.30 个百分点。
按 8000 元月薪算,这个差等于每月多 424 元,一年 5085 元。
! 但这是相关不是因果:敢谈的人可能本来绩效就更好。
要判因果,得做随机对照,或者看同一个人谈前谈后。
⑤ 谈判意味着什么
--------------------------------------------------------------------
对个人的意义:同样的绩效,谈和不谈差 5.30 个百分点,一年差 5085 元。
对公司的意义:两套并行的加薪机制,会让薪酬结构越来越散,最后没法用「一个平均数」管。
这就是为什么先看形状:形状告诉你有几套机制,平均只告诉你中心在哪。
两组区间完全不重叠,这是「双峰」最硬的证据——不是两个峰挨得近,是中间真的断了。 5.30 个点看着像谈判的功劳,其实还混着「谁更敢谈」这个因素。下一页讲怎么拆开它。
30 秒实验
- 如果谈判组里有一个人只加了 6.5%(低于 7%),拆分的界线要不要改?改了之后结论变吗?
- 把两组各自算标准偏差,哪一组内部更散?这说明什么?
- 想一想:为什么「用结果分组」在探索阶段可以,在验证阶段不行?
常见误区
- 拿子集差异直接当因果:两组人本来就不同,差异可能来自「谁进哪一组」而不来自组本身。
- 按结果分组还声称是发现:用结果分组只能提假设,不能验证假设。
- 只报组间差,不报组内散布:两组内部都很散的话,组间差可能被噪声淹没。
- 忽略区间是否重叠:重叠越多,两组的区分越弱,双峰的说法越站不住。
自测三问(点开对答案)
1. 为什么拆开后两组都是单峰,能支持「双峰来自两套机制」? —— 因为叠加两个单峰才容易形成双峰。如果拆开后还是双峰,说明还有第三类过程没找到。 2. 5.30 个百分点能直接说是谈判的功劳吗? —— 不能。敢谈的人可能本来绩效更好、岗位更关键。「谈不谈」不是随机分配的。 3. 要判因果,有哪几条路? —— 随机对照、同一个人谈前谈后、找自然实验。共同点是让「谈不谈」不受本人特质影响。形状和分群都讲完了。第 10 章换一个目标:不用图看关系,用一个式子预测一个数——回归。
- ☐ (本篇完,下一篇 10.1 加薪计算器)