先给结论:如果你用网站诊断工具看到某个指标在总体层面变差,但按“版本”拆开后每个版本都没那么差,或者某个版本只在个别时段、个别入口成立,最可能的情况不是网站真的退步,而是两个版本的访客被混进了同一份统计。识别样本污染的关键动作,是在采集阶段就把“版本”变成可过滤维度,而不是事后靠总体数字猜。
版本分配本身会改变访客构成。假设你做了一个对照实验:A 版本只对新访客开放,B 版本只对回访访客开放。此时 B 版本的转化率天然更高,这不是污染,而是人群差异。判断污染与结构变化的分界,看两点:
可执行的验证动作:在诊断工具里拉出“版本 × 新老访客”的交叉表。如果某个版本在新访客和回访访客上的差距,明显大于版本之间的差距,优先怀疑是分配规则造成的结构差异,而不是样本污染。
识别出污染来源后,处理方式取决于污染发生在哪一层。
如果污染集中在某个入口或某段时间,并且你可以在诊断工具里用过滤条件把这段数据排除,那么保留其余数据是合理的。前提是你能明确写出排除条件,例如“排除带 ?v=b 且首屏事件缺失的会话”。写不出这个条件,就不要保留,否则后续分析会反复踩同一个坑。
如果访客在会话中被切换版本,但你的埋点里保留了切换时间和切换前版本,就可以按“切换前版本”重新归属事件。改写的前提是原始日志里同时有版本标识和时间戳,且两者能在同一条记录里对齐。缺少时间戳时,改写只能靠推测,不建议采用。
当版本标记来自前端随机数、刷新即变,且没有服务端记录,那么按版本拆分的任何结论都不成立。此时更稳妥的做法是退出这次版本对比,改用其他可区分的维度(如入口来源、设备类型)做诊断,或重新设计一次带服务端标记的测试。退出的代价是浪费已有数据,但比基于污染数据做决策的代价小。
不要只看总体转化率下降就断定污染。可核查的证据链至少包含三步:
一个假设例子:某页面 A 版本记录到 1000 次访问、转化 50 次,B 版本记录到 1000 次访问、转化 30 次。总体转化率 4%。如果其中 200 次 B 版本访问实际上是 A 版本访客被错误标记,那么修正后 A 版本应为 1200 次访问、转化 60 次,B 版本为 800 次访问、转化 20 次。这个例子只用来说明修正方法:先定位错标量,再重算,而不是直接对总体数字做加减。实际错标量需要从日志中逐条核对。
个别样本成立、规模化后出现例外,常见原因是分配规则在小流量下近似均匀,流量上来后受缓存、地域或登录状态影响而倾斜。此时不要急着增加样本量,先检查分配是否依赖了会随规模变化的因素,例如 CDN 缓存命中率、会话保持时长、或某个地区特有的跳转逻辑。
可执行动作:在诊断工具里按地域或缓存状态分组,观察版本分布是否均匀。如果某个分组内版本比例明显偏离设定值,说明分配在该分组内失效。下一步应修正该分组的分配逻辑,再重新采集,而不是在污染数据上继续做对比。这个动作的结果直接决定后续分析是否值得继续:分配均匀后再对比,结论才有意义;仍不均匀,则应退出这次版本对比。