识别样本污染的关键不是看总量差异,而是先确认分流单位与分析单位是否一致。如果分流按访客或设备进行,而分析代码按会话、页面或事件统计,同一个访客可能把两个版本的数据都带进同一份报表,此时版本对比的差异就混入了样本重叠,不能直接当作版本效果。
假设一次实验把访客分成A、B两组:新访客进入A版本,回访访客进入B版本。分流单位是访客,分析单位也应当是访客。如果流量分析代码在页面加载时按会话打点,一个访客当天多次访问就可能产生多个会话记录,其中一部分落在A版本,一部分落在B版本。此时A、B两组的会话数之和会大于去重访客数,样本污染已经出现。
可操作的检查动作是:在分析代码中同时记录版本标识和稳定的访客标识,然后按访客标识去重,统计有多少访客同时出现在两个版本中。如果这个重叠数量不为零,说明分流没有真正隔离样本。下一步不应继续比较转化率,而应先修正分流逻辑或调整分析口径。
如果分流由服务端或前端在访客首次进入时完成,并且访客标识在多次访问中保持一致,那么分析代码应按访客层聚合,而不是按会话层聚合。具体动作是:在代码中把版本标识写入访客级属性,报表按访客去重后计算指标。这样做的结果是,同一访客的多次会话只被计入一个版本,版本间对比不会被跨版本会话稀释。
例外是访客主动清除标识或跨设备访问。此时同一自然人可能被拆成多个访客标识,分别进入不同版本。这种污染无法靠站内代码完全消除,需要在分析结论中注明,或改用登录账号作为分流单位。
如果分流是在每次会话开始时随机分配,那么同一访客在不同会话中可能看到不同版本。此时按访客去重反而会掩盖真实分配,正确做法是按会话层分析,并明确每个会话只属于一个版本。具体动作是:在会话开始时写入版本标识,后续页面浏览和事件都继承该会话的版本,不重新分配。这样做的结果是,会话内的行为数据不会跨版本混入。
例外是会话超时或跨天访问。如果会话在午夜重置,同一访客的连续访问可能被拆成两个会话并进入不同版本。此时需要在分析代码中检查会话重置规则,确认版本标识是否随会话重新生成。若重新生成,跨天对比就要按天分段,而不是把多天数据合并成一个版本对比。
不要只看两个版本的总量差异。总量差异可能来自真实版本效果,也可能来自样本重叠、流量来源变化或统计口径不同。可核查的证据链包括:
这些证据只能说明样本是否重叠,不能单独证明版本效果。第三方估算流量、搜索引擎报告和站内统计的口径本来就不同,不能因为某一项数字归零或突增就断定分流正确。归零还可能来自代码未触发、过滤规则误伤或数据延迟,需要结合代码触发日志和分流日志一起判断。
第一步动作是给分析代码增加版本标识和访客标识两个字段,并在报表中按访客去重。如果去重后重叠访客数为零,说明分流和分析单位一致,可以继续做版本对比。如果重叠访客数不为零,下一步不是调整指标,而是回到分流环节,确认版本分配是否在正确的层级完成。
第二步动作是检查会话重置规则。如果版本标识随会话重新生成,而分流本应在访客层完成,就需要把版本标识改为访客级持久化。改完后重新跑一段观察期,再按访客去重统计重叠数量。只有重叠数量归零或稳定在可解释范围内,版本对比的数据才具备可用前提。
如果业务前提已经变化,例如从按访客分流改为按会话分流,那么分析口径也要同步切换。旧口径下的历史数据不能直接与新口径合并对比,应分段标注,避免把口径变化误读为版本效果。