標籤:

獨立雙樣本檢驗(A/B測試)-鞋適不適合只有腳知道

獨立雙樣本檢驗(A/B測試)-鞋適不適合只有腳知道

能夠定義互聯網公司的並不是是否有網站,而是是否會用A/B測試、是否有很短的周期迭代、是否把決策權由CEO交給工程師和產品經理。---吳恩達

一、A/B測試

  • 當一個公司在遇到「從多個方案中確定一個」的問題時,傳統的解決辦法通常是集本討論表決或者由某位專家或領導進行拍板,實在決定不了的,也會隨機選擇一個。雖然傳統的解決辦法在多數情況下也是有效的,但A/B測試是解決這類問題的更有效的科學方法。
  • A/B測試是為同一個目標制定兩個版本,讓一部分用戶使用A版,另一部分用戶使用B版本,記錄這些用戶的使用數據,比較各個版本對於給定目標的轉化效果,最後選擇效果最佳的版本正式發布給全部用戶。
  • Airbnb用A/B測試驗證提供了專業攝影的房源信息會容易租出去
  • Google用A/B測試來調整和測試他們的演算法和網站的設計
  • Facebook用A/B測試來測試上線新功能和新版本,優化他們的廣告營收
  • Amason用A/B測試來完善網站,優化用戶體驗
  • 如果你對自己的網站或APP感到不滿意的話,又擔心貿然改頭換面、重新設計帶來的風險,那麼使用A/B測試,通過轉化率化的方式來重新設計,最終在得到一個全新網站的同時也會帶來轉換率的提升。

二、案例--兩種鍵盤布局

1、試驗說明

  • 兩款鍵盤布局不一樣的版本,A版本和B版本,想知道哪個鍵盤布局對用戶的體驗更好呢?首先要設置目標,用來衡量各個版本的優劣(電商網站的目標可以是點擊率、註冊率、頁面停留購物的時間等)。在這個鍵盤布局案例里,如果一個鍵盤布局對用戶打字時拼錯字產生的影響較小,那麼這個布局算是符合用戶體驗習慣的,所以將目標定為:用戶打字時,對拼錯字產生的影響。

  • 用戶會隨機分配到不同的版本中,通過交互行為,會被直接檢測,並收集起來做為以後分析的重要數據。

  • 隨機抽取試驗者,將試驗者分為兩組,每組25人,A組使用鍵盤布局A、B組使用鍵盤布局B,讓他們在30秒內打出標準的20個單詞、文字、消息,然後記錄這些字裡面錯別字的數量,並將數字記錄到EXCEL中。
  • EXCEL中,A列是使用鍵盤布局A版本的用戶打錯字的數量,B列是使用鍵盤布局B版本的用戶打錯字的數量。
  • A/B測試的每一行的兩個樣本數據,記錄的是兩組不同人的數據。A列數據和B列數據分別是獨立的樣本。

2、描述統計分析-Python實現

#導入包import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#文件路徑fileNameStr=E:/learn_python/AB_test/鍵盤AB測試.xlsx#讀取Excel數據,統一先按照字元串讀入,之後轉換xls=pd.ExcelFile(fileNameStr,dtype=object)data=xls.parse(Sheet1,dtype=object)data.head()

#查看每一列的數據類型data.dtypes

#字元串轉換為數值(浮點型)data[A]=data[A].astype(int)data[B]=data[B].astype(int)print(轉換後的數據類型:
,data.dtypes)

#描述統計分析data.describe()

#樣本平均值a_mean=data[A].mean()b_mean=data[B].mean()#樣本標準差a_std=data[A].std()b_std=data[B].std()print(A版本平均打錯字的數量=,a_mean,A版本樣本標準差=,a_std)print(B版本平均打錯字的數量=,b_mean,B版本樣本標準差=,b_std)

  • A版本:平均打錯字數量5.08個,標準差是2.06個;
  • B版本:平均打錯字數量7.8個,標準差是2.65個;

如果單純從打錯字的平均值來看,A版本已經優於B版本了。那麼到底兩個版本之間是否存在統計顯著呢?下面做假設檢驗。

3、推論統計分析-假設檢驗

1)問題是什麼:哪個鍵盤布局對用戶體驗更好?

1.1)明確零假設和備選假設

  • 零假設:A版本和B版本沒有差別,也就是A版本平均值=B版本平均值
  • 備選假設:A版本和B版本有差別,也就是A版本平均值 
e B版本平均值

1.2)明確檢驗類型

  • 案例里有兩組樣本,是分別由不同的試驗者測出來的數據,屬於獨立雙樣本檢驗。

1.3)明確抽樣分布類型

  • 樣本大小:案例中試驗對象的人數是25個,即 樣本大小n=25,樣本大小n小於30,屬於小樣本。
  • 樣本分布:分別採用Python高級繪圖包seaborn,輸出A版本和B版本的樣本直方圖和擬合曲線。

import seaborn as sns#查看數據集分布sns.distplot(data[A])plt.title(A版本數據集分布)plt.show()

sns.distplot(data[B])plt.title(B版本數據集分布)plt.show()

  • 案例中A版本和B版本數據樣本均滿足:小樣本且樣本數據分布接近正態分布,所以本案例的抽樣分布滿足t分布;

1.4)明確檢驗方向

  • 備選假設是A版本和B版本有差別,也就是A版本的平均值 
e B版本的平均值。這裡有不等號,所以屬於雙尾檢驗。

1.5)明確本次假設檢驗是獨立雙樣本t檢驗的雙尾檢驗。

2)證據是什麼:計算p-value值?

2.1)安裝統計包--回到Anaconda的Prompt界面,安裝statsmodels

  • 由於Python統計包scipy在計算雙獨立樣本t檢驗的時候,不能返回自由度df值,這會對後面的計算造成不便,所以這裡要使用另一個統計包statsmodels。

