置信度计算——T检验(配对样本t检验、AB实验置信度)

为什么计算置信度?

在推荐场景下,我们会研发一些策略,来提升业务指标,在做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

置信度越大越好,上面这个例子可以解释为:实验组的指标没有带来较大的提升。

 

参考:

1.T检验:https://cloud.tencent.com/developer/article/1429993

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章