您當前的位置:首頁 > 文化

假設檢驗的的三個示例分析(七)

作者:由 鄭淺 發表于 文化時間:2018-05-19

一、假設檢驗是什麼?

概念:

假設檢驗又稱統計假設檢驗(注:顯著性檢驗只是假設檢驗中最常用的一種方法),是一種基本的統計推斷形式,也是數理統計學的一個重要的分支,用來判斷樣本與樣本,樣本與總體的差異是由抽樣誤差引起還是本質差別造成的統計推斷方法。

具體做法:

根據問題的需要對所研究的總體作某種假設,記作原假設H0;選取合適的統計量,這個統計量的選取要使得在假設H0成立時,其分佈為已知;由實測的樣本,計算出統計量的值,並根據預先給定的顯著性水平進行檢驗,作出拒絕或接受假設H0的判斷。常用的假設檢驗方法有u—檢驗法、t檢驗法、χ2檢驗法(卡方檢驗)、F—檢驗法,秩和檢驗等。

透過學習《

商務與經濟統計

》一書,可以總結為一下六步:

1、提出原假設和備擇假設

2、指定檢驗中的顯著性水平

3、收集樣本資料並計算檢驗統計量的值

4、利用檢驗統計量的值計算p-值

5、p-值法的拒絕法則,如果p-值<=顯著性水平的值,則拒絕原假設H0

6、解讀統計結論

現在透過分析三個示例在介紹三種檢驗型別,並形成一個相對完整的資料分析報告。

二、假設檢驗的三種檢驗型別

(一)“超級引擎”汽車引擎公司(單樣本檢驗)

“超級引擎”是一家專門生產汽車引擎的公司,根據政府釋出的新排放要求,引擎排放平均值要低於20ppm(ppm為單位)

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

15。6 16。2 22。5 20。5 16。4 19。4 16。6 17。9 12。7 13。9

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

假設檢驗:

1、提出提出原假設和備擇假設

原假設和備擇假設的的建立方法,有兩種:

a、將研究中的假設作為備擇假設

b、將受到挑戰的假說作為原假設

在這個示例中引擎排放平均值是否低於20ppm是我們要研究的問題,

所以將平均值u<20作為

備擇假設Ha

平均值u>=20作為

原假設H0

2、指定檢驗中的顯著性水平

我們這裡顯著性水平使用alpha=5%,即為0。05。

3、收集樣本資料並計算檢驗統計量的值

#樣本資料集

mean_gover

=

20

series_0

=

pd

Series

([

15。6

16。2

22。5

20。5

16。4

19。4

16。6

17。9

12。7

13。9

])

std_0

=

series_0

std

()

#樣本資料的方差

mean_0

=

series_0

mean

()

#樣本資料的平均值

print

‘方差為:

%s

%

std_0

print

‘平均值為:

%s

%

mean_0

方差為:2。9814426038413018

平均值為:17。169999999999998

確定檢驗統計量:

這個示例中,總體的方差是未知的,所以我們要用樣本資料的均值和方差來估計總體的均值和方差。

在這種情況下,檢驗統計量的抽樣分佈是t分佈。

在小樣本抽樣中也用t分佈對總體的均值進行估計。

此時檢驗統計量為:

假設檢驗的的三個示例分析(七)

獨立樣本t檢驗統計量

我們也可以透過檢視樣本資料的直方圖來確定他的抽樣分佈是否為t分佈。

#檢視資料集分佈

sns。distplot(series_0)

plt。title(‘樣本資料集分佈’)

plt。show()

圖片:

假設檢驗的的三個示例分析(七)

資料集近似

正態分佈

,滿足t分佈的使用條件。

‘’‘

用python統計包scipy自動計算

用scipy計算出的是:雙尾檢驗

單(1samp)樣本t檢驗(ttest_1samp)

相關(related)樣本t檢驗(ttest_rel)

雙獨立(independent)樣本t檢驗(ttest_ind)

’‘’

#政府規定的平均值

mean_gover = 20

‘’‘

ttest_1samp:單獨樣本t檢驗

返回的第1個值t是假設檢驗計算出的(t值),

第2個值p是雙尾檢驗的p值

’‘’

t,p_twotail =stats。ttest_1samp(series_0,mean_gover)

print(‘t值=’,t,‘雙尾檢驗的p值=’,p_twotail)

t值= -3。00164952589 雙尾檢驗的p值= 0。0149164142489

4、利用檢驗統計量的值計算p-值

此時計算出來的是雙尾檢驗的p值,這個示例我們進行的左尾檢驗,所以左尾p值p_onetail/2為:0。0074582071244487635

5、p-值法的拒絕法則

如果p-值<=顯著性水平的值,則拒絕原假設H0。

顯而易見,p-值是小於顯著性水平的,所以拒絕原假設H0。

