數據分析必須懂的假設檢驗

在前一篇講完概率分佈後,我們再接再厲拿下假設檢驗,也就是大名鼎鼎的AB Testing。俗話說得好,再優秀的產品經理也跑不過一半AB測試。

抽樣

數據分析中,雖然數據越多越齊越好,可是受限於各類因素的制約,我們並不能獲取全部的數據。比如Excel的性能限制,比如數據庫不支持大文件導出、或者是無法全量進行的用戶調研等。

抽樣是一種應對方法,通過樣本來推斷總體,抽樣結果提供的僅僅是相應總體特征的估計,「估計」這一點很重要。

抽樣有很多方式,樣本首要滿足隨機性。比如進行社會訪談,你不能隻選擇商場人流區,因為采訪到的人群明顯是同一類人群,反而會遺漏郊區和鄉鎮的人群,遺漏宅男,遺漏老人。

互聯網產品中,抽樣也無處不在,大名鼎鼎的AB測試就是一種抽樣,選取一部分人群驗證運營策略或者產品改進。通常篩選用戶ID末尾的數字,比如末尾選擇0~4,於是抽樣出瞭50%的用戶,這既能保證隨機性,也能保證控制性。

畢竟抽樣的目的是驗證和檢驗,需要始終保證用戶群體的完全隔離,不能用戶一會看到老界面,一會看到改進後的新界面。以上也適用於推薦算法的冠軍挑戰,用戶分群等。

至於放回抽樣,分層抽樣,在互聯網的數據分析中用不太到,這裡就略過瞭。

點估計

既然我們已經知道如何選擇一個樣本,接下來需要從樣本推斷總體。

列舉一個場景。產品和運營人員每周都會進行一次用戶調研,調研隨機抽取30位用戶對產品進行打分,分數0~10。根據歷史數據計算出平均7.5分,標準差為1分。

現在的問題是,用戶調研能否反應一些產品的狀況?比如發佈新版本,或者做瞭營銷活動後,怎麼判斷是正面影響還是負面?假設本月產品經理們發佈瞭一次新版本,這次調研抽取30位用戶平均評分是7.3,究竟是正常的波動還是做糟糕瞭?

在統計學中,把總體的平均值標準差等稱為總體參數,把樣本的種種指標稱為點估計量。s是樣本標準差,σ是總體標準差。n是樣本,N是總體。

點估計在原有的符號上加橫線表示,比如樣本均值,念做x拔(打出這個字符麻煩,我簡稱為拔瞭)。

x拔是樣本均值,現實中不可能保證每次調研的數據都是一致的,假設將抽樣過程一而再,再而三的進行下去,那麼調研獲得的平均分也是波動的。此時,樣本均值x拔是一個隨機變量,稱它的概率分佈為x拔的抽樣分佈。

每次抽樣得出的不同均值,必然會有一個期望值,E(x拔) = u,E(x拔)就是所有大量抽樣的可能值的均值。對簡單隨機抽樣,我們可以認為其數學期望等於u總體均值。當點估計量的期望值等於總體參數時,稱為無偏估計。

當樣本量占總體5%以上時,有求樣本標準差公式如下:

sigma_{bar{x} }=sqrt{frac{N-n}{N-1} }frac{sigma}{sqrt{n} }

當樣本量占總體5%以下時,公式可以簡化成:

sigma_{bar{x} }=frac{sigma}{sqrt{n} }

利用上述的兩個公式,可以計算出樣本的標準差。回到用戶調研的問題,它的總體均值為7.5,因為調研的用戶量肯定小於總體5%,於是能求出樣本的標準差為0.18。

上述數學期望和標準差的計算適用於所有總體,可如果想要知道具體的概率呢?比如分數小於等於7.3的可能性?如果是10%,那麼說明這是稀少的情況,產品的改版未必盡如人意。如果是90%,說明這是數據的正常波動。

x拔作為概率分佈,也非為正態分佈和非正態分佈。根據統計學中的中心極限定理,當樣本數足夠時(n>30),x拔的抽樣分佈可近似於正態分佈。

隻要是正態分佈就好辦瞭,把問題轉換成標準正態分佈的概率求解。調研樣本評分x=7.3分,標準差σ為0.18。總體均值u為7.5分。

z=frac{x-u}{sigma }

z = (7.3-7.5)/0.18 = -1.11。於是P(x<=7.3)=P(z<=-1.1) = 13.3%。上述結果說明,本次抽樣得到7.3分(或者更低)的概率為13.3%,產品人員或許可以相信,這次改版並不好。

