AB測試小結

增長團隊有三寶:埋點客税、漏斗、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%的流量泛烙,兩個總體厚脉。

一個總體參數的假設檢驗:

假設形式,雙側檢驗胶惰,H0:\mu =\mu _{0} ,H1:\mu \neq \mu _{0}霞溪;左側檢驗孵滞,H0:\mu \geq \mu _{0} ,H1:\mu < \mu _{0}鸯匹;右側檢驗坊饶,H0:\mu \leq \mu _{0} ,H1:\mu> \mu _{0}殴蓬。

檢驗統(tǒng)計量匿级,\sigma 已知,z = \frac{(\bar{x} -\mu _{0} )}{\sigma /\sqrt{n} } 染厅,\sigma 未知痘绎,z = \frac{(\bar{x} -\mu _{0} )}{s /\sqrt{n} }

大肖粮、小樣本的拒絕域確認略有不同孤页,大樣本查詢Z分布,小樣本查詢t分布涩馆。P < \alpha 時行施,拒絕H0假設允坚。

大樣本的\alpha 與拒絕域雙側檢驗:\vert Z \vert > Z_{\alpha /2} 蛾号;左側檢驗:\vert Z \vert  Z_{\alpha } 稠项。

小樣本的\alpha 與拒絕域

雙側檢驗:\vert t \vert > t_{\alpha /2}(n-1) 鲜结;左側檢驗:\vert t \vert  t_{\alpha }(n-1) 展运。n是樣本量,自由度=n-1轻腺。

兩個總體參數的假設檢驗

假設形式乐疆,雙側檢驗,H0:\mu _{1}-\mu _{2} = 0贬养,H1:\mu _{1}-\mu _{2} \neq0挤土;左側檢驗,H0:\mu _{1}-\mu _{2} \geq 0误算,H1:\mu _{1}-\mu _{2} <0仰美;右側檢驗,H0:\mu _{1}-\mu _{2} \leq  0儿礼,H1:\mu _{1}-\mu _{2} >0咖杂。

檢驗統(tǒng)計量,t = \frac{(\bar{x} _{1} -\bar{x} _{2} )-(\mu _{1} -\mu _{2} )}{\sqrt{\frac{s_{1}^2 }{n1} +\frac{s_{2}^2 }{n2} } }

拒絕域與一個總體參數的假設檢驗一致蚊夫。

樣本成數:它是指樣本中具有某一相同標志表現(xiàn)的單位數占樣本容量的比重诉字,記為p≈祝總體成數:它是指總體中具有某一相同標志表現(xiàn)的單位數占全部總體單位數的比重壤圃,一般用π表示。

該假設檢驗可用于某一天的回款率情況(某天3000客戶琅轧,回款客戶所占比重為p)伍绳。

一個總體成數的假設檢驗

假設形式,雙側檢驗乍桂,H0:\pi =\pi_{0} 冲杀,H1:\pi \neq \pi_{0}左側檢驗睹酌,H0:\pi \geq \pi_{0} 权谁,H1:\pi < \pi_{0}右側檢驗憋沿,H0:\pi \leq \pi_{0} 闯传,H1:\pi > \pi_{0}

檢驗統(tǒng)計量,z = \frac{p-\pi _{0} }{\sqrt{\frac{\pi _{0}*(1-\pi _{0} )}{n} } }

拒絕域與總體參數的假設檢驗一致甥绿。

兩個總體成數的假設檢驗

n_{1} *p_{1}字币、n_{1} *(1-p_{1})、n_{2} *p_{2}共缕、n_{2} *(1-p_{2})都大于或等于5時洗出,就可以稱為大樣本,n_{1}图谷、n_{2}為兩個樣本的數量翩活,p_{1}、p_{2}為兩個樣本的成數便贵。

假設形式菠镇,雙側檢驗,H0:\pi _{1}- \pi _{2}=0  承璃,H1:\pi _{1}- \pi _{2}\neq 0利耍;左側檢驗,H0:\pi _{1}- \pi _{2}\geq 0  盔粹,H1:\pi _{1}- \pi _{2}< 0隘梨;右側檢驗,H0:\pi _{1}- \pi _{2}\leq 0  舷嗡,H1:\pi _{1}- \pi _{2}> 0轴猎,其中可根據需要將0調整為d_{0}