6、解讀統計結論

透過運用統計學知識,我們有理由相信,在顯著性水平在5%的情況下

公司生產的產品的平均值是小於20ppm的,所以公司的產品達到了政府的標準。

我們使用APA格式來報告假設檢驗的結果(t檢驗結果的一般規則:t(df)=x。xx,p=。xx,檢驗方向):

t(df)=-3。00,p=0。074(α=5%),檢驗方向為左尾檢驗。

置信區間

from scipy。stats import t

#用interval(alpha, df, mean,std)直接計算符合T分佈的置信區間

ci=stats。t。interval(0。05,9,mean_0,std_0)

print(ci

ci = (16。977766151032203, 17。362233848967794)

用APA格式表示置信區間結果:

平均值的置信區間,95% CI=(16。97, 17。36)

效應量:

什麼是效應量:

效應量是指由於因素引起的差別,是衡量處理效應大小的指標。

與顯著性檢驗不同,這些指標不受樣本容量影響。

它表示不同處理下的總體均值之間差異的大小,可以在不同研究之間進行比較。

當樣本容量大得到顯著時,有必要報告效應量大小。

為什麼要給出效應量?

在判斷某個調查研究的結果,是否有意義或者重要時,要考慮的另一項指標是效應量。

在假設檢驗中,我們給出了是否具有統計顯著性,也要給出效應量,一起來判斷研究結果是否有意義。

如果效應量小,說明效應既無統計意義也無實際意義。

在差異指標Cohen's d中

,可以認為d值的絕對值小於0。2,0。2與0。5之間,0。5與0。8之間,大於0。8分別對應無意義,較小,中等,大的效應。

#效應量:差異指標Cohen‘s d

d=(mean_0 - mean_gover) / std_0

#效應量:相關度指標R2

df = 9

R2=(t*t)/(t*t+df)#t為假設檢驗中的t值

print(’d=‘,d)

print(’R2=‘,R2)

d= -0。9492049239364257

R2= 0。500274845399

d= -0。9492049239364257,效果顯著。

分析報告:

1、描述統計分析

樣本平均值17。17ppm,樣本標準差2。98ppm

2、推論統計分析

1)假設檢驗

獨立樣本t(9)=-3。00,p=。0074(α=5%),單尾檢驗(左尾)

拒絕H0假設,公司引擎排放滿足標準

2)置信區間

平均值的置信區間,95% CI=(16。97, 17。36)

3)效應量

d=-0。94,效果顯著。

(二)鍵盤佈局A|B測試(雙獨立樣本檢驗)

這是兩款鍵盤佈局不一樣的手機(A版本,B版本),你作為公司的產品經理,想在正式釋出產品之前知道,哪個鍵盤佈局對使用者體驗更好呢?

首先,我們需要設定目標,在這個鍵盤佈局案例裡,如果一個鍵盤佈局對使用者打字時拼錯產生的影響較小,那麼這個佈局是符合使用者體驗習慣的。所以我們將目標定為使用者打字時拼錯字產生的影響。

有了目標以後,下一步就是採集資料。在這一部分,使用者會隨機分配到不同版本中,透過他們的互動行為會被直接檢測,並收集起來作為以後分析的重要資料。

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

我們將資料記錄在Excel中,A列是使用鍵盤佈局A打錯字的數量,B列是使用鍵盤佈局B打錯字的數量。

現在我們開始A/B測試。

讀取資料:

#表示沒看懂為什麼要按字串讀入,直接讀取也是可以的

ab_data = pd。ExcelFile(r’G:\learndata\abtest。xlsx‘,dtype=’object‘)

ab_data = ab_data。parse(’Sheet1‘,dtype=’object‘)

#轉換型別

ab_data[’A‘] = ab_data[’A‘]。map(int)

ab_data[’B‘] = ab_data[’B‘]。map(int)

a_mean = ab_data[’A‘]。mean()

b_mean = ab_data[’B‘]。mean()

#pandas計算的標準差,預設除以的是n-1,也就是計算出的是樣本標準差

a_std = ab_data[’A‘]。std()

b_std = ab_data[’B‘]。std()

假設檢驗:

1、提出原假設和備擇假設

我們研究的是那種方案更好,這就認為兩種方案的錯誤均值是不等的,所以

備擇假設Ha為a_mean不等於b_mean

原假設H0為a_mean等於b_mean

此時是一個雙尾檢驗

2、指定檢驗中的顯著性水平

我們這裡顯著性水平使用alpha=5%,即為0。05

3、收集樣本資料並計算檢驗統計量的值

此時總體的標準差是未知的,我們要用到t分佈。

雙獨立樣本t檢驗的檢驗統計量為:

假設檢驗的的三個示例分析(七)

#檢視資料集分佈是否符合t分佈