通過抽樣估算總體,它的概率計算是以樣本標準差作為依據的,換言之,如果樣本標準差變化,則概率一定變化。而樣本標準差和樣本容量n息息相關。如果調研用戶數是100位,那麼哪怕其他數字沒變化,最終概率也會變成2.2%。這是樣本容量增加,均值的標準差減少瞭誤差。

區間估計

點估計是用於估計總體參數的樣本統計量,我們不可能通過點估計就給出總體參數的一個精確值,更穩妥的方法是加減一個邊際誤差,通過一個區間值來估計。

上文的用戶調研案例,已經知道瞭總體均值和標準差。可是它的總體均值也隻是通過歷次調研作出的假設,並不能反應產品所有用戶的評價。一個更實際的應用是,如何通過一次調研來計算用戶的總體評價。這是反其道而行之。

通過調研的歷史數據,已經知道瞭用戶打分的標準差是1。最近產品人員進行瞭一次大規模的調研,訪問瞭200位用戶,得到樣本均值7.5分。現在需要計算總體均值的區間。

通過點估計公式,可以得出樣本標準差為0.07。在正態分佈的經驗公式中,已知任何正態分佈的隨機變量都有95%的值落在均值附近1.96個標準差以內。因此x拔的值一定有95%落在均值u的1.96個標準差以內。

此時,1.96個標準差等於1.96*0.07 = 0.13。利用總體均值的區間估計公式:

bar{x} pm z_{sigma/2}frac{sigma}{sqrt{n}}

將數據代入:

7.5 pm z_{sigma/2}frac{1}{sqrt{200}}

這裡多出瞭一個新的符號Zσ/2,稱之為置信水平,之所以除2是因為正態分佈左右對稱。它代表的是「隨機變量都有95%的值落在均值附近1.96個標準差以內」,即均值有95%的概率落在這個區間內,也叫做95%置信水平。推廣開來,也有90%置信水平,99%置信水平等。

1.96是95%置信水平的Zσ/2值,我在上文已經求出邊際誤差為0.13,最後加入平均值得到答案7.36~7.64,於是可以說,通過調研樣本均值估計,總體用戶的打分有95%的概率在7.36~7.64之間。我們把[7.36,7.64]叫做置信區間。

大傢可能也已經猜出來瞭,為瞭獲得更高的置信水平,必然會得到更寬的置信區間。比如我假設一個置信區間是[7,8],那麼它的置信度肯定無限接近100,因為它幾乎囊括瞭所有的可能。如何選擇置信水平和區間,是數據分析中的要點之一。

區間估計中還有一種常見情況,即σ未知,上文的案例我們知道瞭總體的標準差,如果標準差也不知道呢?畢竟案例也隻是以歷史調研數據假設瞭標準差,未必反應瞭用戶真實的情況。於是再給出一個新的問題,訪問瞭200位用戶,得到樣本均值7.5分,標準差為2,那麼總體均值是多少?

通過樣本標準差估計總體標準差,總體均值是以t分佈(上文對應的叫做z分佈)的概率分佈為依據。t分佈假設抽樣總體滿足正態分佈,但是非正態分佈中,也是能用t的,效果不錯。

t分佈依賴一種叫自由度df的的參數。與標準正態分佈曲線相比,df越小,t分佈曲線愈平坦;df愈大,t分佈曲線愈接近正態分佈曲線,當df=∞時,t分佈曲線為標準正態分佈曲線。區間估計公式如下:

bar{x} pm t_{sigma/2}frac{s}{sqrt{n}}

公式沒有大的變化,總體標準差σ變化為樣本標準差s,置信水平由t概率表計算。t概率的區間分佈,需要自由度和置信水平兩個參數。自由度=樣本量-1,案例中的自由度為199。然後使用Excel的TINV( )函數計算,當置信水平為95%時,TINV(0.05,199)=1.97。代入公式:

7.5 pm 1.971frac{2}{sqrt{200}}

得到區間[7.22,7.77],在總體標準差未知的情況下,可以通過樣本均值7.5和標準差2計算總體均值有95%的概率落在7.22~7.77之間。

假設檢驗

在熟悉掌握點估計和區間估計之後,深入學習假設檢驗。

何為假設檢驗?假設檢驗是對總體參數做一個嘗試性的假設,該嘗試性的假設稱為原假設,然後定義一個和原假設完全對立的假設叫做備選假設。假設檢驗就是通過樣本數據對兩個對立假設進行檢驗。

