SuperAPI AI 工具集

ab-test-setup

数据与分析

查看项目

更新于 10-14 09:25

技能介绍

用途与范围

ab-test-setup 用于设计一个能回答特定产品问题的实验,并在让用户接触实验变体之前验证其假设。该流程本身不能保证实验有效性。它记录的产出包括:停止规则、在既定假设下估算的样本需求,以及可评审的假设与决策标准。

前置条件

必须拥有:清晰的用户问题、可访问的分析数据源、粗略估算的流量规模。

假设质量检查清单:有效假设应包含——观察或证据、单一且具体的变化、方向性预期、明确的目标受众、可度量的成功标准。

假设锁定(硬性门槛)

在设计变体或指标之前,必须:展示最终假设,并明确目标受众、主要指标、预期的效应方向、最小可检测效应(MDE)。使用任务中已商定的假设;如果缺少某个对上线至关重要的选择,应提出具体选择以供确认,同时继续独立分析。不要为已获授权的决定反复请求批准。

假设与有效性检查(强制)

明确列出关于以下方面的假设:流量稳定性、用户独立性、指标可靠性、随机化质量、外部因素(季节性、活动、发布)。如果假设薄弱或被违反,应警告用户,并建议推迟或重新设计测试。

测试类型选择

选择最简单且有效的测试:A/B 测试(单一变化、两个变体)、A/B/n 测试(多个变体、需要更高流量)、多变量测试 MVT(交互效应、需要极高流量)、拆分 URL 测试(重大结构性变化)。默认使用 A/B,除非有明确理由选择其他类型。

指标定义

主要指标(强制):用于评估成功的单一指标,与假设直接相关,在启动前预先定义并冻结。次要指标:提供背景、解释结果原因,不得覆盖主要指标。护栏指标:不得出现退化的指标,用于防止有害的“胜利”,若显著为负则触发测试停止。

样本量与时长

预先定义:基线率、MDE、显著性水平 alpha(常见为 0.05,对应 95% 置信度)、统计功效(通常为 80%)。估算:每个变体所需样本量、预期测试时长。没有现实的样本量估算就不要继续推进。

追踪验证(进入第 8 关前必需)

在进入下方的“执行就绪门”之前,运行此检查清单,使“追踪已验证”具有具体含义:事件触发——在 staging 或调试页面上触发主要和次要指标依赖的每个事件(注册、加入购物车、自定义事件),确认它在相应管道记录的延迟内到达,并记录观察到的延迟。变体归因——验证变体分配 ID 附加到每个触发事件上,而不仅是入口事件;使用分析的原始事件视图对每个变体抽样比较 5 个以上事件。去重——确认用户重新加载页面不会导致事件被重复计数;使用稳定的事件/交易 ID,并记录跨客户端/服务端的去重;仅凭变体标签不是唯一事件键。样本随机化——针对配置的分配检查样本比例不匹配,使用预先指定的统计检查并保留足够记录;对 100 条记录固定应用 ±5% 区间不是有效的通用随机化测试;检查分配稳定性、单位独立性和缺失的暴露记录。护栏指标管道——§6 定义的每个护栏指标在测试启动时都必须有可用的仪表盘或警报。如果上述任何一项失败,停止并在第 8 关之前解决。

执行就绪门(硬性停止)

只有以下全部为真时,才能进入实施:假设已锁定、主要指标已冻结、样本量已计算、测试时长已定义、护栏已设置、追踪已验证。如果缺少任何一项,停止并解决。

测试运行期间

应做:监控技术健康、记录外部因素。不应做:因“结果好看”而提前停止、测试中途更改变体、增加新的流量来源、重新定义成功标准。

结果分析

分析纪律:解释结果时——不要泛化到测试人群之外、不要声称超出所测变化的因果关系、不要覆盖护栏失败、将统计显著性与业务判断分开。

解读结果:显著正向 → 考虑全量发布;显著负向 → 拒绝变体,记录学习;不确定 → 报告不确定性,使用预先指定的继续规则或设计新测试;护栏失败 → 不得发布,即使主要指标获胜。

文档与学习

测试记录(强制)应记录:假设、变体、指标、样本量与实际达成、结果、决策、学习、后续想法。将记录存放在共享、可搜索的位置,以避免重复失败。

拒绝条件(安全)

在以下情况拒绝继续:基线率未知且无法估算、流量不足以检测 MDE、主要指标未定义、在缺乏适当设计的情况下更改多个变量、假设无法清晰陈述。解释原因并建议下一步。

关键原则(不可妥协)

每次测试一个假设、一个主要指标、启动前承诺、不偷看、学习重于获胜、统计严谨优先。

何时使用

当产品变化有足够的合格流量进行随机比较且结果可度量时使用。对于低流量上线或定性发现,应考虑可用性研究或描述性度量,而不是声称因果提升。

样本量计算示例

一个说明性的二元指标:估计将变化从 10% 提升到 11%(一个百分点,相对提升 10%)、50/50 分配、双侧 alpha 0.05、功效 0.80 时每个变体的样本量。此 Python 3 大样本近似使用 Cohen 的比例效应量:

from math import asin, ceil, sqrt
from statistics import NormalDist

baseline, variant = 0.10, 0.11  # illustrative assumptions, not measured data
alpha, power = 0.05, 0.80
h = abs(2 * asin(sqrt(variant)) - 2 * asin(sqrt(baseline)))
z = NormalDist()
per_variant = ceil(2 * (z.inv_cdf(1 - alpha / 2) + z.inv_cdf(power)) ** 2 / h ** 2)
print(per_variant)

这些假设下的预期输出:每个变体 14745 次观察。

该计算假设独立单位、单一二元结果、固定时间范围且无多重性调整。它不适用于聚类或重复观察、序贯决策或连续收入指标。在将样本估算转化为日历时长之前,需考虑合格流量、流失、结果延迟和抽样单位。假设比率相等时效应量为零,无法用有限样本检测该差异。

完整示例

观察:用户放弃冗长的注册表单。变化:移除一个可选字段;单位:账号;分配:50/50 且稳定。主要指标:24 小时内完成的注册 / 合格的已分配账号。护栏:验证失败和支持请求。启动前:根据基线和 MDE 估算样本需求,验证曝光和完成 ID,定义分析窗口和停止规则。预期报告:计数、绝对/相对效应、区间、数据质量检查、护栏结果以及带有其局限性的决策;绝不只是“p < 0.05,发布”。

局限性

聚类用户、溢出效应和重复观察可能使独立样本计算失效。序贯监控需要规划的序贯方法;固定时间范围的显著性不能授权反复偷看。追踪缺口或样本比例不匹配可能使推断失效,即使主要指标表现良好。本技能不会自动激活标志、发布变体或建立监管合规。

(说明:资料中未提供收费、价格、平台支持范围等具体信息。)