1. 程式人生 > 其它 >python 檢驗兩個樣本均值是否相同_t檢驗的幾種應用案例

python 檢驗兩個樣本均值是否相同_t檢驗的幾種應用案例

技術標籤:python 檢驗兩個樣本均值是否相同檢驗統計量的值怎麼算

還沒關注?

7d4b223ca46e1de9f0b7bb953f5f76f5.png

快動動手指!

前言

在平時的工作或學習中可能會碰到統計學中的假設檢驗問題,如常見的卡方檢驗、t檢驗以及正態性檢驗等,而這些檢驗的目的都是為了論證某個設想,並通過統計學的方法做解釋。本期內容我們將跟大家分享幾種常規的t檢驗的方法,以及這些方法的應用案例。

例如,工商局在檢驗某廠商生成的礦泉水時,需要驗證礦泉水的淨含量是否如廠商所說的550ml?在某次校園體檢中,校長很關心初二年級和初三年級學生在視力方面是否存在一定的差異?在醫學領域中,可能需要為患者採取不同的醫療手段,對比患者在使用某種新型藥物前後,對病情的治療是否有顯著的差異?

理論與應用

t檢驗,通常會應用於三種情況的檢驗,分別是單樣本t檢驗、雙樣本t檢驗和配對樣本t檢驗。這三種檢驗分別對應了上文所提到的三個問題的解答,接下來將結合簡單的案例,介紹三種t檢驗的相關知識點和落地方法。

一、單樣本t檢驗

單樣本t檢驗也稱為樣本均值(xbar)和總體均值(μ)的比較性檢驗,對於該檢驗方法而言,要求樣本滿足兩個前提假設,分別是樣本服從正態分佈假設,以及樣本之間滿足獨立性假設(即樣本之間不存在相關性)。下面利用統計學中的四步法完成單樣本t檢驗:步驟一:提出原假設和備擇假設

9f00e91f6307590cc0bfd6a47f7b08df.png

步驟二:構造t統計量

b4dc0c53d67c3266350434f0cc8e6eb6.png

其中,s為樣本標準差。在原假設滿足的情況下,t統計量服從自由度為n-1的t分佈。

步驟三:計算t統計量

如下表所示,為某飲料抽樣後得到的實際淨含量資料(飲料淨含量的總體均值為550ml)。可基於如上介紹的t統計量計算公式,得到對於的t統計量值。

50e13acb9784793f64421e8c49356c59.png

根據如上資料,可計算樣本均值xbar為550.75,樣本標準差s為4.25,所以t統計量的值為0.706。

步驟四:對比結果下結論

對比計算的t統計量和理論t分佈的臨界值,如果統計量的值大於臨界值,則拒絕原假設(即認為樣本均值與總體均值之間存在顯著的差異),否則接受原假設。參照t分佈的臨界值表,在置信水平為0.05,自由度為15的情況下,對應的臨界值為0.821。對比發現,t統計量0.706是小於臨界值0.821的,故不能拒絕原假設,即認為飲料淨含量的檢驗結果是合格的。

在平時的學習或工作中,如需使用Python完成單樣本t檢驗的落地,可以呼叫scipy的子模組stats中的ttest_1samp函式。接下來利用ttest_1samp函式,對如上介紹的飲料淨含量資料作單樣本t檢驗操作,程式碼如下:

#匯入子模組fromscipyimportstats#飲料淨含量資料
data=[558,551,542,557,552,547,551,549,548,551,553,557,548,550,546,552]#單樣本t檢驗
stats.ttest_1samp(a=data,#指定待檢驗的資料
popmean=550,#指定總體均值#指定缺失值的處理辦法(如果資料中存在缺失值,則檢驗結果返回nan)
nan_policy='propagate'
)

out:
Ttest_1sampResult(statistic=0.7058009503746899, pvalue=0.49112911593287567)

如上結果所示,ttest_1samp函式返回兩部分的結果,一部分是t統計量,另一部分是概率p值。其中,t統計量與上文手工計算的結果一致,從概率p值來看,其值大於0.05,故不能拒絕原假設。

二、獨立樣本t檢驗

獨立樣本t檢驗,是針對兩組不相關樣本(各樣本量可以相等也可以不相等),檢驗它們在某數值型指標上,均值之間的差異。對於該檢驗方法而言,同樣需要滿足兩個前提假設,即樣本服從正態分佈,且樣本之間不存在相關性。與單樣本t檢驗相比,還存在一個非常重要的差異,就是構造t統計量時需要考慮兩組樣本的方差是否滿足齊性(即方差相等)。下面利用統計學中的四步法完成獨立樣本的t檢驗:步驟一:提出原假設和備擇假設

cad1f9f8dd28386d07a4ecb77948fec1.png

步驟二:構造t統計量

