收入 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. 評估不確定性
不要僅根據分數估計來宣佈獲勝者。收入分佈通常是傾斜的,因此匯出訪客級別的結果以獲得適當的置信區間或統計模型。在分析中保留預先指定的決策規則。
在相信結果之前,請檢查:
- 樣本比例不匹配;
- 分配給多個變體的訪客;
- 重複訂單事件;
- 測試交易、退款和混合貨幣;
- 兩種變體的轉換時間是否相同;
- 錯誤率或延遲等護欄指標的變化。
後續步驟
將審閱的查詢和實驗定義儲存在一起,以便圖表不會偏離其分母。使用 註冊啟用漏斗配方 來了解早期產品里程碑,使用 升級前的功能採用 來了解非實驗性擴充套件檢視。