公司每月都会开展促销活动,虽然这种促销活动是销售比率比较高的经营策略,然而公司经营层指出“虽然促销活动的销售额较高,但购买率却比较低”。通过和公司的其他应用的促销活动相比,我们发现购买率确实比较低。
提出假设:
1、活动的内容有问题
- 促销产品并不是用户需要的
- 促销力度不够,对用户没有吸引力
2、广告的外观展示有问题
针对广告外观展示问题,广告的点击率比较低,从而对购买率产生影响。可以通过之前用户点击率较高的广告替换目前所使用的广告。
我们准备了两个不同广告,通过收集数据来比较那个广告更容易被用户点击。从而影响购买率
施行测试需要注意的几点:
- 采用AB测试的方法排除外部干扰
- AB测试中的用户分组必须遵循随机的原则。
- 同时进行AB测试的陷阱
- 所有的AB测试都采用相同的分组方法
- 各组中参与其他测试的用户比例不同
- 利用统计学上的假设检验来过滤
收集和加工验证所需的数据
- 关于广告曝光次数的信息
- 关于广告点击次数的信息
数据处理过程:
library(plyr)
> library(ggplot2)
> library(scales)
> imp_goal<-merge(IMP,GOAL,by=c('transaction_id'),all.x=T,suffixes=c('','.1'))
> head(imp_goal)
transaction_id log_date app_name test_name test_case user_id
1 1 2013-10-02 game-01 sales_test A 49017
2 2 2013-10-02 game-01 sales_test B 49018
3 3 2013-10-02 game-01 sales_test A 44338
4 4 2013-10-02 game-01 sales_test A 44339
5 5 2013-10-02 game-01 sales_test A 28598
6 6 2013-10-02 game-01 sales_test B 30306
log_date.1 app_name.1 test_name.1 test_case.1 user_id.1
1 <NA> <NA> <NA> <NA> NA
2 <NA> <NA> <NA> <NA> NA
3 <NA> <NA> <NA> <NA> NA
4 <NA> <NA> <NA> <NA> NA
5 <NA> <NA> <NA> <NA> NA
6 <NA> <NA> <NA> <NA> NA
> imp_goal$user<-ifelse(is.na(imp_goal$user_id.1),0,1)
> head(imp_goal)
transaction_id log_date app_name test_name test_case user_id
1 1 2013-10-02 game-01 sales_test A 49017
2 2 2013-10-02 game-01 sales_test B 49018
3 3 2013-10-02 game-01 sales_test A 44338
4 4 2013-10-02 game-01 sales_test A 44339
5 5 2013-10-02 game-01 sales_test A 28598
6 6 2013-10-02 game-01 sales_test B 30306
log_date.1 app_name.1 test_name.1 test_case.1 user_id.1 user
1 <NA> <NA> <NA> <NA> NA 0
2 <NA> <NA> <NA> <NA> NA 0
3 <NA> <NA> <NA> <NA> NA 0
4 <NA> <NA> <NA> <NA> NA 0
5 <NA> <NA> <NA> <NA> NA 0
6 <NA> <NA> <NA> <NA> NA 0
>
>
> a<-ddply(imp_goal,.(test_case),summarize, dianji = round(sum(user)/length(transaction_id),5))
> a
弄清楚AB的点击率是否存在显著性差异
test_case dianji
1 A 0.08026
2 B 0.11546
> chisq.test(imp_goal$test_case,imp_goal$user)
Pearson's Chi-squared test with Yates' continuity correction
data: imp_goal$test_case and imp_goal$user
X-squared = 308.38, df = 1, p-value < 2.2e-16
针对上述的卡方检验,结果的p值2.2e-16是个非常小的值。p值越接近0差异性越大。当p值小于0.05时,称为存在显著性差异。
广告A和B的点击率的时间序列变化的可视化
|
在时间序列图中,如果广告B的效果始终比A好的话,那就没有问题,但如果只是在某个时间段内广告B的效果更好,那就需要考虑别的原因了。通过上图可知,广告B的点击率大多数都优于A。所以总的来说,B的的效果始终都比A好
注意:存在显著性差异,需要确认这种差异在商业领域是否存在意义。
> db<-ddply(imp_goal,.(log_date,test_case),summarize,imp=length(transaction_id),cv=sum(user),cvr=sum(user)/length(transaction_id))
> db
log_date test_case imp cv cvr
1 2013-10-01 A 1358 98 0.07216495
2 2013-10-01 B 1391 176 0.12652768
3 2013-10-02 A 1370 88 0.06423358
4 2013-10-02 B 1333 212 0.15903976
5 2013-10-03 A 1213 170 0.14014839
6 2013-10-03 B 1233 185 0.15004055
> db<-ddply(db,.(test_case),transform,cvr.ag=sum(cv)/sum(imp))
> db
log_date test_case imp cv cvr cvr.ag
1 2013-10-01 A 1358 98 0.07216495 0.08025559
2 2013-10-02 A 1370 88 0.06423358 0.08025559
3 2013-10-03 A 1213 170 0.14014839 0.08025559
4 2013-10-04 A 1521 89 0.05851414 0.08025559
5 2013-10-05 A 1587 56 0.03528670 0.08025559
6 2013-10-06 A 1219 120 0.09844135 0.08025559
> ggplot(db,aes(x=as.Date(log_date),y=cvr,col=test_case,lty=test_case,shape=test_case))+geom_point(size=4)+geom_line(lwd=1)+geom_line(aes(y=cvr.ag,col=test_case))+scale_y_continuous(label=percent,limits=c(0,max(db$cvr)))
mysql> use shuju;
Database changed
mysql> select log_date,test_case,count(transaction_id) as imp,sum(user) as cv ,s
um(user)/count(transaction_id) as cvr ,(select sum(user)/count(transaction_id) f
rom imp_goal group by test_case )from imp_goal group by log_date,test_case;
ERROR 1242 (21000): Subquery returns more than 1 row
mysql>
mysql>