sns。distplot(ab_data[’A‘])

plt。title(’A版本資料集分佈‘)

plt。show()

sns。distplot(ab_data[’B‘])

plt。title(’B版本資料集分佈‘)

plt。show()

圖片:

假設檢驗的的三個示例分析(七)

從影象上來看是近似符合t分佈的

此時是雙獨立樣本檢驗,我們使用統計包(statsmodels)來計算。

import statsmodels。stats。weightstats as st

’‘’

ttest_ind:獨立雙樣本t檢驗,

usevar=‘unequal’兩個總體方差不一樣

返回的第1個值t是假設檢驗計算出的(t值),

第2個p_two是雙尾檢驗的p值

第3個df是獨立雙樣本的自由度

‘’‘

t,p_two,df=st。ttest_ind(ab_data[’A‘],ab_data[’B‘],

usevar=’unequal‘)

#自由度一般只保留整數部分

print(’t=‘,t,’p_two=‘,p_two,’,df=‘,int(df))

t= -4。05593853686, p_two= 0。000194574553072 ,df= 45

4、利用檢驗統計量的值計算p-值

在第三步中已求出,p_two= 0。000194574553072

5、p-值法的拒絕法則

p_two小於顯著性水平,所以拒絕原假設H0

說明,這兩種方案是有優劣的,平均錯誤率不相等

6、解讀統計結論

透過運用統計學知識,我們有理由相信,在顯著性水平在5%的情況下

A,B兩種方案有優劣之分。

我們使用APA格式來報告假設檢驗的結果(t檢驗結果的一般規則:t(df)=x。xx,p=。xx,檢驗方向):

t(45)=-4。05,p=0。00019(α=5%),檢驗方向為雙尾檢驗。

置信區間:

雙獨立樣本的標準誤差的計算公式:

假設檢驗的的三個示例分析(七)

#樣本大小n

a_n = 25

b_n = 25

#numpy。square 平方

#numpy。sqrt開方

se=np。sqrt( np。square(a_std)/a_n + np。square(b_std)/b_n )

#計算t值,利用https://www。graphpad。com/quickcalcs/statratio1/

t_95=2。0141

#雙獨立樣本檢驗,置信區間的

樣本平均值

=A版本平均值 - B版本平均值

ci = (a_mean-b_mean-t_95*se,a_mean-b_mean+t_95*se)

print(ci)

ci = (-4。0706989689850701, -1。3693010310149292)

效應量:

我們還是用差異指標Cohen’s d

這裡的標準差,因為是雙獨立樣本,需要用合併標準差(pooled standard deviations)代替

合併標準差計算公式:

假設檢驗的的三個示例分析(七)

#合併標準差

sp=np。sqrt(((a_n-1)*np。square(a_std) + (b_n-1)* np。square(a_std) ) / (a_n+b_n-2))

#效應量Cohen‘s d

d=(a_mean - b_mean) / sp

print(’d=‘,d)

d= -1。32042983789,效果顯著。

分析報告:

1、描述統計分析

A版本打錯字數量

平均是5。08個,標準差是2。06個

B版本打錯字數量

平均是7。8個,標準差是2。65個

2、推論統計分析

1)假設檢驗

獨立雙樣本t(45)=-4。05 ,

p=。00019 (α=5%) , 雙尾檢驗

拒絕零假設,統計顯著

2)置信區間

兩個平均值差值的置信區間,

95%置信水平 CI=(-4。07, -1。37)

3)效應量

d= - 1。32,效果顯著

(三)特魯普效應的驗證(相關配對檢驗)

特魯普效應是著名的心理學現象,展示了人們對事物的認知過程已是一個自動化的歷程。當有一個新的刺激出現時,如果它的特徵和原先的刺激相似或符合一致,便會加速人們的認知;反之,若新的刺激特徵與原先的刺激不相同,則會干擾人們的認知,使人們的所需的反映資料變長。

簡單來說,

斯特魯普效應

是當有與原有認知不同的情況出現時,人們的反應時間會較長。

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

實驗設計:

透過網上的

stroop實驗

