收入 A/B 测试
仅收入总额就可以有利于获得更多流量的变体。记录分配、曝光和已完成的收入,以便您可以比较每个曝光访客的收入并评估不确定性。
在决定治疗是否产生有意义的提升之前,通过暴露来标准化收入。
1. 定义实验
发货前,写下:
- 稳定的实验标识符;
- 对照和治疗方案;
- 分配单位,例如访客、用户或团队;
- 主要指标和护栏指标;
- 最小样本量、测试持续时间和停止规则。
一名受试者必须在整个实验期间保持一种变体。
2、初始化Telemetry
npm install telemetry-sh
import telemetry from "telemetry-sh";
telemetry.init(process.env.TELEMETRY_API_KEY);
3. 日志分配和暴露
仅当受试者能够实际体验治疗时才记录暴露情况。
const logExperimentExposure = ({ visitorId, variant }) => {
telemetry.log("experiment_events", {
event_name: "experiment_exposed",
experiment_id: "checkout_copy_v2",
visitor_id: visitorId,
variant, // "control" or "treatment"
});
};
使用内部标识符而不是电子邮件、cookie 值或其他个人数据。
4. 记录已完成的收入
将已完成的非测试购买记录到同一张表中。保留原始分配,而不是从以后可能更改的字段中查找它。
const logPurchase = ({ visitorId, variant, orderId, revenueUsd }) => {
telemetry.log("experiment_events", {
event_name: "purchase_completed",
experiment_id: "checkout_copy_v2",
visitor_id: visitorId,
variant,
order_id: orderId,
revenue_usd: revenueUsd,
});
};
提前确定退款、退款、订阅、货币和重复订单对指标的影响。
5. 比较实验结果
每个曝光访客的收入使不平等的流量无法决定结果。此查询在聚合每个变体之前为每个访问者创建一行:
WITH per_visitor AS (
SELECT
visitor_id,
variant,
MAX(CASE WHEN event_name = 'experiment_exposed' THEN 1 ELSE 0 END)
AS was_exposed,
SUM(CASE WHEN event_name = 'purchase_completed' THEN revenue_usd ELSE 0 END)
AS visitor_revenue_usd
FROM experiment_events
WHERE experiment_id = 'checkout_copy_v2'
AND timestamp_utc >= now() - INTERVAL '30 days'
GROUP BY visitor_id, variant
)
SELECT
variant,
SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END) AS exposed_visitors,
SUM(CASE
WHEN was_exposed = 1 AND visitor_revenue_usd > 0 THEN 1 ELSE 0
END) AS buyers,
ROUND(SUM(visitor_revenue_usd), 2) AS total_revenue_usd,
ROUND(
SUM(visitor_revenue_usd) /
NULLIF(SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END), 0),
2
) AS revenue_per_exposed_visitor_usd,
ROUND(
100.0 * SUM(CASE
WHEN was_exposed = 1 AND visitor_revenue_usd > 0 THEN 1 ELSE 0
END) /
NULLIF(SUM(CASE WHEN was_exposed = 1 THEN 1 ELSE 0 END), 0),
2
) AS purchase_conversion_pct
FROM per_visitor
WHERE was_exposed = 1
GROUP BY variant
ORDER BY variant;
6. 评估不确定性
不要仅根据分数估计来宣布获胜者。收入分布通常是倾斜的,因此导出访客级别的结果以获得适当的置信区间或统计模型。在分析中保留预先指定的决策规则。
在相信结果之前,请检查:
- 样本比例不匹配;
- 分配给多个变体的访客;
- 重复订单事件;
- 测试交易、退款和混合货币;
- 两种变体的转换时间是否相同;
- 错误率或延迟等护栏指标的变化。
后续步骤
将审阅的查询和实验定义保存在一起,以便图表不会偏离其分母。使用 注册激活漏斗配方 来了解早期产品里程碑,使用 升级前的功能采用 来了解非实验性扩展视图。