广告部针对一款功能饮料新设计了一种广告策略,VP想要请你帮忙测试新的广告是否效果更好;
作为一个数据分析师,你需要根据任务设计你的实验。
显然,如果1000个人点击新广告的人中990人买了饮料,对比点击旧款广告的1000个人中10个人买了饮料,你有很大的把握,前一种广告策略更好。
你凭借你的经验,决定从实际转化率(实际购买人数/点击广告的次数)的出发,即分析在两种广告是不是有显著的差异。
注意,设计上不是这么简单,一般涉及到怎么讲用户分组,每组用户有多少,测试时间点、时间段的选择等待。实际场景会很复杂,移动端的用户行为模式相比更为复杂。实际的产品优化、测试中,不能仅仅是根据一次转化率的大幅提高就去下结论,而要整体的看问题,而且要持续的关注。
1、什么是A/B测试?
A/B Testing 就是为同一个目标制定两个方案(比如两个website、app的页面),让一部分用户使用 A 方案,另一部分用户使用 B 方案,记录下用户的使用情况,看哪个方案更接近测试想要的结果。
2、什么时候需要A/B测试?
假如你是一家媒体公司,你需要依靠邮件来吸引新客户,engage和retain老客户的话,你就需要做Email A/B Testing。通过不同的邮件内容,来测试什么样的推送内容会吸引用户。
如果你是一家在线旅游公司,主页的搜索栏如何设计,什么颜色,或者是价格区间如何设定,这些也可以通过A/B 测试来优化你的产品, 提高最后的转化率。
如果是一家购物网站,除了对优化支付流程页面做AB测试外,目前比较流行是做推荐系统的A/B Testing。
如果是一家在线APP打车软件,除了可以做APP页面的颜色,排版的A/B测试外, 还能对车费计算模型做A/B 测试,拼车算法做A/B 测试 。
讲到这里大家有没有发现,其实A/B测试不仅仅局限于对页面的颜色,内容,排版做测试。更多的时候用户并不能直观的察觉,就像我之前提到的车费计算模型,拼车模型做AB测试。在做这些测试的时候,系统后台用两套不同的计价模型,推送给不同的用户,最后根据所定义的metrics来衡量结果。作为用户方来说,我们几乎察觉不到我们正在使用的产品在做AB 测试。相同的还有购物网站中对你可能感兴趣的内容做A/B测试。
如何设计请参考第二篇推文章,以下为第一个实验的测试部分.(部分python代码)
def normal_cdf(x,mu=0,sigma=1):
return (1+math.erf((x-mu)/math.sqrt(2)/sigma))/2
def eatimated_para(N, n):
p = n / N
sigma = math.sqrt(p * (1 - p) / N)
return p, sigma
def a_b_test_statistic(N_A, n_a, N_B, n_b):
P_A, sigma_A = eatimated_para(N_A, n_a)
P_B, sigma_B = eatimated_para(N_B, n_b)
return (P_B - P_A) / math.sqrt(sigma_A ** 2 + sigma_B ** 2)
def two_side_p_value(x,mu=0,sigma=1):
if x>=mu:
return 2*(1-normal_cdf(x,mu=0,sigma=1))
else:
return 2*normal_cdf(x,mu,sigma)
z = a_b_test_statistic(1000, 200, 1000, 180)
print(z)
print(two_side_p_value(z,mu=0,sigma=1))
参考:
1、A/B测试的基本概念:
http://www.zhihu.com/question/20045543
2、怎么用Python做A/B测试
https://www.quora.com/How-can-I-do-an-A-B-test-in-Python(pypi:https://pypi.python.org/pypi/swab/)
3、https://blog.dominodatalab.com/ab-testing-with-hierarchical-models-in-python/
4、http://oldj.net/article/ab-testing-method/