电商落地页设计优化的A/B测试验证与应用
一、概要
某电商公司非常注重自己的落地页设计,希望通过改进设计来提高转化率。以往该公司全年转化率平均在13%左右,现在希望设计的新页面能够带来更高的转化率,希望新页面的转化率能有2%的提升,达到15%。在正式推出新页面之前,该公司希望通过AB测试在小范围的用户中进行测试,以确保新页面的效果能够达到预期目标。
二、A/B测试基本流程
1、确定实验目标及衡量指标
在本案例中,实验目标明确指向通过 A/B 测试验证新落地页能否实现转化率提升 2% 的目标,即从原有 13% 的转化率提升至 15%。基于此目标,核心衡量指标选定为页面转化率(转化用户数 / 页面访问用户数)。同时,最好可辅助监测其他相关指标,如平均停留时长、跳出率、加购率等,以便从多维度评估页面效果。例如,若新页面转化率提升但跳出率大幅增加,可能意味着页面改动引发用户不适等,需要进一步去分析。
另外第一步通常是提出假设。假设是对于某个特定变化我们所期望的结果,也是后续实验的基础,我们需要在后续实验中通过数据验证这个假设是否成立。如果验证成立,我们可以将这个变化推广到全部用户。如果验证不成立,则需要继续优化这个假设或者放弃这个修改方案,以寻找更好的变化。
在这个实验中,我们希望新页面可以提升2%的转化率,原则上我们应选择单尾检验,准确的说,应该选择右侧单尾检验,因为我们的假设是新页面的转化率要大于旧页面的转化率。但是,在本案例中,我们并不能确定新页面的性能一定比当前的页面更好。所以,这里选择双尾检验。
【补充说明: 单尾检验和双尾检验是假设检验中的两种常见常见形式。它们的区别在于对假设的方向性不同:
在单尾检验中,研究者针对假设提出了明确的方向性, 例如“新设计的落地页转化率比原设计高”、“将按钮颜色从灰色改为红色将导致更多的点击”……因此只检验这个方向是否具有统计显著性,被称为单侧检验。
而在双尾检验中,研究者不确定假设所在的方向, 例如“新设计的落地页转化率与原设计是否存在差异”、“改变页面布局会影响用户的满意度”……需要同时检验两个方向的统计显著性,被称为双侧检验。
在AB测试中,一般应根据实验目的、数据分布情况和统计分析方法等因素来确定单尾检验或双尾检验。例如,如果实验的目的是验证新设计的落地页转化率是否明显高于旧设计,就可以选择单尾检验。但如果不确定两种设计是否存在差异,则应选择双尾检验。】
此外,需要特别注意的是:想支持的结论通常放在备择假设上。所以在本案例中,原假设和备择假设分别是:
原假设H0:P=P0
备选假设H1:P≠P0
其中,P0 代表的是旧版落地页的转化率,P代表的是新版落地页的转化率。
2、设计实验方案
(一)明确实验变量
新落地页的具体改动点即为实验变量,需详细拆解改动内容。例如,可能包括:
视觉设计:更换主色调、调整图片尺寸和位置、优化文案排版;
交互设计:添加动态元素(如弹窗引导、轮播图)、改变按钮样式(颜色、大小、位置)和文案(如 “立即购买” 改为 “限时抢购”);
信息架构:删减冗余信息、突出核心卖点、调整商品展示顺序。
(二)确定实验时间
实验时长需综合考虑用户行为周期和数据稳定性:
短期波动排除:至少覆盖一个完整的用户活跃周期(如一周,涵盖工作日和周末的流量差异),避免因某天的特殊流量或活动影响结果;
长期趋势捕捉:若产品存在季节性或周期性波动(如电商大促前后),需延长实验时间至一个月以上,确保数据能反映常态下的真实效果;
数据收敛判断:通过每日监控数据,当关键指标(转化率)的波动幅度小于一定阈值(如 ±0.5%),且置信区间稳定时,可认为数据趋于收敛,结束实验。
其次也可以通过根据最小样本量的计算,假设此次AB测试至少需要10000个用户参与测试,假如该落地页以往每天的平均浏览量为1000,则实验周期至少需要的天数为:10000/1000=10天
(三)计算实验样本量
根据样本量计算公式确定合理的样本数量,以保证实验结果的可靠性。假设:
显著性水平(α)设为 0.05(双侧检验),对应 Z α / 2 = 1.96 Z_{\alpha/2} = 1.96 Zα/2=1.96;
检验功效(1-β)设为 0.8,对应 Z β = 0.84 Z_{\beta} = 0.84 Zβ=0.84;
原转化率(p0)为 13%,预期新转化率(p1)为 15%,合并比例p = (0.13 + 0.15) / 2 = 0.14。
代入单组样本量公式(比例比较): n = ( Z α / 2 2 p ( 1 − p ) + Z β p 1 ( 1 − p 1 ) + p 0 ( 1 − p 0 ) ) 2 ( p 1 − p 0 ) 2 n = \frac{(Z_{\alpha/2}\sqrt{2p(1-p)} + Z_{\beta}\sqrt{p_1(1-p_1)+p_0(1-p_0)})^2}{(p_1 - p_0)^2} n=(p1−p0)2(Zα/22p(1−p)+Zβp1(1−p1)+p0(1−p0))2
可直接通过Python内置函数实现:
import scipy.stats as stats
import statsmodels.stats.api as sms
effect_size = sms.proportion_effectsize(0.13, 0.15) # 根据我们的预期比率计算效果量
required_n = sms.NormalIndPower().solve_power(
effect_size,
power=0.8, #检验功效
alpha=0.05, #显著性水平
ratio=1 ,
) # 计算所需的样本量
(四)划分实验组和对照组
采用随机分组原则,确保两组用户在关键特征上分布均衡,避免混杂因素干扰实验结果:
一般分为实验组和对照组两组:
对照组(control组):这一组用户将看到旧版落地页
实验组(treatment组):这一组用户将看到新版落地页
为了后续计算每一组的转化效率,需要记录每一位参与实验的用户的购买行为,也就是说无论用户看到的是新版落地页还是旧版落地页,都需要记录这位用户最终是否购买了产品。这可以通过在网站上添加相应的追踪代码来实现:
0:代表用户在测试期间没有购买产品
1:代表用户在测试期间购买了产品
后续可以通过mean()等方法快速计算出每个组的均值,从而得到新旧两版落地页的转化率。
(五)数据收集与分析方法
数据收集:利用埋点技术记录用户行为数据(如页面访问、点击按钮、下单转化),通过数据仓库或第三方工具(如 Google Analytics、Mixpanel)实时采集并存储;
分析方法:
描述性统计:计算实验组和对照组的转化率均值、标准差,直观对比数据分布;
假设检验:采用双样本 Z 检验或卡方检验,判断两组转化率差异是否具有统计学显著性(p 值 < 0.05 时认为差异显著);
置信区间:计算转化率的 95% 置信区间,评估结果的稳定性(如实验组转化率 95% 置信区间为 [14.5%, 15.5%],说明结果可靠性较高);
回归分析:若需探究其他因素(如用户特征、时间因素)对转化率的影响,可建立逻辑回归模型,控制混杂变量后评估新页面的真实效果。
3、执行实验并收集数据
目前市面上大家熟知的大公司基本上都在做AB测试,比如:百度、阿里、腾讯、字节跳动、京东、滴滴、携程、美团等:
百度:百度统计可视化A/B测试:https://baijiahao.baidu.com/sd=1735048932168957887&wfr=spider&for=pc
字节跳动:巨量引擎「AB实验工具」:https://zhuanlan.zhihu.com/p/508366232
阿里:淘宝推出的 A/B 测试平台,主要针对淘宝商家进行 A/B 测试
腾讯:腾讯云AB实验平台:https://abtest.qq.com/
大公司做AB测试的主要特点就是。一般都是自研系统。
而对于规模不是那么大的企业,也有做AB测试的需求,比如互金、运动。、在线教育、SaaS的都有做A/B测试,但是这部分企业一般是使用第三方的A/B测试工具。目前市面上的第三方AB测试工具主要有:
神测数据:https://www.sensorsdata.cn/features/ABTesting.html
ABtester:提供web网站A/B测试http://www.abtester.cn/
热云数据:支持App、web、H5的A/B测试https://www.appadhoc.com/
4、数据分析和结果评估
(一)显著性检验
通过双样本 Z 检验分析实验组和对照组转化率差异:
原假设(H0):新落地页与原落地页转化率无显著差异;
备择假设(H1):新落地页转化率与原落地页有差异;
若 p 值 < 0.05,则拒绝原假设,认为新页面效果显著;反之,则无法证明新页面有提升效果。
(二)效果评估
核心指标对比:对比实验组和对照组的转化率差值是否达到预期的 2%,并结合置信区间判断效果稳定性;
辅助指标分析:综合分析加购率、跳出率等辅助指标,评估新页面是否存在潜在问题(如转化率提升但加购率下降,可能因文案诱导过度导致用户流失);
分层分析:按用户特征(如地域、消费层级)对数据分层,检查是否存在辛普森悖论(即整体数据与分层数据结论矛盾),确保结果可靠性。
(三)结论与建议
实验成功:若新页面转化率显著提升且达到预期目标,建议全量推广,并持续监控长期效果;
实验失败:若未达到预期,需深入分析原因(如变量设计不合理、样本量不足、混杂因素干扰),调整方案后重新测试;
不确定情况:若 p 值接近 0.05 或置信区间包含 0,可扩大样本量或延长实验时间,获取更稳健的数据支持决策。
三、部分实现路径
1.技术路线

