網站分析08——使用student’s T檢驗的未必是學生

筆者認爲,數據的價值不僅僅只體現在企業中,個人也可以體會到數據的魅力,用技術力量探索行爲密碼,讓大數據助跑每一個人,歡迎直筒們關注我的公衆號,大家一起討論數據中有趣的事情。

我的公衆號爲:livandata

一直想整理一下統計方法在網站分析中的應用,剛好前幾天遇到類似的問題,借這個機會整理一下網站分析中T檢驗的思路。在統計面前我們並沒有生產方法,我們只是方法的搬運工,希望能用的恰到好處而已。T檢驗全稱爲student’s T檢驗,是由19世紀末的一位釀酒師戈塞特推導出的小樣本統計方法,因其發表研究成果時用的筆名爲“學生”,這一方法被稱作是student’s T檢驗,雖有其名,但使用者卻未必是學生。

產品經理在進行產品方案選擇時,往往會面臨多個方案選擇的情況,面對這樣的問題,最簡單直接的方法是找一個相同的指標,分別在多個方案上進行計算,查看計算結果的差異,這一方式固然是最爲簡單的,但是引發的弊端也非常的明顯,比如:測試往往會針對不同的人羣、不同的數據量,這些因子會對計算的結果產生影響,但是在上面單純指標的計算中,卻並沒有將其考慮在內,導致計算結果並不公正。

    爲解決上面的問題,大家開始使用統計學中的T檢驗來進行結果計算,這一方法剝離了數據中的業務屬性,單純從統計的角度考慮兩組數據所對應的方案的差異,能有效避免不同人羣、不同數量集引發的計算差異。

    T檢驗的優勢除了他自身的統計屬性外,還在於他的穩定性,這一方法對數據的正態性有一定的耐受能力,當數據不滿足正態時,可以採用一定的數據變換方式,將數據轉換成正態,進而使用這一方法進行計算。

一  哪些場景下會用到T檢驗和方差檢驗

    在產品設計中,能夠用到T檢驗的地方非常多,我們最常見的就是A/B測試:在進行網站功能優化時,每個設計師或產品經理會產生不同的設計思路,最終形成多個設計方案,那麼問題來了,如果不能進行公正的分析,用哪一個方案就成了一種風險性決策。方案上線到APP上如果不能引發用戶的積極態度,不僅會影響產品的活躍度,更有可能影響產品進一步的優化。爲公正起見,在A/B測試的場景中,經常會看到T檢驗的影子。

    除了A/B測試外,T檢驗還常被用在對網站進行改版或推廣上,APP上線一個新的功能或者設計一個新的推廣活動,其效果是否會有明顯的不同,就需要進行T檢驗。此時往往會在不同時間段取兩組數據,計算兩組相同的指標,對兩組指標進行對比。講一個相對專業一點的話語:這一方法實際上是在檢驗一個二元分類變量是否對一個連續變量有明顯的影響。

    另外,在運營推廣活動中,優惠券的設計是設計成“滿15減3”還是“滿15減5”?在頁面設計中,按鈕是設計在頁面頂部還是在頁面底部?在問卷調查中,題目是設計7個還是設計10個?這些實驗性的、選擇性的方案中,往往都會有T檢驗的身影。

    總結可知,T檢驗的應用場景是在方案選擇中,而使用的範圍則可以總結爲:

1)樣本來自的總體應服從或近似服從正態分佈;

2)兩樣本相互獨立,樣本數可以不等;

兩獨立樣本T檢驗目的是:利用來自兩個總體的獨立樣本,推斷兩個總體是否存在顯著差異。

二  T檢驗和方差檢驗的原理

    T檢驗在統計學中是與Z檢驗、卡方檢驗齊名的三大統計方法之一,在網站分析中得到廣泛的應用,T檢驗以假設檢驗爲分析基礎,在假設成立的基礎上查看樣本數據對各種分佈的滿足程度。

    首先,我們來了解一下假設檢驗方法:

    假設檢驗是用反證法來證明某一假設是否成立的方法,其思路爲:

  1. 假定這個假設H0是成立的,並構造出一個服從某一分佈F(X)的統計量X(X~F(X));
  2. 計算服從分佈F(X)的隨機變量x大於(或小於)統計量X的概率P{X<x}(或者P{X>x}),這一概率值記爲p-value;
  3. 選定一個顯著性水平alpha,如果p-value<alpha,則認爲原來的假設H0不成立;如果p-value>alpha,則認爲原來的假設成立。

數據的語言總是很生硬的,因爲其嚴謹性要求他必須字斟句酌,但是我們在生活中卻需要一些聽得懂的表達來理解,我儘量用一些通俗的語言,幫助大家理解這一思路:

我們先來解釋一下顯著性水平表示的是什麼,所謂的顯著性水平alpha是值一次實驗中小概率事件發生的概率,統計中往往會假設小概率事件是不會發生的事件,所以小概率事件會被稱作是錯誤概率,例如:alpha=0.05即爲小概率事件發生的概率界限爲0.05,小於這一概率即爲小概率事件(即爲錯誤概率),大於這一概率則爲非小概率事件(即爲正確概率)。在假設檢驗中常用的顯著水平取值有:

對假設的檢驗標準

顯著性水平alpha的值

放鬆的檢驗標準

0.1或者0.075

一般情況

0.05

嚴格的檢驗標準

0.025或者0.01

理解完顯著性水平之後,我們就可以探索假設檢驗了:

