增長團隊有三寶:埋點客税、漏斗、AB測唁奢。工作中一直想實踐霎挟,沒有合適的機會,過段時間又忘了麻掸。在此整理一下酥夭,雖然比不上做過來的印象深刻,但未來復習起來也方便脊奋。
實際上很多以前我寫過的代碼也完全沒印象了熬北,一眼看上去好陌生,只覺得寫的還不錯诚隙,哈哈讶隐。
一、基本原理
AB測試概念來自生物醫(yī)學的雙盲測試久又,即分組藥物實驗巫延,比較一段時間后兩組病人的表現(xiàn)是否具有顯著差異(假設檢驗)。AB測試是一種驗證性研究方法地消,適于微觀層面炉峰,不適合戰(zhàn)略級的策略驗證。
考慮到投入產出比脉执,一般要具備兩個必要條件:1疼阔、測試對象的決策影響大,或決策后不易修改半夷;2婆廊、測試對象的方案選擇存在困難。
零假設總是表述為研究沒有改變巫橄,沒有效果淘邻,不起作用等,H1是我們想要的假設嗦随。為什么統(tǒng)計者想要拒絕的假設放在原假設呢列荔?因為原假設備被拒絕如果出錯的話,只能犯第I類錯誤枚尼,而犯第I類錯誤的概率已經被規(guī)定的顯著性水平所控制贴浙。
檢驗方式分為兩種:雙側檢驗和單側檢驗。單側檢驗又分為兩種:左側檢驗和右側檢驗署恍。雙側檢驗:備擇假設沒有特定的方向性崎溃,形式為“≠”;單側檢驗:備擇假設帶有特定的方向性盯质,形式為">""<"的假設檢驗袁串, "<"稱為左側檢驗概而,">"稱為右側檢驗。
給定顯著性水平α后囱修,查表就可以得到具體臨界值赎瑰,將檢驗統(tǒng)計量與臨界值進行比較,如果樣本觀測計算出來的檢驗統(tǒng)計量的具體數值落在拒絕域內破镰,就拒絕原假設餐曼,否則不拒絕原假設。
假設檢驗根據業(yè)務數據分為兩種:一個總體參數的假設檢驗鲜漩、兩個總體參數的假設檢驗源譬,檢驗統(tǒng)計量計算方式有所不同。例如孕似,時段1踩娘,A版本,時段2喉祭,B版本养渴,假設檢驗為同一總體(全部客戶);版本A\B各分配50%的流量泛烙,兩個總體厚脉。
一個總體參數的假設檢驗:
假設形式,霞溪;鸯匹;殴蓬。
檢驗統(tǒng)計量匿级,染厅,。
大肖粮、小樣本的拒絕域確認略有不同孤页,大樣本查詢Z分布,小樣本查詢t分布涩馆。
大樣本的,
小樣本的,
轻腺。
兩個總體參數的假設檢驗
假設形式乐疆,挤土;仰美;咖杂。
檢驗統(tǒng)計量,
拒絕域與一個總體參數的假設檢驗一致蚊夫。
樣本成數:它是指樣本中具有某一相同標志表現(xiàn)的單位數占樣本容量的比重诉字,記為p≈祝總體成數:它是指總體中具有某一相同標志表現(xiàn)的單位數占全部總體單位數的比重壤圃,一般用π表示。
該假設檢驗可用于某一天的回款率情況(某天3000客戶琅轧,回款客戶所占比重為p)伍绳。
一個總體成數的假設檢驗
假設形式,;;。
檢驗統(tǒng)計量,
拒絕域與總體參數的假設檢驗一致甥绿。
兩個總體成數的假設檢驗
當都大于或等于5時洗出,就可以稱為大樣本,
假設形式菠镇,利耍;隘梨;轴猎,其中可根據需要將0調整為。
檢驗統(tǒng)計量进萄,捻脖,兩個樣本的合并成數。
情況下(一般形式)中鼠,
二郎仆、檢驗統(tǒng)計量與樣本量計算
檢驗統(tǒng)計量
據以對原假設和備擇假設作出決策的某個樣本統(tǒng)計量稱為檢驗統(tǒng)計量,兩個簡單的例子:
1兜蠕、兩組測試,雙樣本均值顯著性檢驗抛寝,使用Z檢驗熊杨。單側檢驗值,顯著性水平為0.05時盗舰,=1.645晶府,當,拒絕原假設钻趋。
2川陆、兩組測試,不同的樣本(如人)蛮位,雙獨立樣本是否相等的檢驗较沪;小樣本鳞绕、數據分布近似符合正態(tài)分布,采用t檢驗尸曼;因為備選假設是A版本和B版本有差別们何,采用雙尾檢驗。
服從什么分布控轿,就用什么區(qū)間估計方式冤竹,也就就用什么檢驗。比如:兩個樣本方差比服從F分布茬射,區(qū)間估計就采用F分布計算臨界值(從而得出置信區(qū)間)鹦蠕,最終采用F檢驗。
Z檢驗:一般用于大樣本(即樣本容量大于30)在抛,平均值差異性檢驗的方法钟病,總體標準差σ已知。它是用標準正態(tài)分布的理論來推斷差異發(fā)生的概率霜定,從而比較兩個平均數的差異是否顯著档悠。
T檢驗:主要用于樣本含量較小(例如n < 30)望浩,總體標準差σ未知的正態(tài)分布辖所。T檢驗是用t分布理論來推論差異發(fā)生的概率,從而比較兩個平均數的差異是否顯著磨德。
一般情況下我們是不知道總體分布的標準差的缘回,根據中心極限定理,當樣本量很大時(大于30)典挑,抽樣分布服從正態(tài)分布酥宴,樣本的標準差是總體分布標準的一個很好估計,抽樣分布方差就等于總體分布方差除以樣本容量拙寡。
當樣本容量小于30的時候,我們用樣本標準差估計的總體分布標準差是不準的琳水,一般會低估肆糕,所以出現(xiàn)了 t 分布,公式和Z 統(tǒng)計量一樣在孝,但查的是 t 表诚啃。
卡方檢驗:卡方檢驗是統(tǒng)計樣本的實際觀測值與理論推斷值之間的偏離程度,實際觀測值與理論推斷值之間的偏離程度就決定卡方值的大小私沮,如果卡方值越大始赎,二者偏差程度越大;反之,二者偏差越性於狻魔招;若兩個值完全相等時,卡方值就為0筋搏,表明理論值完全符合仆百。適合x類別型變量,y類別型變量奔脐。
樣本量計算
最小樣本量計算公式俄周,
其中是每組所需樣本量,因為AB測試一般至少2組髓迎,所以實驗所需樣本量為峦朗。分別稱為第一類錯誤概率和第二類錯誤概率,一般分別取0.05和0.2排龄,為正態(tài)分布的分位數函數波势,為兩組數值的差異,如點擊率1%到1.5%橄维,那么就是0.5%尺铣。為標準差,是數值波動性的衡量争舞,越大表示數值波動越厲害凛忿。
對兩類錯誤上限的選取(α是5%竞川,β是20%)店溢,我們可以了解到AB實驗的重要理念:寧肯砍掉4個好的產品,也不應該讓1個不好的產品上線委乌。
棄真錯誤也叫第I類錯誤或α錯誤:它是指原假設實際上是真的床牧,但通過樣本估計總體后,拒絕了原假設遭贸。明顯這是錯誤的戈咳,我們拒絕了真實的原假設,所以叫棄真錯誤壕吹。這個值也是顯著性水平著蛙,在假設檢驗之前我們會規(guī)定這個概率的大小。
取偽錯誤也叫第II類錯誤或β錯誤:它是指原假設實際上假的算利,但通過樣本估計總體后,接受了原假設泳姐。明顯者是錯誤的效拭,我們接受的原假設實際上是假的,所以叫取偽錯誤。
Statistical Significance =1-α = 95%
Statistical Power = 1-β = 80%
Baseline Rate缎患,是在實驗開始之前慕的,對照組本身的表現(xiàn)情況,即舊方案的點擊率挤渔,由歷史數據決定的肮街。在我們的實驗中,我們假定判导,實驗開始之前的歷史點擊率是5%嫉父。所以Baseline Rate=5%。這個參數越小眼刃,你需要的樣本量越大(分母越大绕辖,這個參數越小)擂红。(debug)
Minimum Detectable Effect仪际,衡量了我們對實驗的判斷精確度的最低要求,參數越嘘侵琛(比如1%)树碱,說明我們希望實驗可以有能力檢測出1%的細微差別。檢測細微的差別當然更加困難(power變斜淝亍)所以樣本量越大成榜,所以如果要保持power不變的話,需要的樣本量會增加伴栓。
比例類數值的假設檢驗在統(tǒng)計學中叫做兩樣本比例假設檢驗伦连,其最小樣本量計算的公式為:
具體實踐,可使用在線工具(https://www.evanmiller.org/ab-testing/sample-size.html)钳垮、Excel(NORM.S.INV函數)惑淳、R(power.prop.test)、Python計算饺窿。
# R
power.prop.test(p1 = 0.30, p2 = 0.305, sig.level = 0.05, power = 0.80, alternative = "two")
# python
from statsmodels.stats.power import zt_ind_solve_power
from statsmodels.stats.proportion import proportion_effectsize as es
zt_ind_solve_power(effect_size=es(prop1=0.30, prop2=0.305), alpha=0.05, power=0.8, alternative="two-sided")
三歧焦、實驗設計與注意事項
1、計算兩樣本的描述性統(tǒng)計肚医,建立零假設和備選假設绢馍,例如:
零假設:A版本和B版本鍵盤沒有差別,即A版本的平均值等于B版本的平均值肠套。
備選假設:A版本和B版本有差別舰涌,即A版本平均值不等于B版本平均值。
2你稚、確定檢驗類型瓷耙、檢驗統(tǒng)計量(如t檢驗)朱躺,求t值、雙尾檢驗的P值和自由度df搁痛,一般設置顯著水平alpha=5%长搀。
如雙邊檢驗,p < 判斷標準(顯著水平)alpha/2 時鸡典,拒絕零假設源请,有統(tǒng)計顯著,也就是有差異彻况。
import statsmodels.stats.weightstats as st
#?import scipy.stats
#?t, pval = scipy.stats.ttest_ind(B,A) #表示B-A
t, p_two, df = st.ttest_ind(data['A'], data['B'], usevar='unequal')
# 自由度一般只保留整數部分
print('t=', t, 'p_twoTail=', p_two, ',df=', df)
3谁尸、計算置信區(qū)間和效應統(tǒng)計量(Cohen's d)。
置信區(qū)間的上下限疗垛,,95%置信度下對應的t值(查詢t表)贷腕。
# 計算標準誤差
se = np.sqrt(np.square(a_std)/a_n + np.square(b_std)/b_n)
# 對于雙獨立樣本檢驗背镇,置信區(qū)間的樣本平均值=A版本平均值 - B版本平均值
sample_mean = a_mean - b_mean
Cohen's d = (樣本平均值1-樣本平均值2) / 標準差,因是兩個獨立樣本泽裳,此處要用合并標準差瞒斩。效應量太小,意味著處理即使達到了顯著水平涮总,也缺乏實用價值胸囱。(debug,效應統(tǒng)計量顯著的范圍瀑梗;標準差的計算公式)
# 合并標準差
sp = np.sqrt( ((a_n-1)*np.square(a_std) + (b_n-1) * np.square(a_std))
????????????/ (a_n+b_n-2) )
# 效應量Cohen's d
d = (a_mean - b_mean) / sp
4烹笔、生成數據分析報告。
注意事項
控制變量抛丽,只有一個變量不同谤职,否則將會影響測試中的基準控制,保證AB組數量和特征均勻(如男女比例接近)亿鲜,同時發(fā)布上線允蜈。
同時關注正向與負向指標,正向指標蒿柳,一般依據實驗路徑制定饶套,是策略好壞的直接評價,如:留存人數->點擊人數->瀏覽人數->成交人數垒探。負向指標妓蛮,適用于結果指標相近的場景,如實驗策略是下發(fā)公眾號模板圾叼,其中兩組的成交人數相近蛤克,但實驗組卻致使用戶取關人數激增扔仓。如正向收益小于負向收益,則應分析問題考慮優(yōu)化實驗或停止實驗咖耘。
四、實際案例
1撬码、點擊率的假設檢驗
某公司想知道產品優(yōu)化是否有效儿倒,設立實驗組與對照組收集一周點擊率,請檢驗產品優(yōu)化是否有效呜笑。
實驗組7天點擊率分別為:0.72,0.75,0.7,0.75,0.73,0.72,0.71
對照組7天點擊率分別為:0.7,0.76,0.69,0.75,0.7,0.69,0.68
由于不同統(tǒng)計日之間是有隨機波動的差異夫否,而且實驗組和對照組流量相等且隨機,可以認為樣本來自同一個總體叫胁,實驗組是對同一天的對照組進行優(yōu)化的結果凰慈,所以可以采用相關樣本t檢驗。
Step1:μ為點擊率
H0:功能優(yōu)化之后與優(yōu)化前沒有差異(μ2-μ1=0)
H1:功能優(yōu)化之后與優(yōu)化前有差異(μ2-μ1≠0)
Step2:確定顯著性水平α=0.05驼鹅。計算統(tǒng)計量微谓,相關樣本t檢驗是以每一組數據的差值作為檢驗的,所以以點擊率差作檢驗
day1:0.72-0.7=0.02 …… day7:0.71-0.68=0.03
Md為七組差值的均值输钩,經計算為0.0157豺型;樣本方差(0.02-0.016)^2+……+(0.03- 0.016)^2/(7-1)=0.000262,開根號得到標準誤=0.0161买乃。最后代入t分數:t=(0.0157-0)*sqrt(n-1)/0.0161=2.38姻氨。
Step3:查表,按α=0.05剪验,df=6肴焊,確定臨界值,2.447功戚。Step3中的t=2.38在臨界值內娶眷,接受零假設,認為功能優(yōu)化沒有效果疫铜。
2茂浮、機器人催收的AB測試思路
未開展因測試數據量不足,A版本壳咕,人工催收M0回款率席揽,B版本機器人。
附谓厘,參考資料:
1幌羞、python獨立雙樣本t檢驗: AB測試,https://zhuanlan.zhihu.com/p/40227306
2竟稳、A/B實驗属桦,了解一下熊痴,https://mp.weixin.qq.com/s/PAxmkE2Dp1tyKIK3VJv2EQ
3、數據分析|如何做一個ABtest測驗聂宾,https://zhuanlan.zhihu.com/p/75762862
4果善、假設檢驗——這一篇文章就夠了,https://zhuanlan.zhihu.com/p/86178674
5系谐、Z分布標準正態(tài)分布表