为什么计算置信度?
在推荐场景下,我们会研发一些策略,来提升业务指标,在做AB实验的时候,实验组跟base组的指标对标,并非稳定的胜利或者稳定的失败,观察7天或者14天的指标数据,会有正有负,那么怎么衡量胜利的置信度呐?这属于碰到统计学中的假设检验问题,可以使用常见的卡方检验、t检验以及正态性检验等,去检验论证某个设想,并通过统计学的方法做解释。
置信度是什么?
理论与应用
t检验,通常会应用于三种情况的检验,分别是单样本t检验、双样本t检验和配对样本t检验。
这里着重说下配对样本t检验,跟工作中的AB实验吻合。
配对样本t检验
配对样本t检验,是针对同一组样本在不同场景下,某数值型指标均值之间的差异。实际上读者也可以将该检验理解为单样本t检验,检验的是两配对样本差值的均值是否等于0,如果等于0,则认为配对样本之间的均值没有差异,否则存在差异。所以,该检验也遵循两个前提假设,即正态性分布假设和样本独立性假设。下面利用统计学中的四步法完成配对样本的t检验:
步骤一:提出原假设和备择假设
步骤二:构造t统计量
其中,xbar为配对样本差的均值,s为配对样本差的标准差。在原假设满足的情况下,t统计量服从自由度为n-1的t分布。
步骤三:计算t统计量
根据步骤二中的计算公式,可以计算得到配对样本t检验的统计量值。这里使用了AB实验两组数据的差作为t统计量。
可以选择实现单样本t检验的ttest_1samp函数,也可以直接选择实现配对样本t检验的ttest_rel函数。接下来结合这两个函数,完成可支配收入的t检验。
置信度计算代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
from scipy import stats
def load_data(input_file):
value = []
with open(input_file, 'r') as f:
for line in f:
l = line.strip()
if len(l) > 0:
value.append(float(l))
return value
def save_p_value():
data = load_data('data.txt')
print(data)
result = stats.ttest_1samp(data,0)
print('statistic: ' + str(result[0]))
print('p-value: ' + str(result[1] / 2))
print('置信度:' + str(1 - result[1] / 2))
def main():
save_p_value()
举个例子
需要计算置信度的数据保存于data.txt中:
0.011756813
0.007696947
-0.003020396
0.015364271
0.047068377
0.001973821
-0.004978872
0.016051776
0.030067915
-0.025374734
0.04177658
-0.013990472
运行上面的代码,p_value.py,得到如下结果:
[0.011756813, 0.007696947, -0.003020396, 0.015364271, 0.047068377, 0.001973821, -0.004978872, 0.016051776, 0.030067915, -0.025374734, 0.04177658, -0.013990472, -0.082597621]
statistic: 0.35054762661433364
p-value: 0.36600218285336517
置信度:0.6339978171466348
置信度越大越好,上面这个例子可以解释为:实验组的指标没有带来较大的提升。
参考: