標籤:

假設檢驗案例分析

本文通過以下案例來分析假設檢驗的3種類型

1. 汽車引擎排放標準---單樣本檢驗

2. 斯特魯普效應---相關配對檢驗

3. A/B測試---獨立雙樣本檢驗

汽車引擎排放標準---單樣本檢驗

「超級引擎」是一家專門生產汽車引擎的公司,根據政府發布的新排放要求,引擎排放平均值要低於20ppm。

公司製造出10台引擎供測試使用,每一台的排放水平如下:

15.6 16.2 22.5 20.5 16.4 19.4 16.6 17.9 12.7 13.9

怎麼知道公司生產的引擎是否符合政府規定?

#導入包import pandas as pdimport numpy as npimport matplotlib.pyplot as plt#樣本數據集dataSer=pd.Series([15.6,16.2,22.5,20.5,16.4,19.4,16.6,17.9,12.7,13.9])

一、描述統計分析

#樣本平均值sample_mean=dataSer.mean()#樣本標準差sample_std=dataSer.std()print(樣本平均值=,sample_mean,單位:ppm)print(樣本標準差=,sample_std,單位:ppm)樣本平均值= 17.169999999999998 單位:ppm樣本標準差= 2.9814426038413018 單位:ppm

二、推論統計分析

1、假設檢驗

H0:公司引擎排放不滿足標準,也就是平均值μ>=20

H1:公司引擎排放滿足標準,也就是平均值μ<20

檢驗類型:單樣本檢驗

抽樣分布類型:樣本大小是10(小於30),屬於小樣本。

下圖通過seanborn查看數據集分布,可以看出數據集近似正態分布,滿足t分布使用條件。

因此,抽樣分布是t分布,df=9。

檢驗方向:左尾

import seaborn as snssns.distplot(dataSer)plt.title(數據集分布)plt.show()

計算p值

#用python統計包scipy計算from scipy import statspop_mean=20t,p_twoTail=stats.ttest_1samp(dataSer,pop_mean)print(t值=,t,雙尾檢驗p值=,p_twoTail )t= -3.001649525885985 雙尾檢驗p= 0.014916414248897527p_oneTail=p_twoTail/2print(單尾檢驗p值=,p_oneTail)單尾檢驗p= 0.0074582071244487635

做出結論

alpha=0.05if (t<0 and p_oneTail< alpha): print(拒絕H0,有統計顯著,即汽車引擎排放滿足標準)else: print(接受H0,沒有統計顯著,即汽車引擎排放不滿足標準)拒絕H0,有統計顯著,即汽車引擎排放滿足標準

2、置信區間

#95%置信水平,自由度9,對應的t值為2.262t_ci=2.262se=stats.sem(dataSer)a=sample_mean-t_ci*seb=sample_mean+t_ci*seprint(單個平均值的置信區間,95置信水平 CI=[%f,%f]%(a,b))單個平均值的置信區間,95置信水平 CI=[-10.556522,-6.291228]

3、效應量

#差異指標Cohens dd=(sample_mean-pop_mean)/sample_std#相關度指標R2n=10df=n-1R2=(t*t)/(t*t+df)print(d=,d,R2=,R2)d= -0.9492049239364257 R2= 0.5002748453994631

三、分析報告

1、描述統計分析

樣本平均值17.17ppm,樣本標準差2.98ppm

2、推論統計分析

1)假設檢驗

獨立樣本t(9)=-3.00,p=.0075(α=5%),單尾檢驗(左尾)

公司引擎排放滿足標準

2)置信區間

單個平均值的置信區間,95% CI=(17.11,17.23)

3)效應量

d=-0.95

R2=.50

斯特魯普效應---相關配對檢驗

斯特魯普效應是著名的心理學現象,表明了人們對事物的認知是一個自動化的過程。

當有一個新的刺激出現時,若它的特徵和原先的刺激相似或一致,會加速人們的認知;

若新的刺激特徵與原先的刺激不相同,則會干擾人們的認知,使人們的反應時間變長。

簡單來說,斯特魯普效應是指出現與原有認知不同的情況時,人們的反應時間會變長。

我們想要驗證斯特魯普效應。

通過網上的stroop實驗來測試人們的反應時間(faculty.washington.edu/)。

每名參與者得到兩組有顏色的文字,第一組字體內容和字體顏色一致,第二組字體內容和字體顏色不一致。

