先给结论:当同一批访客被随机或半随机地分到不同版本时,样本污染最可能表现为“分组边界与时间、入口或身份不一致”。你不需要完整的实验平台权限,也能用手中的一份导出文件做最小诊断:按访客标识、首次进入时间、来源入口三个字段交叉分组,看同一访客是否出现在多个版本里,或某个版本是否集中了特定入口的访客。若出现这两种情况之一,就不能把版本间的差异直接当作版本效果,而应先修正分组或缩小结论范围。
样本污染不是一个单一故障,它至少有三个可区分的来源。分配层污染指访客在进入时被分到A版,但后续请求又被分到B版;记录层污染指同一访客的多次行为被写进了两个版本的数据表;回传层污染指前端展示的是A版,但埋点或订单回传时带上了B版的标识。三者的证据不同:分配层看访客标识是否跨版本出现,记录层看同一标识在同一时间窗内是否有重复行,回传层看展示版本与回传版本字段是否一致。
如果你只有一份按天汇总的报表,没有访客级明细,那你能做的最小动作是检查分组比例是否随时间突变。假设某版本在连续三天里占比从五成降到两成,而总流量没有明显变化,这更可能指向分配逻辑或入口结构变化,而不是访客自然流失。这个判断不能证明污染一定存在,因为促销入口切换、渠道投放调整也会造成同样的比例变化;它只能帮你决定下一步是否值得去申请访客级数据。
拿到访客级明细后,第一步不是算转化率,而是查重。把访客标识、版本标识、首次进入时间三列单独取出,按访客标识分组,统计每个访客出现的不同版本数量。如果一个访客标识对应两个以上版本,且这些记录的时间间隔小于你设定的会话窗口,就属于需要标记的疑似污染样本。
这里有一个容易忽略的取舍:严格剔除所有跨版本访客,会让样本量下降,也可能把真实的多设备用户误删;完全保留,则版本差异被稀释。较稳妥的做法是先标记、不删除,分别计算“含跨版本访客”和“不含跨版本访客”两组结果。如果两组结论方向一致,污染对决策的影响有限;如果方向相反,说明当前数据不足以支持版本比较,应先修复分配逻辑。
实际动作示例:在导出表中新增一列“跨版本标记”,对每个访客标识统计其版本去重数,大于1则标为1。然后按该列筛选,比较标记组与未标记组的入口来源分布。如果标记组集中在某个特定入口,比如某个广告落地页或某个旧链接,那么污染更可能是入口跳转造成的,而不是随机分配算法本身出错。这个结果会直接改变下一步:优先检查该入口的跳转参数,而不是重写整个分流服务。
样本污染常被误判为“版本效果波动”,因为分组切换的时间点与数据统计的时间点没有对齐。你需要确认三件事:版本切换的具体时刻、数据表中时间字段的时区、以及访客首次进入与后续行为的时间差。如果切换发生在统计周期中间,而报表按自然日聚合,那么切换当天的数据会同时包含两个版本,这部分样本天然是混合的。
入口边界同样重要。同一个访客可能从搜索进入A版,之后从收藏夹进入B版。如果你的分析对象是“首次进入版本”,那么后续从其他入口进入的记录不应算作该版本的独立访客。判断方法很简单:按访客标识取首次进入时间对应的版本,作为该访客的归属版本,再看后续行为是否发生在其他版本下。若大量后续行为落在非归属版本,说明分流没有保持一致性,样本污染已经影响到行为数据。
这一步能推出的结论是:污染是否与时间或入口强相关。不能推出的是:哪个版本更好。因为被污染的部分本身不是随机样本,它的表现不能代表任何一个版本的正常水平。
如果你没有实验平台的后台权限,只能拿到一份前端埋点导出或一份订单明细,仍然可以建立最小证据链。以订单明细为例,假设表中包含订单号、下单时间、落地页版本标识、支付版本标识四个字段。你可以先检查同一订单号的落地页版本与支付版本是否一致。若不一致的比例明显高于你预期的正常误差,就说明版本标识在链路中发生了漂移。
这里的“明显高于”需要一个参照,而不是拍脑袋。你可以用同一时间段内、未参与版本切换的普通页面作为对照,看它们的标识一致率是多少。对照组的价值在于:它帮你排除“标识字段本身就经常为空或错位”这种系统性记录问题。如果对照组一致率接近百分之百,而实验组一致率明显偏低,污染更可能来自版本分配环节;如果两组一致率都低,问题更可能在埋点或回传本身,与版本分配无关。
需要说明适用条件:这种方法依赖订单号或访客标识能够跨表关联。如果导出数据已经做了匿名化或聚合,无法关联到个体,那么你能做的最小动作只剩检查分组比例和入口分布,不能做跨版本查重,也就不能区分分配层污染与记录层污染。
根据前面的检查,你会落到三种情形之一,对应不同的下一步。
最后提醒一个判断纪律:请求量、抓取量或某个分组计数归零,不能单独证明分流处理正确。它也可能是入口关闭、统计任务失败或时间窗口错位造成的。只有当你同时看到分组边界与访客身份、时间、入口三者对齐时,才能说样本污染已经被识别并控制住。