瞭解一些統計學知識對正確地進行 A/B 測試和研判試驗結果是很有幫助的,本篇文章深入介紹了A/B 測試的原理和背後的統計學依據。完全理解本文中提到的數學計算需要你掌握概率方面的一點基礎知識。
統計學在 A/B 測試中的作用
A/B 測試是一種對比試驗(下文中對比試驗特指 AppAdhoc 平臺上的 A/B 測試),而試驗就是從總體中抽取一些樣本進行資料統計,進而得出對總體引數的一個評估。可以看出,做試驗並從試驗資料中得出有效結論的科學基礎是統計學。
統計學的基本概念
總體:是客觀存在的、具有某一共同性質的許多個體組成的整體; 總體是我們的研究物件,在對比試驗中,總體就是網站/App的所有使用者。
樣本:所謂樣本就是按照一定的概率從總體中抽取並作為總體代表的一部分總體單位的集合體; 樣本是我們的試驗物件,在對比試驗中預設的對照版本和測試版本的使用者都是樣本。
引數:用來描述總體特徵的概括性數字度量,稱為引數,如總體平均數(μ);在對比試驗中總體引數就是所有使用者的某個優化指標的平均值。
統計量:用來描述樣本特徵的概括性數字度量,稱為統計量,如樣本平均數(x);在對比試驗中統計量就是測試版本使用者的某個優化指標的統計平均值。
均值:變數值的算數平均數。
方差:各變數值與其算術平均數離差平方的算術平均數。標準差是方差的平方根。
正態分佈:是一種應用非常廣泛的概率分佈,它是下面介紹的假設檢驗等統計推斷方法的數學理論基礎。
所以,對比試驗的工作原理就是統計對照版本和測試版本兩個樣本的資料(樣本數量,樣本平均數和方差等),通過以正態分佈為基礎的統計學公式進行計算,衡量測試版本的總體引數(均值)是否比對照版本的總體引數有確定性的提升。
抽樣
抽樣是指按照隨機原則,以一定概率從總體中抽取一定容量的單位作為樣本進行調查,根據樣本統計量對總體引數作出具有一定可靠程度的估計與推斷。
抽樣最重要的問題是抽取的樣本是否能夠代表總體。如果樣本沒有代表性,那麼以樣本的統計量資料來對總體引數進行估計就沒有邏輯基礎。
AppAdhoc 試驗引擎的使用者流量分割演算法根據使用者特徵對使用者進行聚類,把使用者分為具有相同代表性的多個小組,然後通過隨機抽樣的方式得到測試版本的使用者群(樣本),保證了樣本的代表性。
引數估計
引數估計是一種統計推斷方法,用樣本統計量去估計總體引數。 總體的統計指標在一定範圍內以一定的概率取各種數值,從而形成一個概率分佈,但是這個概率分佈可能是未知的。 當總體分佈型別已知(通常是正態分佈),僅需對分佈的未知引數進行估計的問題稱為引數估計。
用來估計總體引數的統計量的名稱稱為估計量,如樣本均值;估計量的具體數值稱為估計值。引數估計方法有點估計與區間估計兩種方法。
用樣本估計量的值直接作為總體引數的估計值稱為點估計。例如在對比試驗中,預設對照版本的優化指標均值就是對預設版本總體的優化指標均值的一個點估計。
我們必須認識到,點估計是有誤差的,樣本均值不能完全代表總體均值。 在一些比較粗糙的 A/B 測試方式中,試驗者得到對照版本和測試版本的均值之後,直接比較它們的大小,由此得出哪個版本更優的結論,這樣的做法誤差是非常大的,結論的可靠性沒有保障。
點估計只能給出總體引數的一個大概值,但不能給出估計的精度。區間估計就是在點估計的基礎上,給出總體引數的一個概率範圍。區間估計的幾個要素是點估計值、方差、樣本大小以及估計的置信水平。 專業的 A/B 除錯工具會通過結合這些要素的統計學公式來對結果進行科學地評估,而不是簡單粗糙地比較點估計值的大小。
假設檢驗
從 A/B 測試的試驗原理來看,它是統計學上假設檢驗(顯著性檢驗)的一種形式。
假設檢驗(中的引數檢驗)是先對總體的引數提出某種假設,然後利用樣本資料判斷假設是否成立的過程。邏輯上運用反證法,統計上依據小概率思想。
小概率思想是指小概率事件(顯著性水平 p < 0.05)在一次試驗中基本上不會發生。反證法是指先提出假設,再用適當的統計方法確定假設成立的可能性大小;如可能性小,則認為假設不成立。
具體到對比試驗,就是假設測試版本的總體引數(優化指標均值)等於對照版本的總體引數,然後利用這兩個版本的樣本資料來判斷這個假設是否成立。
假設檢驗的基本概念
統計假設:是對總體引數(包括總體均值μ等)的具體數值所作的陳述。
原假設:是試驗者想收集證據予以反對的假設 ,又稱“零假設”,記為 H0; 對比試驗中的原假設就是測試版本的總體均值等於對照版本的總體均值。
備擇假設:也稱“研究假設”,是試驗者想收集證據予以支援的假設,記為 H1; 對比試驗中的備擇假設就是測試版本的總體均值不等於對照版本的總體均值。
雙側檢驗與單側檢驗:如果備擇假設沒有特定的方向性,並含有符號“≠”,這樣的稱為雙側檢驗。如果備擇假設具有特定的方向性,並含有符號 “>” 或 “<” 的假設檢驗,稱為單側檢驗。
提出假設
原假設和備擇假設是一個完備事件組,而且相互對立。在一項假設檢驗中,原假設和備擇假設必有一個成立,而且只有一個成立。 在對比試驗中,因為我們試驗的目的是通過反證法證明測試版本和對照版本有明顯的不同(提升),所以我們的原假設是測試版本的總體均值等於對照版本的總體均值。
假設檢驗的兩類錯誤
第 I 類錯誤(棄真錯誤):原假設為真時拒絕原假設;第 I 類錯誤的概率記為 α(alpha)。
第 II 類錯誤(取偽錯誤):原假設為假時未拒絕原假設。第 II 類錯誤的概率記為 β(Beta)。
α 是一個概率值,表示原假設為真時, 拒絕原假設的概率,也稱為抽樣分佈的拒絕域。在這兩類錯誤中,相對更加嚴重的是第 I 類錯誤,所以 α 的取值應儘可能小。常用的 α 值有 0.01,0.05,0.10, 由試驗者事先確定。對比試驗中使用的 α 值是 0.05(5%),這是顯著性檢驗中最常用的小概率標準值。
顯著性水平 p(p-value)
顯著性水平 p是指在原假設為真的條件下,樣本資料拒絕原假設這樣一個事件發生的概率。例如,我們根據某次假設檢驗的樣本資料計算得出顯著性水平 p = 0.04;這個值意味著如果原假設為真,我們通過抽樣得到這樣一個樣本資料的可能性只有 4%。
那麼,0.04 這個概率或者說顯著性水平到底是大還是小,夠還是不夠用來拒絕原假設呢?這就需要把 p 和我們採用的第 I 類錯誤的小概率標準 α 來比較確定。假設檢驗的決策規則:
若 p ≤ α,那麼拒絕原假設;
若 p > α,那麼不能拒絕原假設。
如果 α 取 0.05 而 p = 0.04,說明如果原假設為真,則此次試驗發生了小概率事件。根據小概率事件不會發生的判斷依據,我們可以反證認為原假設不成立。
顯著性水平 p 的計算公式取決於假設檢驗的具體方式,將在下文的 t 檢驗部分介紹。
統計顯著性 (Significance)
在假設檢驗中,如果樣本資料拒絕原假設,我們說檢驗的結果是顯著的;反之,我們則說結果是不顯著的。一項檢驗在統計上是“顯著的”,意思是指這樣的樣本資料不是偶然得到的,即不是抽樣的隨機波動造成的,而是由內在的影響因素導致。
t 檢驗
常用的假設檢驗方法有 z 檢驗、t 檢驗和卡方檢驗等,不同的方法有不同的適用條件和檢驗目標。t 檢驗(Student’s t test)是用 t 分佈理論來推斷兩個平均數差異的顯著性水平。
我們的對比試驗是用對照版本和測試版本兩個樣本的資料來對這兩個總體是否存在差異進行檢驗,所以適合使用 t 檢驗方法中的獨立雙樣本檢驗。
為了簡化,對比試驗忽略了樣本大小在 30 以下的小樣本情況(視為結果不顯著),按大樣本檢驗公式進行 p-value 的計算。
首先通過 t 檢驗公式計算出檢驗統計量 Z 的值:
x1:樣本 1 均值;x2:樣本 2 均值;
S1:樣本 1 標準差;S2:樣本 2 標準差;
n1:樣本 1 大小;n2:樣本 2 大小;
然後通過 t 分佈(大樣本情況下近似正態分佈)的公式計算得出和 Z 值對應的 p 值。
p 值算出來之後,我們就可以根據 p 值按照前面介紹的假設檢驗決策規則來判斷這兩個樣本均值的差異是否顯著了。
小結
下面我們以 AppAdhoc 後臺 Demo App 的試驗 page_order02 為例來走一遍對比試驗的整個過程,從統計假設檢驗的角度來看看 AppAdhoc 是怎麼處理試驗資料並得出結論的。
page_order02 這個試驗的目的是測試不同頁面順序對購買點選的影響,它設計了一個具有不同頁面順序的測試版本 experiment_1_page_order02 和對照版本 CONTROL-page_order02 進行對比, 每個版本的使用者流量分配都是 7% 的使用者,通過 buy_success 優化指標來衡量試驗的結果。
試驗開始之後,AppAdhoc 試驗引擎通過抽樣把兩個具有相同代表性的使用者群體(樣本)分配到這兩個版本。試驗執行一段時間之後 buy_success 指標有如下資料(方差資料未在表格中顯示):
總體和樣本
此試驗中,總體就是應用的所有使用者,涉及到兩個樣本:CONTROL-page_order02 的 33771 個使用者和 experiment_1_page_order02 的 34190 個使用者。
原假設
在此試驗條件下,假設檢驗的原假設就是:experiment_1_page_order02 版本的 buy_success 指標的總體均值等於 CONTROL-page_order02 版本的 buy_success 指標的總體均值。也就是說,如果應用採用新的頁面順序,所有使用者的 buy_success 指標的均值相比原頁面順序下的均值沒有差異。
如果原假設不成立,說明 experiment_1_page_order02 和 CONTROL-page_order02 這兩個樣本不是來自同一個總體;換句話說,採用新頁面順序的所有使用者的表現和採用原頁面順序的所有使用者的表現是有本質區別的。因為這兩個樣本的代表性是相同的,唯一的區別在於頁面順序, 所以我們可以推斷得出頁面順序的改變是有效果的,試驗的目的就達到了。
p-value 的計算
接著要做的就是根據這兩個樣本的資料按照前面介紹的 t 檢驗的公式來計算原假設的顯著性水平 p 值。
x1:CONTROL-page_order02 版本的 buy_success 均值 (23.01);
x2:experiment_1_page_order02 版本的 buy_success 均值 (22.11);
S1:CONTROL-page_order02 版本的 buy_success 標準差 (53.21);
S2:experiment_1_page_order02 版本的 buy_success 標準差 (50.21);
n1:CONTROL-page_order02 版本的樣本大小/使用者數 (33771);
n2:experiment_1_page_order02 版本的樣本大小/使用者數 (34190);
通過上面介紹的t檢驗大樣本檢驗公式計算得出 Z = 2.28,然後根據正態分佈公式由 Z 值計算得出 p-value = 0.01。
0.01 < 0.05,根據決策規則我們可以下結論此次檢驗的統計顯著性是“顯著”,即原假設不成立,改變頁面順序顯著地影響了購買點選。
測試結果的好壞
現在我們知道初步的試驗結果了,這次試驗是具有統計顯著性的,我們可以繼續研讀試驗的資料,得出進一步的結論。 如果結果不顯著,說明樣本數量可能還不夠,應該等待試驗繼續執行;如果試驗已經充分執行,說明結論是原假設不能被拒絕,我們不能確定改變頁面順序會顯著地影響購買點選。
我們接著看兩個版本(樣本)的均值,experiment_1_page_order02 的均值 22.11 比 CONTROL-page_order02 的均值 23.01 小,變化(提升)是 -3.90%。 我們現在更清楚了,測試版本的 buy_success 指標均值下降了,頁面順序的改動對購買點選有負面的影響,我們不應該釋出這個版本。
OK,至此我們可以得出明確的結論了:檢驗結果顯著,測試版本和對照版本有明顯不同,但是提升效果是負面的。
置信區間
好吧,事還沒完。我們知道測試結果好壞之後,還可以更深入地檢視它大概好了多少,或者差了多少。
experiment_1_page_order02 的均值 22.11 和 CONTROL-page_order02 的均值 23.01 都是點估計,所以來自這兩個均值比較得到的變化百分值 -3.90% 也是點估計,它是有誤差的。 前面的引數估計部分已經提到了,我們需要區間估計的方法來得到一個概率範圍,這才是比較準確的描述。
置信區間(Confidence interval)就是用來對一個概率樣本的總體引數的進行區間估計的樣本均值範圍。置信區間展現了這個均值範圍包含總體引數的概率,這個概率稱為置信水平。
置信水平代表了估計的可靠度,一般來說,我們使用 95% 的置信水平來進行區間估計。簡單地講,置信區間就是我們想要找到的這麼一個均值區間範圍,此區間有 95% 的可能性包含真實的總體均值。
根據統計學的中心極限定理,樣本均值的抽樣分佈呈正態分佈。因此,通過相關的公式我們可以計算出兩個總體均值差的95%置信區間。
結果為:[-0.9 – 0.778, -0.9 + 0.778]
即區間 [-1.678, -0.122] 有 95% 的可能性包含兩個總體均值之差。
為了更直觀,我們把這個總體均值差的置信區間轉換為相比對照版本均值的變化的百分比置信區間:
[變化1,變化2]
變化1 = -1.678 / 23.01 = -0.073 (-7.3%)
變化2 = -0.122 / 23.01 = -0.005 (-0.5%)
變化百分比形式的置信區間為:[-7.3%, -0.5%]
最後,我們可以這麼評價試驗的結果:測試版本不如對照版本,有 95% 的可能性差了 0.5% 到 7.3% 之間。
參考資料
《應用統計學》
《生物統計學基礎》
------
本文由吆喝科技(微信:appadhoc)資料科學團隊釋出。
喲,歡迎公號裡勾搭:-)