置信度計算——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

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