每名參與者說出每組文字的顏色,統計參與者完成每組文字的時間。

此次實驗共記錄24組數據,匯總在Excel表格中。

data=pd.read_csv(./stroop.csv)data.head()

一、描述統計分析

#獲取描述統計信息data.describe()

Congruent Incongruent

count 24.000000 24.000000

mean 13.926875 22.350750

std 3.540219 5.010218

min 8.630000 15.687000

25% 11.895250 18.716750

50% 13.627500 21.046000

75% 15.671250 24.536000

max 22.328000 35.255000

字體內容和字體顏色一致的情況下,實驗者的平均反應時間是13.93秒,標準差是3.54秒

字體內容和字體顏色不一致的情況下,實驗者的平均反應時間是22.35秒,標準差是5.01秒

#兩個樣本數據集對比data.plot(kind=bar,width=0.6,figsize=(14,6))plt.xlabel(ID,fontsize=20)plt.ylabel(time(s),fontsize=20)plt.legend(fontsize=18)plt.show()

「不一致」所用時間均大於「一致」,也就是當字體內容和字體顏色不一致時,實驗者的平均反應時間變長

二、推論統計分析

1、假設檢驗

第一組「一致」的均值為 μ1 ,第二組「不一致」的均值為μ2

H0:特魯普效應不存在,無論字體內容和字體顏色是否相同,人們的反應時間不變(μ1=μ2)

H1:特魯普效應存在,顏色和文字不同的情況下,人們的反應時間變長(μ1 <μ2 )

檢驗類型:相關配對檢驗

#對樣本數據進行處理,得到差值集。data[diff] =data[Congruent] -data[Incongruent]data.head()

Congruent Incongruent diff

0 12.079 19.278 -7.199

1 16.791 18.741 -1.950

2 9.564 21.214 -11.650

3 8.630 15.687 -7.057

4 14.669 22.803 -8.134

抽樣分布類型:樣本為小樣本,由下圖可以看出數據集近似正態分布,因此抽樣分布類型為t分布,df=23

#查看數據集分布sns.distplot(data[diff])plt.title(差值數據集分布)plt.show()

檢驗方向:左尾檢驗

計算p值

t,p_twoTail = stats.ttest_rel(data[Congruent],data[Incongruent])print(t值=,t,雙尾檢驗的p值=,p_twoTail)t= -8.088610872807587 雙尾檢驗的p= 3.548719149724915e-08p_oneTail=p_twoTail/2print(單尾檢驗的p值=,p_oneTail)單尾檢驗的p= 1.7743595748624577e-08

得出結論

#alpha使用5%alpha=0.05if (t<0 and p_oneTail< alpha): print(拒絕H0,有統計顯著,即斯特魯普效應存在)else: print(接受H0,沒有統計顯著,即斯特魯普效應不存在)拒絕H0,有統計顯著,即斯特魯普效應存在

2、置信區間

#95%的置信水平,自由度23,對應的t值為2.069t_ci=2.069sample_mean=data[diff].mean()se=stats.sem(data[diff])a=sample_mean - t_ci * seb=sample_mean + t_ci * seprint(兩個平均值差值的置信區間,95置信水平 CI=[%f,%f]%(a,b))兩個平均值差值的置信區間,95置信水平 CI=[-10.578633,-6.269117]

3、效應量

pop_mean=0sample_std=data[diff].std()d=(sample_mean-pop_mean)/sample_stdprint(d=,d)d= -1.6510807805255563

三、分析報告

1、描述統計分析

字體內容和字體顏色一致情況下,平均反應時間是 13.93 秒,標準差是 3.54 秒

字體內容和字體顏色不一致情況下,平均反應時間是 22.35 秒,標準差是 5.01 秒

「不一致」情況下所用時間均大於「一致」情況,也就是當字體內容和字體顏色不一致時,實驗者的反應時間變長

2、推論統計分析

1)假設檢驗

相關配對檢驗t(23)=-8.09, p=1.77e-08 (α=5%), 單尾檢驗(左尾)

統計顯著,拒絕零假設,從而驗證了斯特魯普效應。

2)置信區間

兩個平均值差值的置信區間,95%置信水平 CI=[-10.58,-6.27]

3)效應量

d= - 1.65

A/B測試---獨立雙樣本檢驗