以A/B測試爲例,假設A、B兩個方案無顯著差異,即H0成立(H0和H1的定義見如下解釋,指標x往往是用均值來計算):

H0:不同方案(統計中將其稱爲不同的水平)中,指標x沒有顯著性差異;

H1:不同方案中,指標x有顯著性差異;

我們假設H0成立,並依據樣本的數據構造一個統計量X,根據假設這一統計量就會服從F(X)分佈,則隨機產生的數據大概率會落到這一分佈中,落在這一分佈長尾中的數據相對較少,我們選擇顯著性水平爲0.05,則長尾概率小於0.05的事件即爲小概率事件,也即不可能發生的事件,這一事件發生時,我們推翻H0假設,即H1成立,兩個方案有顯著性差異。

圖中陰影部位即爲小概率發生事件的位置,也就是長尾發生的位置,在進行假設檢驗中往往存在兩個注意點:一個是兩類錯誤(alpha錯誤和beta錯誤);另一個是單尾檢驗和雙尾檢驗(本文的T檢驗是雙尾檢驗)。因爲本文的思路是先構建一個T檢驗的基本思路,所以,這兩個注意點在本文中暫不做介紹。

    在瞭解完假設檢驗之後,我們的T檢驗方法就呼之欲出了,下面我們介紹一下T檢驗的思路:

1)建立檢驗假設和確定檢驗水準。H0: μ=μ0,H1: μ≠μ0,α=0.05,雙側檢驗;

2)選定檢驗方法和計算統計量。用單樣本的t檢驗;

在不同的前提下可以構建不同的統計量,並且服從不同的分佈狀態,總前提是涉及檢驗的兩組數據都服從正態分佈。

    本文中以正態分佈爲例進行計算,在正態情況下,t值的計算公式爲:

                                                           df=n-1

公式中的含義轉化成文字即爲 :t值=(兩個樣本殘差的均值-理想情況下殘差均值)/殘差標準差,計算殘差的情況下u0=0。

通過上面的公式可以計算出對應的t值,以及自由度df。                                                                                                                       

3) 確定P值和作出推斷結論。

在確定好t值和自由度後,我們就需要確定對應的P-value值,然後再以這個P-value值與顯著性水平alpha做比較,即可確定兩個方案是否是顯著性差異。

傳統的統計學中存在一個t分佈表,記錄了t-p的轉化關係,主要思路是通過確定的自由度n和單尾顯著性水平alpha/2查找出對應的標準t值,然後將運算的t值與標準t值進行比較,得出p-value值與alpha的關係。

P<alpha時拒絕原假設,兩個方案存在顯著性差異。

感覺大家在看到這裏的時候,對T檢驗馬上就要失去信心了,一個方案選擇而已,又是t值,又是p值的,好不麻煩,臨了還給出一個t分佈表,簡直要放棄掉;好在現在互聯網發展快速彌補了這一缺陷,將這一流程封裝成函數,簡化了這一流程,我們只需要輸入兩個樣本數組,就可以得出兩個方案對應的p-value值,直接將p-value與alpha進行比較即可。

T檢驗的應用涉及面非常廣泛,自身也有其不足之處,比如面對三個或三個以上的方案選擇時,T檢驗就失去了作用,此時可以藉助方差檢驗,方差分析又會有單因素方差分析、單因素協方差分析、雙因素方差分析、含兩個協變量的雙因素協方差分析等多種方式,各種繁瑣,此處也只能是拋磚引玉,梳理出一個常用的思路而已,對於方差分析,我就不多做描述了。

3  網站頁面設計方案A/B測試的顯著性影響分析

在做頁面設計時,對於按鈕在頂部還是底部進行AB測試,通常希望獲知它對網站流量pv是否有顯著的影響。基於分析目的,我們獲取兩個方案各15天pv數據:

pv-top

10231

12874

11229

9870

11804

11654

13259

11891

12876

14562

12933

13548

15230

13815

15766

pv-but

10740

13368

11730

10384

12302

12159

13735

12389

13381

15067

13415

14034

15739

14327

16267

   1)在進行使用這一數據進行檢驗時首先要驗證數據的正態性,如果不符合正態特性,則需要將數據正態化之後再進行檢驗。

    2)利用levene檢驗兩個樣本的方差齊次性(方差齊次性可簡單理解爲兩總體方差相等,有興趣可以百度深入瞭解):

如果返回結果的p值遠大於0.05,那麼我們認爲兩總體具有方差齊次性。

如果兩總體不具有方差齊性,需要加上參數equal_val並設定爲False。

對應計算代碼如下:

#!/usr/bin/env python
# _*_ UTF-8 _*_
# author:livan
from scipy import stats
data1 = [10231,12874,11229,9870,11804,11654,13259,11891,12876,14562,12933,13548,15230,13815,15766]
data2 = [10740,13368,11730,10384,12302,12159,13735,12389,13381,15067,13415,14034,15739,14327,16267]
# 正態性檢驗:
print(stats.shapiro(data1))
print(stats.shapiro(data2))
# 方差齊次性檢驗:
print(stats.levene(data1, data2))
# 在具有方差齊次性時,檢驗結果爲:
print(stats.ttest_ind(data1, data2))
# 在不具方差齊次性時,檢驗結果爲:
print(stats.ttest_ind(data1, data2, equal_var=False))

結論:

通過上面的運算我們可以得出,兩個樣本具有方差齊次性,推廣前後兩個樣本的P-value=0.427,而alpha值對應爲0.05,因此P-value>alpha,兩個方案差異性不明顯。

 

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