ABtest系统:结果到底怎么看?

背景

之前写过几篇关于ABtest系统的文章,其中一直没有写的一个点是,也是实验中经常看大家犯的问题是,看数据的方法不准确,就会导致很多的结论性错误,今天总结一下ABtest系统中,到底怎么看实验结果。

具体说明

一、一个实验策略上线几天了,该看哪些数据?

1、首先要看的,是整体大盘的数据,如果实验组跟对照组,大盘的核心指标变化很大,尤其是负向很严重,立刻下掉实验或者调低流量,永远不要带着很大的负向影响在线上查问题。

2、其次不是看指标,是一定回忆清楚,自己做这个实验的时候的假设,因果逻辑,这个策略会影响用户的哪些行为,哪些指标会涨,哪些指标会降低,这个很关键,因为这个是预期,预期跟现实数据的对比才能得到结论。

3、从原因数据出发一步一步找结果数据,或者从结果数据出发一步一步倒推原因数据,用每一步的数据,证明逻辑的合理性。很多时候,策略上线后,策略自身的影响几乎为0,但是大盘涨了,完全是外部影响带来的,却被归因为牛逼策略。

二、怎么知道看的数据是可信的

1、尽量看触达用户的数据,而不是看大盘(就是上面说的策略真实影响的用户)

2、去除噪音数据,对异常数据带来的干扰做规避,实验组跟对照组一样的filter。

3、看数据置信度,不是所有的数据变化都是可信任的,一般认为P值到达95%是比较可信的。因为信息流里大量的二项分布,所以分享一下计算方法:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#二项分布置信度计算
def Confidence():
    #获取相关信息
    print("请输入实验组人数")
    n_shiyan=int(input())
    print("请输入对照组组人数")
    n_duizhao=int(input())
    print("请输入实验组二项分布事件发生的概率")
    p_shiyan=float(input())
    print("请输入对照组二项分布事件发生的概率")
    p_duizhao=float(input())
   
    #计算z-soce,二项分布
    fenzi=p_shiyan-p_duizhao
    fenmu=((p_shiyan*(1-p_shiyan)/n_shiyan)+(p_duizhao*(1-p_duizhao)/n_duizhao))**0.5
    z_score=abs((p_shiyan-p_duizhao)/fenmu)
   
    #根据z-score计算P值
    if z_score<1.96:
        result='不显著'

    if 1.96 <= z_score<2.58:
        result='一般显著'
        Confidence_interval_top=(p_shiyan-p_duizhao)+1.96*fenmu
        Confidence_interval_down=(p_shiyan-p_duizhao)-1.96*fenmu
        return "实验结果:{0},区间为:[{1},{2}]".format(result,Confidence_interval_down,Confidence_interval_top)
    if 2.58<=z_score:
        result='非常显著'
        Confidence_interval_top=(p_shiyan-p_duizhao)+1.96*fenmu
        Confidence_interval_down=(p_shiyan-p_duizhao)-1.96*fenmu
        return "实验结果:{0},区间为:[{1},{2}]".format(result,Confidence_interval_down,Confidence_interval_top)

产品用研 2021-03-16
上一篇:

评论已关闭。