先给一个可执行的判断:当你按来源渠道对比两个版本时,如果同一访客在一次会话内被分到不同版本,或统计口径把同一人的多次访问拆进两个组,样本污染就已经发生。识别方法是把“分桶依据”和“来源归因依据”放在同一条记录上核对,而不是只看汇总报表的组间差异。只要这两个依据的粒度不一致,后续任何按来源的对比都不可信。
访客进入你的页面时,通常发生两个独立动作:一是被分到某个版本(分桶),二是被标记一个来源渠道(归因)。很多站内实验工具默认按浏览器标识或登录账号分桶,而来源分析可能按会话、按首次点击或按最后一次点击归因。这两套标识的生命周期不同,正是污染的常见来源。
具体动作:在你手上的那份原始日志或事件表中,为每条记录补两列——bucket_id(该访客被分到哪个版本)和source_key(该次访问被判为哪个来源)。不要用汇总后的版本维度表,必须回到最细粒度的事件行。
结果如何影响下一步:如果同一bucket_id对应多个source_key,说明分桶发生在归因之前且未锁定;如果同一source_key下的bucket_id频繁跳变,说明分桶不稳定。前者需要固定分桶键,后者需要检查分桶是否被缓存或跨设备重置。两者处理方向完全不同,所以必须先分类再动手。
组间差异大不等于实验有效,也不等于污染。需要一组可区分的证据来排除合理解释。
这里要注意一个反常现象:某个来源的访问量突然归零,并不一定说明该来源被错误分配。它也可能是标签未触发、过滤规则误伤、归因窗口到期,或该渠道本身停止投放。把这些解释逐一排除后,再判断是否与分桶有关。
假设你的实验工具按会话随机分桶,而来源分析按用户首次访问来源归因。一个用户第一次从搜索进入被分到A版本,第二次从广告进入被分到B版本。在按来源对比时,这个用户会被同时计入“搜索-A”和“广告-B”,两个来源的版本对比都被污染。
验证动作:抽取这类跨会话用户,统计他们在两个版本中的分布比例。如果比例明显偏离随机预期,说明分桶键与归因键不匹配。修正方式是把分桶键改为与归因键一致的标识(例如统一用用户ID或统一用首次来源标识),并在分桶时写入一条不可变的分桶记录。
结果如何影响下一步:修正后,原本被拆散的用户会完整落入一个版本,来源对比的样本才具备可比性。如果修正后差异消失,说明之前的差异来自污染;如果差异仍在,才值得继续排查版本本身的影响。
已经尝试过常规做法仍未解决时,遗漏条件往往不是分析方法,而是分桶与归因的执行顺序。建议按以下顺序处理:
完成这四步后,你手上应该有一份可核查的证据链:每条记录都能说明谁被分到哪个版本、依据什么来源归因、这个判断在什么时间点成立。只有在这条链完整时,流量来源分析中的版本对比才值得继续解读。