做測試人的反應時間(https://faculty。washington。edu/chudler/java/ready。html)。

每名參與者得到兩組有顏色的文字,第一組資料是字型內容和字型顏色一致,第二組資料是字型內容和字型顏色不一致。每名參與者對每組文字說出文字的顏色,並分別統計完成每組的時間。

此次實驗共記錄25組資料(

樣本量

),並彙總到Excel表格中。

tlp_data = pd。read_csv(r’G:\learndata\tlp。csv‘)

#加入二者差值作為一列

tlp_data[’sub‘] =

tlp_data

[’Incongruent‘]-tlp_data[’Congruent‘]

c_mean = tlp_data[’Congruent‘]。mean()

inc_mean = tlp_data[’Incongruent‘]。mean()

c_std = tlp_data[’Congruent‘]。std()

inc_std = tlp_data[’Incongruent‘]。std()

#繪圖檢視資料集

tlp_data。plot(kind=’bar‘,figsize=(12,7))

plt。title(’實驗時間對比圖‘,fontsize=20)

plt。savefig(’實驗時間對比圖。png‘)

plt。show()

假設檢驗的的三個示例分析(七)

從圖上看在內容與顏色不一致時,花的時間較多。

現在我們利用統計學知識來判斷結果是否顯著。

假設檢驗:

1.提出假設

配對樣本t檢驗

可視為單樣本

t

檢驗的擴充套件,不過檢驗的物件由一群來自常態分配獨立樣本更改為二群配對樣本之觀測值之差。所以

我們僅僅考慮二者的差值這一列。

這樣就類似於單樣本檢驗,所以

原假設H0為特魯普效應不存在,即兩組資料的均值差sub等於0

備擇假設Ha為特魯普效應存在,即兩組資料的均值差sub不等於0

2.指定顯著性水平

仍然選用0。05作為顯著性水平

3.收集樣本資料並計算檢驗統計量的值

此時因為時同一個人做的兩組實驗,這種情況下樣本資料是相關的,所以我們採用相關配對檢驗

在ab測試中如果每一個人分別用兩種鍵盤打字而得到資料,那也就變成了相關配對檢驗,這就是兩種檢驗方法的區別

#檢視資料是否符合t分佈

sns。distplot(tlp_data[’sub‘])

plt。title(’差值資料集分佈‘)

plt。show()

圖片:

假設檢驗的的三個示例分析(七)

近似正態分佈,可以用t分佈來處理。

相關配對檢驗的檢驗統計量:

假設檢驗的的三個示例分析(七)

’‘’

用scipy計算出的是:雙尾檢驗

單(1samp)樣本t檢驗(ttest_1samp)

相關(related)配對t檢驗(ttest_rel)

雙獨立(independent)樣本t檢驗(ttest_ind)

‘’‘

t_tlp,p_twoTail = stats。ttest_rel(tlp_data[’Incongruent‘],tlp_data[’Congruent‘])

print(’t值=‘,t_tlp,’雙尾檢驗的p值=‘,p_twoTail)

t值= 8。08861087281 雙尾檢驗的p值= 3。54871914972e-08

4.計算p值

雙尾檢驗的p值= 3。54871914972e-08

5.p值法拒絕法則

p值遠小於顯著性水平0。05

所以拒絕原假設H0

6.解釋統計結論

透過運用統計學知識,我們有理由相信,在顯著性水平在5%的情況下

特魯普效應是存在的。

我們使用APA格式來報告假設檢驗的結果(t檢驗結果的一般規則:t(df)=x。xx,p=。xx,檢驗方向):

t(df)=8。08,p=3。54e-08(α=5%),檢驗方向為雙尾檢驗。

置信區間:

t_ci=2。064

#

差值資料

集平均值

sub_mean=tlp_data[’sub‘]。mean()

#使用scipy計算標準誤差

se=stats。sem(tlp_data[’sub‘])

#置信區間上限

a=sample_mean - t_ci * se

#置信區間下限

b=sample_mean + t_ci * se

print(’兩個平均值差值的置信區間,95置信水平 CI=[%f,%f]‘ % (a,b))

兩個平均值差值的置信區間,95置信水平 CI=[6。274324,10。573426]

效應量:

’‘’

效應量:差異指標Cohen‘s d

’‘’

#差值資料集對應的總體平均值是0

pop_mean=0

#差值資料集的標準差

sample_std=tlp_data[‘sub’]。std()

d=(sub_mean - pop_mean) / sample_std

print(‘d=’,d)

d= 1。6510807805255563

d大於0。8,效應顯著。

分析報告:

1、描述統計分析

第一組樣本資料:字型內容和字型顏色一致情況下,平均反應時間是: 13。89 秒,標準差是 3。47 秒

第二組樣本資料:字型內容和字型顏色不一致情況下,平均反應時間是: 22。62 秒,標準差是 5。09 秒

“不一致”情況下所用時間均大於“一致”情況,也就是當字型內容和字型驗證不一致時,實驗者的平均反應時間變長

2、推論統計分析

1)假設檢驗

相關配對檢驗t(24)=8。08,p=3。54e-08 (α=5%),雙尾檢驗

統計上存在顯著差異,拒絕零假設,從而驗證斯特魯普效應存在。

2)置信區間

兩個平均值差值的置信區間,95%置信水平 CI=[6。27,10。57]

3)效應量

d= 1。65

效應顯著。

原課程連結:

https://www。

zhihu。com/lives/9673591

29942126592/messages

標簽: 檢驗  mean  樣本  data  std