假設檢驗有一套成熟的方法論。從參數看,即可以計算平均數,也可以計算比率。從樣本看,可以劃分為單樣本和雙樣本。單樣本是從總體中抽取一部分進行樣本均數和總體均數的比較。用戶調研就是一個典型的單樣本。從假設的條件看,有單側檢驗(僅大於或小於的可能性)和雙側(僅不可能,包含大於和小於兩種情況)檢驗。

數據分析中更多的情況是兩組樣本的比較,譬如男女用戶的差異、用戶群體的差異、以及產品AB測試的好與壞。因為篇幅原因,案例將重點放在雙樣本檢驗中,單樣本檢驗熟悉點估計和區間估計後不難。

回到最開始的案例,當通過調研發現用戶對產品評分下降瞭,接下來得討論怎麼做。產品經理們說:用戶都傻兮兮的,它們對產品改版無法作出有效的判斷,所以打分不算數,應該用一套更好的判斷方法。

這時以產品改版後的活躍相關指標作為標準,其中一半用戶不做改變,還是原始功能,成為對照組。另外一半用戶體驗新功能,為改進組,然後根據一段時間後的表現來判斷改版好與不好。

活躍指標怎麼設立很大程度影響如何用假設檢驗。既可以用均值法,即用戶平均使用時長,或一段時間窗口內的平均活躍用戶數來衡量,也可以用比例法,即某一時間內的活躍率。兩者對應不同的公式,這裡以平均活躍用戶數舉例。

假設檢驗首先需要設立原假設和備選假設,這裡很容易犯錯。在許多假設檢驗中,都以備選假設為出現點,它是希望得到支持的結論。因為之前用戶調研的評分是下降的,於是檢驗更希望「拒絕」活躍上升或不變,從而得出下降的結論。

原假設H0:活躍提升或不變;備選假設Ha:活躍下降。如果樣本結果得出拒絕H0的結論,那麼可以做出Ha為真的推斷。

不同的樣本量和總體方差使用的檢驗方法不同,下圖是不同情況下使用的檢驗方法。樣本是否大於小於30是因為中心極限定理,在大樣本量,且總體方差未知時,使用t檢驗還是z檢驗均可,因為t分佈近似於z分佈。我們使用z檢驗做雙樣本均值。

將用戶分割出兩個群體體驗產品功能,原始對照組和改進組都有50000用戶。對照組的七日平均活躍數u1=8500,標準差為s1=1250,改進組的七日平均活躍數為u2=8300,標準差s2=1240。當總體標準差未知時,有公式:

z=frac{bar{x_{1} } -bar{x_{2} }}{ sqrt{ {frac{s_{1}^{2} }{n1}+frac{s_{2}^{2}}{n2}} } }

計算出z=25.399,遠大於1.96,p值無限接近0,幾乎不可能發生,也就說明改進組的活躍上升或者等於是個極小概率事件,我們拒絕瞭原假設,接受瞭備選假設。若還想深入的查看活躍究竟下降瞭多少,使用雙樣本均值計算置信區間:

(bar{x}_{1}-bar{x}_{2} )pm z_{sigma /2} sqrt{frac{s_{1}^{2} }{n1}+frac{s_{2}^{2}}{n2}}

兩個樣本均值之差的95%置信區間為[183.566,215.433]。也就是說七日平均活躍數有95%的可能性下降瞭183~215之間。

假設檢驗的難點在於諸多知識點和業務的結合使用,限於文章的篇幅,我省略瞭不少概念點,這塊需要大傢多練習,比如用曾經文章的練習數據,計算上海和杭州的數據分析師工資均值是否相等,金融的工資是不是比電商的高。實際分析中不會有那麼復雜的計算,我知道大傢公式看暈瞭,不論Excel、R或者Python都有簡便的函數使用,隻要知道結果的符號意義就行瞭。

————

統計的內容告一段落瞭,這些都是比較基礎的知識點,沒有寫得過於復雜,其一因為我統計本身不擅長(讀書時沒好好學),其二應用中我也不追求背後的數學原理。這大概是我寫得最吃力的系列瞭。雖然還有時間序列,方差分析等內容,就留待以後吧。

下一篇文章寫業務,因為歷史文章已經涉及不少,反復講沒啥意思,所以一篇文章足矣,將數據中涉及的各類業務指標和知識點明即可。然後就是Python瞭。嗯,基礎數據分析的內容已經倒計時瞭。

—————

歡迎大傢關註我的個人公眾號:tracykanc

赞(0)