2.2)Python計算 t值、p值、df值

#在conda下安裝完statsmodels,再回到jupyter notebook中導入這個包import statsmodels.stats.weightstats as stttest_ind:獨立雙樣本t檢驗,ind是independent的英文縮寫,usevar=unequal兩個總體方差不一樣(unequal的英文解釋 adj,不平等的;不規則的;不勝任的)返回的第1個值是t值,是假設檢驗計算出的(t值),第2個值是p_two,是雙尾檢驗的p值,第3個值是df,是獨立雙樣本的自由度t,p_two,df=st.ttest_ind(data[A],data[B], usevar=unequal) #獨立、雙樣本、t檢驗print(t = ,t,, p_two = ,p_two,, df = ,df)

t = -4.06 ; p_two = 0.00019 ; df = 45 ;

  • 課程提供 獨立雙樣本t檢驗的計算 標準誤差自由度 的公式如下:

Students t-test?

en.wikipedia.org圖標

3)判斷標準是什麼:選擇常用的顯著水平 alpha = alpha = 5%

  • 雙尾檢驗的兩端各占 frac{alpha}{2}

4)做出結論:比較概率值與判斷標準

#做出結論if(p_two<alpha): print(拒絕零假設,有統計顯著,也就是接受備選假設) print(備選假設:A版本和B版本有差異)else: print(接受零假設,沒有統計顯著) print(零假設,A版本和B版本沒有差異)

  • 獨立雙樣本檢驗在做出結論環節,與單樣本檢驗和相關配對檢驗存在兩點差別:
  • 差別一:因為是雙尾檢驗,無需比較t值是大於零還是小於零;
  • 差別二:用p_two與alpha進行比較(或者用p_one與alpha/2進行比較),而不是用p_one與alpha進行比較。

5)假設檢驗APA格式

獨立雙樣本t(45)=-4.06,p=0.00019,雙尾檢驗

拒絕零假設,統計顯著。

從而驗證了A版本和B版本存在顯著差異。

4、推論統計分析-置信區間

1)查找t_ci 和計算置信區間的上、下限。

  • 樣本平均值=樣本平均值1=樣本平均值2
  • a=樣本平均值 - t_ci * 標準誤差
  • b=樣本平均值 + t_ci * 標準誤差
  • 標準誤差 SE = sqrt{frac{s_{1}^{2}}{n1}+frac{s_{2}^{2}}{n2}}
  • n1 = a_n = 25
  • n2 = b_n = 25
  • t_ci 通過 置信水平=95%和自由度=45,查找t表格,獲取到t_ci=2.015;

#95%的置信水平,自由度=45,查t分布表,對應的t_ci值=2.015t_ci=2.015#樣本大小nn1=a_n=25n2=b_n=25numpy.square 平方numpy.sqrt 開方se=np.sqrt(np.square((a_std)/n1)+np.square((b_std)/n2))對於獨立雙樣本檢驗,置信區間的樣本平均值=樣本平均值1=樣本平均值2所以,這裡的 樣本平均值=A版本平均值-B版本平均值sample_mean=a_mean-b_mean#置信區間上限a=sample_mean-t_ci*se#置信區間下限b=sample_mean+t_ci*seprint(置信水平95%,置信區間上限a=,a,,置信區間下限b=,b)

  • 置信區間 CI =(-2.99,-2.45),表示:兩個鍵盤版本之間對比,用戶打錯字的差異的最可能範圍,A版本比B版本平均少錯2到3個字,說明A版本的用戶體驗效果更好。

2)置信區間APA格式

  • 本案例中A/B測驗的兩個平均值差值的置信區間:95%置信水平, CI =(-2.99,-2.45)。

5、推論統計分析-效應量

Cohens d = frac{第一組平均值-第二組平均值}{標準差}

因為是獨立雙樣本,標準差 = 合併標準差 = S_{p} = sqrt{frac{(n_{1}-1)s_{1}^{2}+(n_{2}-1)s_{2}^{2}}{n_{1}+n_{2}-2}}

#合併標準差sp=np.sqrt(((a_n-1)*np.square(a_std)+(b_n-1)*np.square(b_std))/(a_n+b_n-2))#效應量Cohens dd=(a_mean-b_mean)/spprint(效應量 = ,d)

效應量絕對值與效果顯著含義的關係表

  • 根據效應量絕對值與效果顯著含義的關係表,效應量=-1.15,屬於「差異很大」,即效果非常顯著。

三、推論統計分析報告APA格式(A版本鍵盤布局與B版本鍵盤布對於用戶體驗是否有差異)

1、描述統計分析

A版本打錯字數量,平均是5.08個,標準差是2.06個。

B版本打錯字數量,平均是7.8個,標準差是2.65個。

2、推論統計分析

1)假設檢驗

獨立雙樣本t(45)=-4.06,p=0.00019( alpha =5%),雙尾檢驗。

拒絕零假設,統計顯著。

2)置信區間

兩個平均值差值的置信區間,95%置信水平 CI = (-2.99,-2.45)

3)效應量

d=-1.15,效果顯著

四、小結

通過「單樣本檢驗」、「相關配對檢驗」、「獨立雙樣本檢驗」三個案例的練習,加深了對假設檢驗的相關步驟的理解,但課程的作用更多是拋磚引玉,例如案例中如果樣本大小均超過30,那是正態分布,相應的後續計算及檢驗方法應該會有所不同。

推薦閱讀:

通過客戶特徵進行客戶分群
優達學城探索數據集項目
王曦:我所經歷過的數據科學與智能商業決策 | WiseRClub報道
3 分鐘搞懂 SQL 基本概念
自助式BI工具

TAG:數據分析 |