辛普森悖论
做数据分析的人相信对辛普森悖论(Simpson's Paradox)
早已耳熟能详,所谓辛普森悖论,通俗来说就是观测者在观测分组指标时得到了性质 A,但在汇总指标情况下却到了不一样甚至完全相反的性质 B。工作中辛普森概率非常常见,举个简单的例子:
甲乙两篮球队都出自 857 俱乐部,甲篮球队五个人与 NBA 全明星队作战十轮,一轮 10 分钟,得分高的队伍则认为获得该轮篮球赛的胜利。然而比赛结果甲篮球队只赢得了 2 场,其胜率为百分之 10。乙篮球队五个人和当地老年篮球队同样作战十轮,结果却拿下了九场对局,胜率为百分之 90。857 俱乐部数据分析员拿着下面这个简单的报表找到了篮球经理,经理决定让乙篮球队代表 857 俱乐部参加各大篮球联赛,对于经理的这次安排存在的潜在隐患有待商榷,但这种分配肯定是不合理的,仔细观察后发现甲篮球队的实力确实是有目共睹的。
篮球队的例子很容易看出问题所在,数据分析员并未考虑分组获取指标的背景,只是单纯地将分组得到的结果进行总体的比较,从而得出了不一样的选择。读到这里相信读者心中也有疑问,有谁会范这样的错误,这不是傻吗?而以上只是帮大家建立起对辛普森悖论的初步认识,接下来再给一个更具理论话的例子:
某公司要对旗下两款购物平台的用户留存进行性别分析,数据分析员说当日女生留存率为 42%而男生为 21%,女生的留存率是男生留存率的两倍,从而认为该公司旗下的购物平台更受女生喜爱,更能吸引女性用户的眼球。项目组经理却确认为,这样的运动商品购物平台,在性别上不应该出现这么大的用户留存差异,甚至男生的留存率应该高于女生,于是让数据分析员做一个完整的调查报告(如下):
很容易看出,对于 AB 购物平台,分别分析性别留存率的时候男生都是大于女生,但是总体分析时,男生的留存率却远远小于女生,这就是最能体现辛普森悖论的例子。
分析用户留存的例子说明了简单的将分组数据汇总分析是不一定能反映真实情况的。在本例中,可以清晰地看出女生偏爱选择注册 A 购物平台,而正好偏爱注册 A 购物平台的女生中选择留存的人数也占多数,就导致了女生总体留存量较大(分子大了),相反男生更偏爱注册 B 购物平台,但恰好 B 购物平台的留存人数少之又少,即使 A 购物平台中男生的留存率大,但是基数相对较少,导致整体留存量偏少(分子小了),所以会出现以上的分组总体观测结果相反的结论。在分析时需要具体讨论注册的新增用户对我的收益大还是用户的留存率对我的收益大,可在分析时根据注册用户的多少设置分析留存的权重,或者说分析留存率时性别因素对于这一指标根本毫无影响甚至受别的因素干扰,需要去分析更多的因素(具体分析某因素对某项指标的影响时可能用到概率统计中的统计假设检验,该部分内容后续可分享,本篇主要分享数据陷阱的基础知识)。
针对以上两个例子,都需要具体分析分组的情况下更多的因素,因此数据分析中如何避免辛普森悖论即可从此入手,除了运用组别权重分析各组对指标的影响外,还可以运用很多统计检验方法,所有的方法都需结合场景和实际情况进行分析。
罗杰斯现象
罗杰斯现象又称为Will Rogers悖论
,这一悖论起源于美国喜剧演员 Will Rogers,他曾说:当俄克流民离开俄克拉荷马州并且搬到加利福尼亚州,他们同时提升了两个州的平均智力水平。这是什么意思呢?罗杰斯现象通俗来讲,就是将 A 组中的部分元素移动到 B 组中后,A 组和 B 组的统计水平同时上升。为什么会出现这种情况,举个例子如下:
A 组定义:新用户:冲高当日注册用户;回流用户:冲高当日回流用户;老用户:其他活跃用户 B 组定义:新用户:冲高前七天-冲高日注册用户;回流用户:冲高前七天-冲高日回流用户;老用户:其他用户 假设某款 APP 投入了一段促销广告,分别对广告投放当天的新用户平均消费额、回流用户平均消费额、老用户平均消费额进行比较。得到如下结果:
有人就此得出定论:投放该促销广告能够一定程度上促使用户消费......仔细推敲发现这样的结论是及其不科学的。从定义可知 A 组中的老用户被分到了 B 组的新用户和回流用户中,倘若 A 组中刚好处在前七天到冲高前日的用户消费低迷,拉低了 A 整体老用户消费的平均水平,而正好这段广告的投放非但促进用户的消费,反而让用户产生了厌倦心理从而削弱了用户的消费心理,导致 A 分组中出来的这部分“消费低迷用户”到了 B 组中反而成了拉高整体消费的用户群,就使得 B 组在 A 组的元素移到 B 组后,平均消费指标看似还在提升可事实却是我们刚刚说的广告让当日新增用户产生了厌倦心理且并未促进消费。
那如何避免罗杰斯现象呢,在如上的例子中,我们需要对比前后平均消费值升高的原因,找到原因后若确定是罗杰斯现象的产生,需要结合更多的因素来讨论某一行为的变化是否带给了我们想要的正向结果。
多重比较谬误
多重比较谬误简单来讲,就是假设在 A/BTest 实验中,我们需要分析行为 a 对整个群体的影响,此时比较 AB 两个不同群体的差异(假设两个群体分别呈现了几十个数据指标)时,我们从中找出了具有差异的指标后则认为行为 a 就是造成了这类指标差异的原因。刚学习数据分析的时候曾认为这类谬误也不是那么没道理,如果同样采取以上的例子,分析投放某广告对用户的行为有和影响,在进行 AB 实验后,发现在观测的众多指标中,对照组和实验组在用户注册性别比例上存在很大的出入,则我会认为投放这类广告对新的男性(或女性)用户更有吸引力。真实这样吗?如果只是通过这样的简单分析就开始进入全量用户的广告投放,对某一性别的用户做特别的宣传,容错率是特别低的,若实验结论错误,是会给个人和团队甚至公司带来很大损失的。下面将阐述对多重比较谬误的理解:
从概率论的角度对多重比较谬误的出现有了初步的认识,而在具体实验中,我们会通过假设检验的方式判断新的策略在小样本上的体现是否在大盘上也具有同样的效果。以显著性实验 T 检验为例,
假设 X1 表示实验组的用户新增,X2 表示对照组的用户新增,对于某实验采取 95%的置信区间,5%的假阳性概率(实验本身没有效果,但是计算出来结果是有效果的),此时计算 t 值检验 p 值与 5%比较,观测其是否显著。若 20 个指标中,在数据都正确的情况下,根据上图中假设不难推出,至少有一个指标是错误的概率为 1-95%^20 约为 64%,即在 20 个指标的实验中,至少有一个无效指标被错认为是有效的概率为 64%!
简单来说,多重比较谬误是进行多次假设检验时,整体第一类错误概率会随检验次数增加而提升。当我们发现一个指标 A 变差了,为了寻找指标 A 变差的原因,便广泛地寻找其他同样变差的指标,并且把发现的同样变差的指标 B 当成是指标 A 变差的原因,此时我们就产生了误判的概率,若我们观察的指标数量越大,误判的概率就越大。
工作中经常遇到有做推荐算法的同学为了让自己的算法今早上线,会投机的选择这样的无效实验指标来支撑自己的算法,这样是非常不科学且不负责任的做法,正确的做法是我们首先要足够了解自己的算法是怎样影响用户的,用户的某指标如何改变也有个大致的预期,从而再对比实验结果看是否有差异。而统计学上一共给出了两种修正策略:family-wise error rate(FWER)和 false discovery rate(FDR).
此时回顾一下假设检验的相关问题,假设一个对应一个机器学习中的二分类问题:原假设()为真以为着这一策略是无效的,原假设为假意味着这一策略是有效的(为什么原假设倾向于设定为我们更想要拒绝的假设即所谓的”小概率事件“,需理解第一类和第二类错误的实质以及在其在实验中对实际情况的影响,可结合下文理解)。在假设检验中如果得到 p 值小于显著性水平 α,则拒绝了原假设且认为这一策略是有效的,可称该次检验是“显著的”,若得到 p 值大于显著性水平 α,则同意了原假设认为这一策略是无效的,可称此次检验是“不显著的”。这个地方可能会有点绕,但是捋清楚假设检验的基本概念并且掌握实际实验中所面临的具体问题后,这些障碍便可迎刃而解。同样再这个例子中,由于一个策略既有可能是有效的,也有可能是无效的,我们也可能拒绝有效的,也可能接纳了无效的,所以针对一次检验我们可能得到四种可能的结果:
- 若原假设为真但被拒绝(H0 is true but rejected)的概率为 α,即这一策略是无效的但被我们误认为有效,因此犯第一类错误(type Ⅰ error)的概率为 α;
- 则原假设为真但被接受的概率为(1-α),即我们接纳”这一策略是无效的“这一说法;
- 若原假设为假但被拒绝的概率为 β,即这一策略是有效的但被我们误认为无效的概率为 β,我们叫这种错误为第二类错误(type Ⅱ error),其概率为 β;
- 则原假设为假但被接受的概率为(1-β),即我们接纳”这一策略是有效的“这一说法;
很多说法会将第一类错误和第二类错误进行比较,我认为这样的比较是没有意义的,因为在具体的生活实践中,没有一个死板的说法认为拒真就一定比取伪要好,只是在大多数工作情况下会认为我想得到一个正向的策略,但是我不能接受得到一个本身就错误的策略还花大价钱去投入使用(谁都不想因此被领导叭叭),同样的例子,医院发明了一个新冠病毒探测仪,原假设就可以设定为探测者为无病(我希望探测仪探测出来有病的患者,所以原假设倾向于设定为我们要拒绝的事件),从而才会得出第一类错误是将没病的认为有病的,这是我们可以接受的,而第二类错误就是将有病的认为没病,你能接受那国家都不能接受。但是也不是说我们一点都不关注第二类错误,精益求精的我们希望 α 和 β 的错误都同样降到最小。
而多重比较谬误是描述整体第一类错误的概率会随检验次数增加而提升。假设有 m 个人投放了此次策略,每个人选择这个策略后得到反馈这个事件都是独立的,因此每个人得到无效结果(原假设)的概率都是 α,假设 α=0.05,若 m=20,要保证 20 个指标都得到有效的结果,概率为 0.95^20,约为 35.8%,也就意味着至少有一个人得到无效结果的概率是 64%,所以我们的目标是如何降低这个 64%,即减少犯第一类错误的风险。因此 FWER 采用最简单的方式,将 n 次实验的 p 值对应记为p1,p2……pn,显著性水平为 α,所以只需要将pi<=α/n,简单说来就是将每个独立事件的显著性水平降低到 α/m,从而保证整体得到有效结果的概率变大。但是这个方法太直接,直截了当降低显著性水平会导致第二类错误的升高,FDR 相较于 FWER 就显得”缓和“许多。FDR(false discovery rate)错误发现率,表示在 n 次拒绝的结果中错误发现的比例的期望;
- 若原假设为真但被拒绝的检验次数为 R;
- 原假设为真但被接受的检验次数为 Q;
- 原假设为假但被拒绝的检验次数为 W;
- 原假设为假但被接受的检验次数为 X;
其中 R+Q+W+X=n,此时 FDR=E[R/(R+W)];该修正方法要让 FDR 不超过 α,很轻松可证 FDR=E[R/(R+W)] ≤((R+Q)/n)α≤α。观察((R+Q)/n)发现,对于显著性水平的设定只是在 FWER 的基础上乘了一个 R+Q 的值,这个值表示实验中原假设(策略是无效的)真实出现的次数。在具体工作中肯定不会知道 R+Q 的具体值,但是会根据之前的经验和一些别的工作指标来将 m 次检验(或者对指标的检验)进行排序,设置显著性水平为(α/n)*i,i 表示排序时的参数,这是控制多重比较谬误时比较常用的方式。
总结
方法论固然重要,但是结合实践才能让方法论烙印于心。以上为目前工作中有遇到过的一些数据分析问题及处理方式,曾经学习概率统计的时候,知识点会比较独立,总是不知道运用到具体场景这些东西是怎么展示的,一把抓地学习以为什么都是重点,但它也确实都是重点,因为受众群体不一样,A 知识点受众于机械,B 知识点受众于医疗都是不一定的,所以需要不断探索不断学习,不断结合实际。第一次写分享可能有些东西阐述不太能让人明白甚至产生歧义(平时我说话就这样),但是还是希望批评指正,大家共同学习共同进步!