2、数据导入与清洗(概要代码流程)
# 导入数据集
df = pd.read_csv("ab_data.csv")

字段名称含义:
user_id:用户ID
timestamp:用户访问页面的时间
group:用户分组情况(新落地页为treatment组,旧版落地页为control组)
landing_page:每位用户看到的落地页(分为新旧两版落地页)
converted:是否成功转化(1代表成功转化,0代表未转化)
# 检查缺失值并处理
df.isnull().sum()
# 检查用户是否有重复值
df["user_id"].duplicated().sum()

# 处理时间,并检查时间天数
date_days = pd.to_datetime(df_new['timestamp'],format='%Y-%m-%d').dt.strftime('%Y-%m-%d')
# 确保contorl组每个用户看到的是旧页面,treatment组看到的是新页面
pd.crosstab(df_new['group'], df_new['landing_page'])

3、抽样计算
根据前面最小样本量的计算,我们至少需要每组的样本量,这里每组进行抽样(实际工作中不需要抽样这一步)
control_sample = df_new[df_new['group'] == 'control'].sample(n=required_n, random_state=22)
treatment_sample = df_new[df_new['group'] == 'treatment'].sample(n=required_n, random_state=22)
ab_test = pd.concat([control_sample, treatment_sample], axis=0)
ab_test.reset_index(drop=True, inplace=True)
pd.crosstab(ab_test['group'], ab_test['landing_page'])