當兩組樣本的方差相等時

bfc5ec99fb161d7337dcffa6337482aa.png

其中,n1為樣本組1的樣本量,n2為樣本組2的樣本量,70f200bfdde8c95d767472bca0fc074b.png由兩組樣本的方差構成,它的計算公式為:

b2433d45f85a048eed74ac622fea87f5.png

在原假設滿足的情況下,t統計量服從自由度為n1+n2-2的t分佈。

當兩組樣本的方差不相等時

db508f4a89cd96edc908a2a9ba50dfc6.png

其中,df為方差不相等時,t統計量的自由度,其計算公式如下:

d95bef7e1c2ec0eaf60b9fe80fdfa2cc.png

步驟三:計算t統計量

根據步驟二中的計算公式,便可以輕鬆地得到t統計量的值,這裡不妨以前文介紹的服務員小費資料為例,判斷男女顧客在支付小費金額上是否存在顯著差異。需要注意的是,在計算t統計量之前,應該檢驗兩樣本之間的方差是否相等。

讀者在使用Python時,可以藉助於scipy子模組stats中的levene函式實現方差齊性的檢驗,藉助於ttest_ind函式實現獨立樣本t檢驗。接下來結合這兩個函式,完成小費金額的t檢驗,程式碼及輸出結果如下:

#男性客戶支付的小費
male_tips=tips.loc[tips.sex=='Male','tip']#男性客戶支付的小費
female_tips=tips.loc[tips.sex=='Female','tip']#檢驗兩樣本之間的方差是否相等
stats.levene(male_tips,female_tips)

out:
LeveneResult(statistic=1.9909710178779405, pvalue=0.1595236359896614)

步驟四:對比結果下結論

如上結果所示,經過方差齊性檢驗後,發現統計量所對應的概率p值大於0.05,說明兩組樣本之間的方差滿足齊性。所以,在計算t統計量的值時,應該選擇方差相等所對應的公式。

三、配對樣本t檢驗

配對樣本t檢驗,是針對同一組樣本在不同場景下,某數值型指標均值之間的差異。實際上讀者也可以將該檢驗理解為單樣本t檢驗,檢驗的是兩配對樣本差值的均值是否等於0,如果等於0,則認為配對樣本之間的均值沒有差異,否則存在差異。所以,該檢驗也遵循兩個前提假設,即正態性分佈假設和樣本獨立性假設。下面利用統計學中的四步法完成配對樣本的t檢驗:步驟一:提出原假設和備擇假設

6b016da89e2a06ff16c0bc9b1484c6f6.png

步驟二:構造t統計量

ad42a36067a2162c1b52b9294c858936.png

其中,xbar為配對樣本差的均值,s為配對樣本差的標準差。在原假設滿足的情況下,t統計量服從自由度為n-1的t分佈。

步驟三:計算t統計量

根據步驟二中的計算公式,可以計算得到配對樣本t檢驗的統計量值,這裡不妨以我國各省2016年和2017年的人均可支配收入資料為例(資料來源於中國統計局),判斷2016年和2017年該指標是否存在顯著差異。讀者既可以選擇實現單樣本t檢驗的ttest_1samp函式,也可以直接選擇實現配對樣本t檢驗的ttest_rel函式。接下來結合這兩個函式,完成可支配收入的t檢驗,程式碼如下:

#讀取人均可支配收入資料
ppgnp=pd.read_excel(r'C:\Users\Administrator\Desktop\PPGNP.xlsx')#計算兩年人均可支配收入之間的差值
diff=ppgnp.PPGNP_2017-ppgnp.PPGNP_2016#使用ttest_1samp函式計算配對樣本的t統計量
stats.ttest_1samp(a=diff,popmean=0)
out:
Ttest_1sampResult(statistic=13.983206457471795,pvalue=1.1154473504425075e-14)#使用ttest_rel函式計算配對樣本的t統計量
stats.ttest_rel(a=ppgnp.PPGNP_2017,b=ppgnp.PPGNP_2016)

out:
Ttest_relResult(statistic=13.983206457471795, pvalue=1.1154473504425075e-14)

步驟四:對比結果下結論

在步驟三中,不論採用單樣本的t檢驗方法,還是採用配對樣本的t檢驗方法,得到的t統計量都是相同的。從結果來看,由於概率p值遠遠小於0.05,故不能接受原假設,即認為2016年和2017年我國人均可支配收入是存在顯著差異的。

結語

本期的內容就介紹到這裡,如果你有任何問題,歡迎在公眾號的留言區域表達你的疑問。同時,也歡迎各位朋友繼續轉發與分享文中的內容,讓更多的人學習和進步。

每天進步一點點:資料分析1480

021944f43a58676e297d239f42daf8dd.png

長按掃碼關注我