A/B測試:為同一個目標制定兩個版本(比如兩個頁面),讓一部分用戶使用A版本,另一部分用戶使用B版本,記錄下這些用戶的使用數據,比較不同版本對於給定目標的轉化效果,最後選擇效果好的版本正式發布給全部用戶。

這是兩款布局不一樣的手機鍵盤(A版本,B版本),作為公司的產品經理,想在正式發布產品之前,知道哪個鍵盤布局的用戶體驗更好。

如果一個鍵盤布局對用戶打字時拼錯字產生的影響較小,那麼這個布局是符合用戶體驗習慣的,所以我們將目標定為對用戶打字時拼錯字的影響。

採集數據:隨機抽取實驗者,分成2組,每組25人,A組使用鍵盤布局A,B組使用鍵盤布局B。讓他們在30秒內打出標準的20個單詞文字消息,然後記錄打錯字的數量。

將數據記錄在Excel中,A列是使用鍵盤布局A打錯字的數量,B列是使用鍵盤布局B打錯字的數量。

fileNameStr=./abtest.xlsxxls=pd.ExcelFile(fileNameStr,dtype=object)data=xls.parse(sheet1,dtype=object)data.head() A B 0 6 6 1 6 11 2 2 8 3 7 5 4 8 11 #查看每一列的數據類型data.dtypesA objectB objectdtype: object#轉換為數值data[A]=data[A].astype(int)data[B]=data[B].astype(int)data.dtypesA int32B int32dtype: object一、描述統計分析data.describe()

A B

count 25.000000 25.000000

mean 5.080000 7.800000

std 2.059935 2.645751

min 2.000000 3.000000

25% 4.000000 6.000000

50% 5.000000 8.000000

75% 7.000000 10.000000

max 10.000000 13.000000

A版本平均值5.08,標準差2.06,單位:打錯字數量

B版本平均值7.80,標準差2.65,單位:打錯字數量

二、推論統計分析

1、假設檢驗

H0: A版本平均值等於B版本平均值

H1: A版本平均值不等於B版本平均值

檢驗類型:雙獨立樣本檢驗

抽樣分布類型:樣本為小樣本,由下圖可以看出數據集近似正態分布,因此抽樣分布類型為t分布

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

檢驗方向:雙尾檢驗

計算p值

#Scipy的雙獨立樣本t檢驗不能返回自由度,對於後面計算置信區間不方便。所以我們使用另一個統計包(statsmodels)import statsmodels.stats.weightstats as stt,p_two,df=st.ttest_ind(data[A],data[B],usevar=unequal)print(t=,t,p_two=,p_two,,df=,df)t= -4.055938536857321 p_two= 0.00019457455307216094 ,df= 45.27813331135627

做出結論

alpha=0.05if(p_two < alpha): print(拒絕H0,有統計顯著,A版本和B版本有差異)else: print(接收H0,沒有統計顯著,A版本和B版本沒有差異)拒絕H0,有統計顯著,A版本和B版本有差異

2、置信區間

#95%置信水平,df=45,對應的t值為2.014t_ci=2.014a_n=25b_n=25a_mean=5.08b_mean=7.80a_std=2.059935b_std=2.645751se=np.sqrt(np.square(a_std)/a_n + np.square(b_std)/b_n)sample_mean=a_mean - b_meana=sample_mean - t_ci * seb=sample_mean + t_ci * seprint(兩個平均值差值的置信區間,95置信水平 CI=[%f,%f] % (a,b))兩個平均值差值的置信區間,95置信水平 CI=[-4.070632,-1.369368]

3、效應量

sp=np.sqrt(((a_n-1)*np.square(a_std) + (b_n-1)* np.square(a_std) ) / (a_n+b_n-2))d=(a_mean - b_mean) / spprint(d=,d)d= -1.3204300135683893

三、分析報告

1、描述統計分析

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

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

2、推論統計分析

1)假設檢驗

獨立雙樣本t(45)=-4.06 , p=.00019 (α=5%) , 雙尾檢驗

拒絕H0,統計顯著。

2)置信區間

兩個平均值差值的置信區間, 95%置信水平 CI=[-4.07,-1.37]

3)效應量

d= - 1.32,效果顯著


推薦閱讀:

零基礎學習Python數據分析:數據處理模塊Pandas使用(4)
kaggle項目:IMDB電影數據分析
數據分析師面試怎麼做
泰坦尼克號存活率實踐筆記-排名3626
下載《基於用戶全生命周期的數據分析與數字化營銷手冊》

TAG:數據分析 |