参考
本质是一种对照组实验思维
概念
定义
AB测试是一种常用的实验设计方法,用于比较两个或多个(但必须是单变量)版本的产品、服务或功能,以确定哪个版本在用户体验、转化率或其他关键指标方面表现更好。在AB测试中,将用户随机(事实上要考虑怎么分组)分成几组,每组分配不同的版本,然后收集和分析每个版本的表现数据。通过AB测试,企业可以更好地了解用户行为和喜好,优化产品设计和营销策略,从而提升用户体验和业务表现。
拆解
对象:Web或App界面或流程或模型
要点:两个版本(A/B)或多个版本(A/B/N),同一时间维度,让组成成分相同(相似)的访客群组随机访问
目的:收集用户体验数据和业务数据,分析、评估、采用最好版本
- 决策功能上线:
- 通过数据验证新功能的效果
- 降低功能上线风险
- 提供数据支持的决策依据
- 效果评估与收益计算:
- 比较不同版本的优劣
- 量化功能改进带来的收益
- 评估改动的投资回报率
- 决策功能上线:
核心思想:
(1)多个方案同时并行测试
(2)每个方案只有一个变量不同
(3)样本组同质化
(4)以某种规则优胜劣汰原理
- 基于假设检验的统计方法
- 通过对比同质样本组来评估改动效果
- 原假设:改动对核心指标无显著影响
- 通过p值判断是否拒绝原假设
- 本质
- 同质样本的对照实验
- 确保实验组和对照组具有相似的特征分布
- 控制变量,只改变一个因素
- 通过随机分组保证样本的代表性
步骤
- 分析现状,建立假设:分析业务,确定最高优先级的改进点,作出假设,提出优化建议。
- 指标设定:明确要测试的目标和假设。确定要比较的指标,例如点击率、转化率或用户满意度等。设置主要指标来衡量版本的优劣;设置辅助指标来评估其他影响。
- 版本制作:设计与开发,创建不同的版本(A、B),可以是网页、应用程序界面或功能的不同变体。
- 确定测试时长:确定测试进行的时长。
- 确定分组(分流)方案:将用户随机分配到不同的版本组(A组和B组),确定分流比例与批次(分流要保证同时、同质性),以确保实验结果的可靠性。
- 实施实验:在真实环境中展示不同版本给用户,收集用户行为数据或反馈。
- 数据收集:收集每个版本的数据,包括用户访问量、点击率、转化率等。
- 统计分析:使用统计方法分析数据,比较不同版本之间的差异是否显著。
- 结果解释:根据统计分析的结果,确定哪个版本在指定指标上表现更好。
- 结论与决策:根据实验结果,决定是否采用新版本或继续优化。①确定发布新版本;②调整分流比例继续测试;③优化迭代方案重新开发,回到步骤0。
特点
优点
- 可以直观地比较不同版本的效果。
- 可以减少决策的风险,基于数据做出决策。
- 可以优化产品或服务,提高用户体验和转化率。
缺点
- 难以平衡实验组的随机性和代表性。
- 控制实验环境,避免外部因素的干扰。
- 必须确保样本量足够大,以获得可靠的结果。
辛普森悖论
定义
- 在AB测试中,当数据被分组分析时,可能出现与整体数据相反的结论
- 子组趋势与总体趋势不一致的现象
例子
假设我们在测试一个新的推荐算法,将用户分为实验组(新算法)和对照组(旧算法),并按用户活跃度分为高活跃和低活跃两组:
高活跃用户组:
- 实验组:1000个用户,点击率 5%
- 对照组:2000个用户,点击率 4%
- 结论:新算法效果更好(5% > 4%)
低活跃用户组:
- 实验组:2000个用户,点击率 2%
- 对照组:1000个用户,点击率 1%
- 结论:新算法效果更好(2% > 1%)
总体数据:
- 实验组:3000个用户,平均点击率 3%
- 对照组:3000个用户,平均点击率 3%
- 结论:新旧算法效果相同(3% = 3%)
悖论出现:
- 在分组分析时,新算法在两个用户组中都表现更好
- 但在总体数据中,新旧算法表现相同
- 原因:高活跃用户组中对照组用户更多,而低活跃用户组中实验组用户更多,导致总体数据出现偏差
产生原因
样本分配不均:
- 实验组和对照组特征分布不一致
- 某些特征在组间分布不均衡
混杂因素影响:
- 存在未控制的变量影响结果
- 不同组别受到不同因素的影响
影响
误导决策:
- 可能得出错误的实验结论
- 影响产品优化方向
资源浪费:
- 基于错误结论进行优化
- 造成时间和资源的浪费
避免方法
合理分组:
- 确保实验组和对照组特征相似
- 使用分层抽样保证样本代表性
控制变量:
- 识别并控制可能的混杂因素
- 使用协变量调整分析结果
多维度分析:
- 从不同维度验证实验结果
- 关注子组分析结果
样本选择
- 如何把样本分出来
随机
- 随机数
- 手机尾号为0
正交分桶
正交分桶(Orthogonal Bucketing)是一种在实验设计中常用的技术,用于确保实验组和对照组之间的分组是相互独立且均匀的。
正交分桶的目的是减少实验中(随机分组导致的)因变量分布不均匀而引起的偏差,从而使实验结果更加可靠和准确。
- 可能是一个实验组,两个对照组。为了保证两个对照组之间再做一次平稳性实验。
实现步骤
- 确定维度:首先确定用于分组的维度,可以是用户属性(如年龄、性别)、行为特征(如点击次数、购买记录)等。
- 创建分桶:针对每个维度,创建多个不同的分桶(桶),确保每个桶在实验组和对照组中都有相等数量的用户。
- 组合分桶:将不同维度的分桶进行组合,确保每个组合在实验组和对照组中都有相等数量的用户。
- 随机分配:最后,将用户随机分配到不同的组合中,以确保实验组和对照组之间的分组是相互独立的。
特点
优点
- 减少偏差:通过正交分桶,可以减少由于变量分布不均匀而引起的偏差,使实验结果更加可靠。
- 结果可靠性:确保实验组和对照组之间的分组是均匀和独立的,有助于获得更准确和可信的实验结果。
缺点
- 维度选择:选择合适的维度进行分桶,确保维度之间相互独立。
- 分桶数量:合理确定每个维度的分桶数量,以确保每个组合中都有足够的用户。
- 随机性:确保随机分配用户到不同组合中,以消除其他因素对实验结果的影响。
确定分布与检验方式
- 概统知识
分布
正态分布
- 定义:连续型随机变量的概率分布,呈钟形曲线
- 概率密度函数:
$$
f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}
$$
其中:- μ:均值,决定分布中心位置
- σ:标准差,决定分布离散程度
- π:圆周率
- e:自然对数的底数
- 特点:
- 对称性:以均值为中心对称
- 集中性:约68%的数据落在[μ-σ, μ+σ]区间
- 渐近性:向两端无限延伸
- 应用:
- 大样本均值分布
- 误差项分布
- 自然现象测量值
- 标准化:
将正态分布转换为标准正态分布:
$$
Z = \frac{X - \mu}{\sigma}
$$
t分布
- 定义:小样本下的均值分布
- 概率密度函数:
$$
f(t) = \frac{\Gamma(\frac{\nu+1}{2})}{\sqrt{\nu\pi}\Gamma(\frac{\nu}{2})}(1+\frac{t^2}{\nu})^{-\frac{\nu+1}{2}}
$$
其中:- ν:自由度
- Γ:伽马函数
- 特点:
- 比正态分布更扁平
- 自由度越大越接近正态分布
- 尾部更厚
- 应用:
- 小样本均值检验
- 回归系数显著性检验
- 配对样本检验
- t统计量:
$$
t = \frac{\bar{X} - \mu}{s/\sqrt{n}}
$$
其中:- $\bar{X}$:样本均值
- μ:总体均值
- s:样本标准差
- n:样本量
f分布
- 定义:两个独立卡方分布随机变量之比的分布
- 概率密度函数:
$$
f(x) = \frac{\Gamma(\frac{\nu_1+\nu_2}{2})}{\Gamma(\frac{\nu_1}{2})\Gamma(\frac{\nu_2}{2})}(\frac{\nu_1}{\nu_2})^{\frac{\nu_1}{2}}x^{\frac{\nu_1}{2}-1}(1+\frac{\nu_1}{\nu_2}x)^{-\frac{\nu_1+\nu_2}{2}}
$$
其中:- ν₁:分子自由度
- ν₂:分母自由度
- 特点:
- 非负性
- 右偏分布
- 有两个自由度参数
- 应用:
- 方差分析
- 回归分析
- 方差齐性检验
- F统计量:
$$
F = \frac{s_1^2/\sigma_1^2}{s_2^2/\sigma_2^2}
$$
其中:- s₁², s₂²:样本方差
- σ₁², σ₂²:总体方差
检验
t检验
- 样本情况:适用于小样本,并且未知分布与统计量(标准差未知)
- 数据类型:适用于连续型数据,常用于比较实验组和对照组之间的均值差异,例如药物疗效、广告效果等。
- 假设条件:基本假设是数据服从正态分布,且方差相等。
- 统计量:以t统计量为基础,通过比较样本均值与总体均值差异和样本方差来进行假设检验。
- 计算公式:
- 单样本t检验:
$ t = \frac{\bar{X} - \mu_0}{s/\sqrt{n}} $ - 独立样本t检验:
$ t = \frac{\bar{X}_1 - \bar{X}_2}{\sqrt{\frac{s_1^2}{n_1} + \frac{s_2^2}{n_2}}}$ - 配对样本t检验:
$t = \frac{\bar{d}}{s_d/\sqrt{n}} $
- 单样本t检验:
- 置信区间:
$ \bar{X} \pm t_{\alpha/2}(n-1)\frac{s}{\sqrt{n}} $
z检验
- 样本情况:适用于大样本,并且已知分布与统计量(标准差已知)
- 数据类型:一般适用于连续型数据或二项分布数据,例如人口比例、产品质量、广告点击率等。
- 假设条件:基本假设是数据服从正态分布,且已知总体方差。
- 统计量:以z统计量为基础,通过比较样本均值与总体均值之间的差异来进行假设检验。
- 计算公式:
- 均值检验:
$ z = \frac{\bar{X} - \mu_0}{\sigma/\sqrt{n}} $ - 比例检验:
$ z = \frac{\hat{p} - p_0}{\sqrt{\frac{p_0(1-p_0)}{n}}} $
- 均值检验:
- 置信区间:
$ \bar{X} \pm z_{\alpha/2}\frac{\sigma}{\sqrt{n}} $
卡方检验
- 样本情况:主要用于比较观察到的分类数据与期望的理论分布之间的差异,包括独立性检验、拟合度检验等。
- 数据类型:适用于分类数据,通常以频数或频率的形式呈现。
- 假设条件:基本假设是数据符合特定的理论分布,如服从正态分布或其他特定分布。
- 统计量:以卡方统计量为基础,通过比较观察频数和期望频数之间的差异来进行假设检验。
- 计算公式:
拟合优度检验:
$$\chi^2 = \sum_{i=1}^{k}\frac{(O_i - E_i)^2}{E_i}$$独立性检验:
$$\chi^2 = \sum_{i=1}^{r}\sum_{j=1}^{c}\frac{(O_{ij} - E_{ij})^2}{E_{ij}}$$
其中:
- O:观察频数
- E:期望频数
- k:类别数
- r:行数
- c:列数
样本量确定
影响因素:
- 预期效果大小(δ)
- 显著性水平(α)
- 检验效能(1-β)
- 总体方差(σ²)
- 实验设计类型
计算方法:
- 基于效应量:
$ n = \frac{2(Z_{\alpha/2} + Z_{\beta})^2\sigma^2}{\delta^2} $ - 基于比例:
$ n = \frac{(Z_{\alpha/2} + Z_{\beta})^2p(1-p)}{\delta^2} $ - 基于相关系数:
$ n = \frac{(Z_{\alpha/2} + Z_{\beta})^2}{(\ln\frac{1+r}{1-r})^2} + 3 $
- 基于效应量:
样本量调整:
- 考虑流失率:
$ n_{adjusted} = \frac{n}{1-r} $
其中r为预期流失率 - 考虑分层因素:
$ n_{strata} = \sum_{i=1}^{k}\frac{n_i}{w_i} $
其中w_i为各层权重
- 考虑流失率:
检验结果
假设检验的两类错误
假设检验是一种推断统计方法,用于根据样本数据对总体参数做出推断。在假设检验中,通常会建立两类假设:原假设(𝐻0)和备择假设(𝐻1)。
第一类错误——“去真”
- 定义:第一类错误指的是当原假设为真时拒绝原假设的错误。换句话说,第一类错误发生在我们错误地认为有显著性差异,而实际上并不存在显著性差异的情况下。
- 表示:第一类错误的概率通常用 𝛼 表示,称为显著性水平,通常取0.05或0.01。
- 数学表达:
$$
P(拒绝H_0|H_0为真) = \alpha
$$ - 结果:如果发生第一类错误,我们会错误地拒绝原假设,认为发现了显著性差异,但实际上并没有。
- 控制方法:
- 降低显著性水平α
- 增加样本量
- 使用更严格的检验标准
第二类错误——“存伪”
- 定义:第二类错误指的是当备择假设为真时未能拒绝原假设的错误。换句话说,第二类错误发生在我们未能发现实际存在的显著性差异的情况下。
- 表示:第二类错误的概率通常用 𝛽 表示。
- 数学表达:
$$
P(接受H_0|H_1为真) = \beta
$$ - 结果:如果发生第二类错误,我们未能拒绝原假设,认为没有发现显著性差异,但实际上存在显著性差异。
- 控制方法:
- 增加样本量
- 提高检验效能(1-β)
- 选择合适的检验方法
检验效能
- 定义:正确拒绝错误原假设的概率
- 数学表达:
$ Power = 1 - \beta = P(拒绝H_0|H_1为真) $ - 影响因素:
- 样本量
- 效应量
- 显著性水平
- 检验方法
例子
- 原假设是”给潜在客户发短信没用”,第一类错误就是”确实没用但我们认为有用”,第二类错误就是”发短信有用但我们接受了发短信没用的原假设”
- 事实上就应该管它有没用多发点,
- 此时应该更严格控制第二类错误
- 数学表达:
$ H_0: \mu_{短信} = \mu_{无短信} $
$ H_1: \mu_{短信} > \mu_{无短信} $
其中μ表示平均转化率
置信度与置信区间
- 在假设检验的过程中,我们往往采用样本数据特征来估计整体的数据特征。
- 在中心极限定理里,我们知道从总体中进行N次样本抽取,N次样本的均值会围绕总体均值上下波动。
- 因此,置信区间就是为总体的均值提供了一个可波动的范围,置信区间与置信度是相对应的。
- 例如,在95%的置信度下,置信区间为[a,b],也就是说,抽取100次样本,其中有95次样本的均值能够落在[a,b]范围内。
置信区间计算
总体均值置信区间:
- 总体标准差已知:
$ \bar{X} \pm z_{\alpha/2}\frac{\sigma}{\sqrt{n}} $ - 总体标准差未知:
$ \bar{X} \pm t_{\alpha/2}(n-1)\frac{s}{\sqrt{n}} $
- 总体标准差已知:
总体比例置信区间:
$$
\hat{p} \pm z_{\alpha/2}\sqrt{\frac{\hat{p}(1-\hat{p})}{n}}
$$总体方差置信区间:
$$
\frac{(n-1)s^2}{\chi^2_{\alpha/2}(n-1)} \leq \sigma^2 \leq \frac{(n-1)s^2}{\chi^2_{1-\alpha/2}(n-1)}
$$
置信区间宽度
- 影响因素:
- 样本量n
- 置信水平1-α
- 总体标准差σ
- 数学表达:
$ Width = 2 \times z_{\alpha/2}\frac{\sigma}{\sqrt{n}} $ - 样本量确定:
$ n = (\frac{2z_{\alpha/2}\sigma}{Width})^2 $
如何设定p值
p值定义:
- 在原假设为真的条件下,获得当前或更极端结果的概率
- 数学表达:
$ p = P(T \geq t_{obs}|H_0) $
其中t_obs为观察到的检验统计量值
p值解释:
- p < α:拒绝原假设
- p ≥ α:接受原假设
- 通常α取0.05或0.01
p值计算:
- t检验:
$ p = 2P(T \geq |t_{obs}|) $ - z检验:
$ p = 2P(Z \geq |z_{obs}|) $ - 卡方检验:
$ p = P(\chi^2 \geq \chi^2_{obs}) $
- t检验:
p值注意事项:
- 不是效应量
- 受样本量影响
- 不能直接比较
- 需要结合效应量解释
灰度发布
定义
在黑与白之间,能够平滑过渡的一种发布方式。
AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。
灰度实现思路
当某个实验效果非常好时,可以动态调整该实验的流量占比,从而迅速得到收益,并且在大流量上验证该实验的有效性。一旦确认该实验效果非常良好,便可以在全流量上线。
应用场景
- 比如开发完成一个新功能,但线上用户量很大,不确定全量发布后功能效果或者反馈如何,担心会存在潜在的问题。此时,可以使用灰度发布,逐步发布1%、5%、30%、50%、100%流量,在增量发布的过程中根据用户反馈来进行实时调整流量大小,或者回滚。
- 比如想在十一假期期间针对线上用户做一个活动,需要提前完成准备工作,那么您可以设置定时发布,如每天发布10%流量,共发布7天。
- 比如已通过A/B实验决策出优胜版本,可以直接将优胜版本全量固化至Feature,即通过Feature的方式立即实现全量发布。
问题集
1.【如果abtest结果显著可信但后续版本上线后目标指标反而相比原先的下降了,后续如何迭代优化?】
- 先查原因,为什么指标下降了,确定问题出在哪。
- 拆分各种维度调研该指标下降原因,拿到事实(上线后用户组成、产品功能、策略相比之前是否变化)
- eg
- 只有ios降,安卓正常,或者上下链路某个环节数据差异很大,大概率是ios包有bug。找开发/算法。
- 只有某些国家地区降,看节假日政策运营活动问题。找pm/运营。
- 若变化,可能是其他原因。若不变,可继续扩大样本量测试/回滚至A组版本观测指标是否回升至原来水平/给对照组再设置一个对照组,严格检验两个对照组的平稳性,防止对照组被污染了。
- Abtest有成本,不要一上来就重开,否则一个迭代要做好久。查好,有必要,再调整着重开实验。
- 两两组间有5%犯错概率,每增加一组,整个实验出错概率大大增加,一般也不建议开aabb实验。
- 若确定ABtest结果不行,如果该策略/功能没有明显效果就下掉


