第一章 A/B测试基础
1.1 什么是A/B测试
A/B测试是一种对照实验方法,用于比较两个或多个版本的产品、页面或功能,以确定哪个版本表现更好。
- 对照组(A组):原始版本
- 实验组(B组):改进版本
- 随机分配:确保两组具有可比性
- 统计显著性:判断差异是否真实
💡 A/B测试广泛应用于网页优化、产品设计、营销策略等领域。
1.2 A/B测试流程
完整的A/B测试流程包括以下步骤:
- 确定测试目标和假设
- 设计测试方案
- 收集数据
- 进行统计分析
- 做出决策
第二章 假设检验
2.1 零假设与备择假设
假设检验是A/B测试的核心:
- 零假设(H₀):两组之间没有差异
- 备择假设(H₁):两组之间存在差异
- 显著性水平(α):通常设为0.05
- P值:观察到当前数据的概率
2.2 常用检验方法
根据数据类型选择合适的检验方法:
# 比例检验(适用于转化率等二分数据)
from scipy.stats import norm
def z_test(p1, n1, p2, n2):
p_pooled = (p1 * n1 + p2 * n2) / (n1 + n2)
se = (p_pooled * (1 - p_pooled) * (1/n1 + 1/n2)) ** 0.5
z = (p1 - p2) / se
p_value = 2 * (1 - norm.cdf(abs(z)))
return z, p_value
# 示例
z, p_value = z_test(0.15, 1000, 0.18, 1000)
print(f"Z值: {z:.2f}, P值: {p_value:.4f}")
第三章 统计显著性计算
3.1 P值与显著性
P值是判断结果是否显著的关键指标:
- P值 < 0.05:拒绝零假设,结果显著
- P值 >= 0.05:无法拒绝零假设
3.2 样本量计算
在测试前需要计算所需样本量:
import math
from scipy.stats import norm
def calculate_sample_size(p_baseline, min_detectable_effect, alpha=0.05, power=0.8):
# 计算所需样本量
p2 = p_baseline * (1 + min_detectable_effect)
p_pooled = (p_baseline + p2) / 2
z_alpha = norm.ppf(1 - alpha/2)
z_power = norm.ppf(power)
n = (z_alpha * math.sqrt(2 * p_pooled * (1 - p_pooled)) +
z_power * math.sqrt(p_baseline * (1 - p_baseline) + p2 * (1 - p2))) ** 2 / \
((p2 - p_baseline) ** 2)
return math.ceil(n)
# 示例:基准转化率10%,检测20%的提升
sample_size = calculate_sample_size(0.10, 0.20)
print(f"每组所需样本量: {sample_size}")
第四章 A/B测试实战
4.1 完整分析示例
综合运用所学知识进行A/B测试分析:
💻 在线代码编辑器
练习题(共5题)
练习 1:计算转化率
计算A/B两组的转化率。
练习 2:Z检验计算
实现Z检验计算统计显著性。
练习 3:样本量计算
计算所需样本量。
练习 4:置信区间计算
计算转化率的置信区间。
练习 5:完整A/B测试分析
综合分析A/B测试结果。
测试题(共 5 题,满分 100 分)
1. A/B测试中,零假设表示什么?
2. 通常使用的显著性水平α是多少?
3. 当P值小于α时,我们应该?
4. 计算样本量时不需要考虑哪个因素?
5. Z检验适用于哪种数据?
作业提交
📝 A/B测试分析作业
请完成以下任务:
- 模拟A/B测试数据
- 计算两组转化率
- 进行统计显著性检验
- 计算置信区间
💻 作业代码提交