先确认一件事:你看到的差异,是访客真的进了不同版本,还是同一批访客被重复计入不同版本。识别样本污染的核心不是看总量涨跌,而是看同一访客标识能否在多个版本分组里同时出现。如果同一访客既出现在对照组又出现在实验组,那么两组的对比数据就已经被污染,继续比较转化率没有意义。
分流污染指访客被错误地分到了不属于他的版本,比如刷新页面后分组跳变。统计污染指分流本身正确,但上报环节把同一访客算进了两个版本,比如重复上报、跨域丢失标识、缓存导致旧版本脚本继续上报。
两者的处理方向完全不同。分流污染要修分流逻辑,统计污染要修上报链路。判断方法很简单:在百度统计里按访客标识(如 uvid 或自定义的访客ID)拉一份明细,看同一标识是否对应两个版本值。如果对应两个版本,且时间戳接近,多半是分流或上报重复;如果同一标识在不同天分属不同版本,则更可能是分流不稳定。
这是最有利的情况。直接导出或查询带访客标识和版本字段的明细数据,按访客标识分组,统计每个标识出现的版本数量。如果某个标识对应两个及以上版本,就标记为污染样本。
实施动作:先算污染样本占该版本总访客的比例。如果比例很低,比如在个位数百分比以内,可以先剔除污染样本后再比较;如果比例较高,说明分流或上报链路存在系统性问题,剔除只能掩盖问题,下一步应该去查分流脚本和上报时机,而不是继续做版本对比。
这里的假设是:访客标识在两次上报中保持一致。如果标识本身会变(比如每次刷新重新生成),那么同一真实访客会被当成多个新访客,污染识别就会失效,此时需要先固定标识生成逻辑。
很多情况下百度统计的报表只给聚合数据,看不到单个访客。这时只能靠间接证据推断污染是否存在。
可用的证据链包括:版本A和版本B的访客数之和是否明显超过总访客数;同一时间段内两个版本的来源结构是否异常相似或异常分化;页面停留时长分布是否出现不该有的重叠。这些都不是直接证据,只能提示“可能存在污染”,不能单独证明污染已经发生。
实施动作:如果聚合数据出现上述异常,先不要下结论,而是补一段时间的访客级埋点,或者临时在版本字段旁加一个会话序号,用来观察同一会话是否被重复分配到两个版本。补数据期间不要同时改分流逻辑,否则新旧数据混在一起更难判断。
假设某页面有两个版本,分流规则是按访客标识取模。某天发现版本A访客数比版本B高出很多,但两版页面内容差异很小。此时先查访客标识是否稳定:如果标识在用户清理缓存或换设备后会变,那么同一真实用户可能被重新分配到另一版本,造成两个版本都计入该用户的部分行为。这个例子说明,标识不稳定时,污染识别会从“同一标识跨版本”退化为“无法追踪同一用户”,需要先解决标识问题,再谈版本对比。
确认污染后,处理顺序建议是:先固定访客标识和分流逻辑,再重新采集一段干净数据,最后才做版本比较。不要在污染数据上直接做剔除后对比,因为剔除规则本身可能引入新的偏差。
如果污染比例很低,且你的决策只是判断“哪个版本明显更好”,那么剔除污染样本后观察主要指标方向,通常够用。但如果决策涉及精细的转化率差异,或者两个版本差距本来就在几个百分点以内,污染样本就足以改变结论,此时必须重新采集。
例外情况:如果污染只发生在某个来源渠道(比如某个外部跳转丢失了版本参数),而其他渠道正常,那么可以按渠道分层分析,不必整体推翻数据。前提是你能在百度统计里按来源拆分并确认污染集中在哪个渠道。
访客数或某版本数据异常,不一定都是样本污染。缓存导致旧版本页面继续被访问、上报延迟导致数据跨天归属、同一用户在多个设备上访问,都会造成类似现象。这些解释与污染的区别在于:缓存和延迟通常表现为时间上的错位,设备差异表现为标识不同但行为相似。只有同一访客标识明确出现在两个版本分组里,才是污染的直接证据。
因此,识别样本污染的关键动作是:先确认访客标识是否稳定,再确认同一标识是否跨版本出现,最后才决定是剔除、分层还是重新采集。跳过前两步直接看聚合报表,很容易把缓存或延迟误判成污染。