通过计算方差、均值:
conversion_rates = ab_test.groupby('group')['converted'].agg([np.mean,np.std])

从上面的统计数据来看,新旧两版落地页的表现结果非常相近,相比于旧版落地页,新版落地页的转化率略微好一点点,高了0.3%
那么,这种差异在统计学上显著么?我们可以直接说,新版落地页更好么?
4、假设检验
我们分析的最后一步就是假设检验了。那么,具体选择哪一种假设检验呢?在统计学中,可以使用Z检验或者t检验。
在这个案例中,由于我们的样本非常大,所以我们使用Z检验。Python中的statsmodels.stats.proportion模块可以来计算P值和置信区间:
from statsmodels.stats.proportion import proportions_ztest, proportion_confint
control_results = ab_test[ab_test['group'] == 'control']['converted']
treatment_results = ab_test[ab_test['group'] == 'treatment']['converted']
n_con = control_results.count()
n_treat = treatment_results.count()
successes = [control_results.sum(), treatment_results.sum()]
nobs = [n_con, n_treat]
z_stat, pval = proportions_ztest(successes, nobs=nobs)
(lower_con, lower_treat), (upper_con, upper_treat) = proportion_confint(successes, nobs=nobs, alpha=0.05)
print(f'z statistic: {z_stat:.2f}')
print(f'p-value: {pval:.3f}')
print(f'ci 95% for control group: [{lower_con:.3f}, {upper_con:.3f}]')
print(f'ci 95% for treatment group: [{lower_treat:.3f}, {upper_treat:.3f}]')
z statistic: -0.51
p-value: 0.607
ci 95% for control group: [0.114, 0.132]
ci 95% for treatment group: [0.117, 0.136]
四、结果及建议
由于我们计算出来的P值=0.607远高于显著水平0.05,所以我们不能拒绝原假设H0.这意味着新版落地页与旧版落地页没有明显不同
此外,我们继续看置信区间,可以看出:
对照组:[0.114, 0.132],即旧版落地页转化率有 95% 概率落在 11.4%~13.2% 之间,与历史均值 13% 吻合;
实验组:[0.117, 0.136],新版落地页转化率大概率在 11.7%~13.6% 之间,上限未达到目标值 15%,且与对照组区间高度重叠(如 11.7%~13.2% 为重叠区域),说明两组效果无实质差异。
也可以说明,新版落地页的真实转化率更有可能与我们的基线相似,而没有办法达到我们期望的15%。进一步证明了,新版设计并不是一个很好的改进。
相关参考资料:
[1]《AB测试应用》–菊安酱
[2] https://zhuanlan.zhihu.com/p/68019926
[3] https://www.zhihu.com/tardis/zm/art/86178674?source_id=1005
更多推荐




所有评论(0)