复杂AB实验

本文探讨了AB测试的基本问题,包括检验指标分类、多天累计值的计算,以及在不能进行AB实验的情况下如何处理。重点介绍了delta检验、贝叶斯检验和不同假设检验如z检验、t检验、F检验和卡方检验的应用。同时,讨论了当AB实验结果不显著时的解决策略,并提到了DID方法和平行趋势检验。内容涵盖了AB实验的完整流程和关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 基本问题

检验指标分类

AB测试的检验指标可以分为两大类:绝对值指标、比例值指标。两者的方差计算方式不同。
其中比例值根据分母不同又可分为两类:分母为人次(留存率、转化率等)、分母为行为次数(曝光点击率)。
分母为人次,分流单位和分析单位相同,可以用 z z z检验;分母为行为次数,分析单位之间不独立,要用 d e l t a delta delta检验。

多天累计值

将指标在多天的表现累计合并计算。比如某行为的人均次数,则分母是实验期间该行为的总次数,分子是实验期间进组的去重人数。

优点:保证样本之间独立;增加样本量,显著性可以随着累积而增加。

留存率的多天累计:分天计算每天新进组人的留存率,再根据人数加权。

不能用AB的情况

  • 不能控制干预变量时(比如看直播对用户的影响,不能强制一部分人看,一部分人不看)
  • 所占用流量过多
  • 策略可能损害用户体验

AB实验步骤

确定实验策略;制定实验的观察指标;计算样本量(显著性水平/统计功效/需要观察到的指标最小提升水平/指标方差);实验开发上线;数据回收。

AB不显著

  • 是否达到最小样本量
  • DID消除固定差异
  • 检查实验链路,看是否所有人都被策略触达(渗透率低,可以PSM)

2. delta检验

见上篇,适用于分流单元和分析单元不同的情况。

3. 贝叶斯检验

优点:

  • 不需要考虑样本量。
  • 可以得到后验参数的分布,进而量化指标提升的概率、指标提升的大小。

贝叶斯派 VS 频率派 基本理论:

先验分布 π ( θ ) \pi(\theta) π(θ) + 样本数据 P ( X ∣ θ ) P(X|\theta) P(Xθ) = 后验分布 π ( θ ∣ X ) \pi(\theta|X) π(θX)

共轭先验分布:贝塔分布 与 二项分布

θ \theta

### A/B 测试的实现方法与应用场景 #### 实现方法 A/B 测试的核心在于通过随机化的方式将用户分为两组或多组,分别暴露于不同的版本(通常称为控制组和实验组),并比较这些版本的表现差异。以下是常见的实现方法: 1. **简单统计工具的应用** 对于加性指标(additive metrics),可以采用简单的统计学方法来评估两个版本之间的显著性差异。例如,t检验或z检验能够快速判断两组数据是否存在统计意义上的不同[^1]。 2. **贝叶斯方法** 使用贝叶斯推断的方法可以帮助估计每个版本的效果分布,并进一步量化两者之间差距的概率密度函数。这种方法尤其适用于样本量较小的情况或者需要动态调整决策的情形[^2]。 3. **Bootstrap 方法** 当面对复杂的数据结构或非正态分布时,可以通过重采样技术(bootstrap resampling)模拟大量可能的结果集,从而获得更加稳健的信心区间估计。 4. **多变量测试扩展** 如果不止一个因素被改变,则进入多变量测试领域(Multivariate Testing),这允许同时探索多个维度上的变化如何共同影响目标度量标准。 #### 应用场景 A/B 测试广泛应用于各种业务环境中以优化用户体验和服务效率: 1. **网站设计改进** - 更改按钮颜色、布局样式等UI元素看看是否会提高点击率CTR。 2. **营销活动效果测量** - 不同广告文案、图片风格对转化率的影响研究;邮件主题行试验寻找最佳打开比例方案。 3. **产品功能迭代验证** - 新增特性前先做小范围灰度发布收集反馈再决定全面上线与否。 4. **推荐算法性能提升** - 修改排序逻辑观察是否能带来更高的参与度指标如观看时间延长。 5. **定价策略探讨** - 设置多种价格水平组合看哪个最吸引顾客购买意愿最强。 ```python import numpy as np from scipy import stats def ab_test(control_data, experiment_data): t_statistic, p_value = stats.ttest_ind(control_data, experiment_data) return t_statistic, p_value control_group = np.random.normal(loc=0.5, scale=0.1, size=1000) experiment_group = np.random.normal(loc=0.6, scale=0.1, size=1000) result_tstat, result_pval = ab_test(control_group, experiment_group) print(f"T-statistic: {result_tstat}, P-value: {result_pval}") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值