檢驗統(tǒng)計量进萄,z = \frac{p_{1} -p_{2}}{\sqrt{p*(1-p)(\frac{1}{n_{1}}+\frac{1}{n_{2}} )} } 捻脖,兩個樣本的合并成數p = \frac{p_{1}*n_{1}+p_{2}*n_{2}}{n_{1} +n_{2}}

d_{0} \neq 0情況下(一般形式)中鼠,z=\frac{(p_{1}-p_{2})-d_{0}}{\sqrt{\frac{p_{1} *(1-p_{1})}{n_{1} } +\frac{p_{2} *(1-p_{2})}{n_{2}}} }

二郎仆、檢驗統(tǒng)計量與樣本量計算

檢驗統(tǒng)計量

據以對原假設和備擇假設作出決策的某個樣本統(tǒng)計量稱為檢驗統(tǒng)計量,兩個簡單的例子:

1兜蠕、兩組測試,雙樣本均值顯著性檢驗抛寝,使用Z檢驗熊杨。單側檢驗值,顯著性水平為0.05時盗舰,Z_{\alpha } =1.645晶府,Z_{\alpha } > Z_{c } ,拒絕原假設钻趋。

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)分布酥宴,樣本的標準差是總體分布標準的一個很好估計,抽樣分布方差就等于總體分布方差除以樣本容量\sigma _{\bar{x}}^2 =\frac{\sigma }{n}您觉,\bar{x}為樣本均值拙寡。

當樣本容量小于30的時候,我們用樣本標準差估計的總體分布標準差是不準的琳水,一般會低估肆糕,所以出現(xiàn)了 t 分布,公式和Z 統(tǒng)計量一樣在孝,但查的是 t 表诚啃。

卡方檢驗:卡方檢驗是統(tǒng)計樣本的實際觀測值與理論推斷值之間的偏離程度,實際觀測值與理論推斷值之間的偏離程度就決定卡方值的大小私沮,如果卡方值越大始赎,二者偏差程度越大;反之,二者偏差越性於狻魔招;若兩個值完全相等時,卡方值就為0筋搏,表明理論值完全符合仆百。適合x類別型變量,y類別型變量奔脐。

樣本量計算

最小樣本量計算公式俄周,n = \frac{\sigma ^2}{\Delta ^2} {(Z_{\alpha /2} + Z_{\beta } )}^2

其中n是每組所需樣本量,因為AB測試一般至少2組髓迎,所以實驗所需樣本量為2n峦朗。\alpha 和\beta 分別稱為第一類錯誤概率和第二類錯誤概率,一般分別取0.05和0.2排龄,Z為正態(tài)分布的分位數函數波势,\Delta 為兩組數值的差異,如點擊率1%到1.5%橄维,那么\Delta 就是0.5%尺铣。\sigma 為標準差,是數值波動性的衡量争舞,\sigma 越大表示數值波動越厲害凛忿。

對兩類錯誤上限的選取(α是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ū)間的上下限疗垛,樣本平均值\pm t_{ci} *標準誤差症汹,t_{ci}為n-1自由度,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)分布表

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末巾陕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纪他,更是在濱河造成了極大的恐慌鄙煤,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茶袒,死亡現(xiàn)場離奇詭異梯刚,居然都是意外死亡,警方通過查閱死者的電腦和手機薪寓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門亡资,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人向叉,你說我怎么就攤上這事沟于。” “怎么了植康?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵旷太,是天一觀的道長。 經常有香客問我销睁,道長供璧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任冻记,我火速辦了婚禮睡毒,結果婚禮上,老公的妹妹穿的比我還像新娘冗栗。我一直安慰自己演顾,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布隅居。 她就那樣靜靜地躺著钠至,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胎源。 梳的紋絲不亂的頭發(fā)上棉钧,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音涕蚤,去河邊找鬼宪卿。 笑死的诵,一個胖子當著我的面吹牛,可吹牛的內容都是我干的佑钾。 我是一名探鬼主播西疤,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼休溶!你這毒婦竟也來了瘪阁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤邮偎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后义黎,有當地人在樹林里發(fā)現(xiàn)了一具尸體禾进,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年廉涕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡私爷,死狀恐怖鸠澈,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情层释,我是刑警寧澤婆瓜,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站贡羔,受9級特大地震影響廉白,放射性物質發(fā)生泄漏。R本人自食惡果不足惜乖寒,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一猴蹂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楣嘁,春花似錦磅轻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叭爱,卻和暖如春勤婚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涤伐。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工馒胆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缨称,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓祝迂,卻偏偏與公主長得像睦尽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子型雳,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344