Python中的Welch's T檢驗


Python 是一種功能強大的語言,可用於執行各種統計檢驗。其中一項統計檢驗就是 Welch's T 檢驗。

當有兩個方差相等的資料集,並且需要找出它們的均值是否相同,那麼使用雙樣本 t 檢驗就足夠明智。但是,如果兩個資料集的方差不同,則應使用 Welch's T 檢驗來比較均值。

語法

stats.ttest_ind(dataset_one, dataset_two, equal_var = False/True)

這裡,ttest_ind 是執行 Welch's T 檢驗的函式。它接受三個引數:

  • 第一個資料集作為陣列或列表

  • 第二個資料集作為陣列或列表

  • 一個布林變數,指示方差是否相等

此外,該函式在輸出中返回兩個值,即檢驗統計量值和 p 值。

演算法

  • 步驟 1 - 匯入 Python 的 numpy 和 scipy 庫。

  • 步驟 2 - 使用 array() 方法形成兩個資料集。

  • 步驟 3 - 使用 var() 方法檢查兩個資料集的方差是否相同。如果方差比大於 4:1,則不能假設方差相等,並且可以轉到下一步執行 Welch's T 檢驗。

  • 步驟 4 - 使用 stats.ttest_ind() 方法找出 p 值。如果 p 值小於 0.05,則假設均值差異顯著。

示例 1

在本例中,我們將採用兩個包含兩種不同物種的 10 株植物葉片數量的陣列,並對其進行 Welch's T 檢驗。這是使用 stats.ttest_ind() 函式完成的,但首先,我們檢查兩個陣列的方差是否相同。

這是要檢驗的假設 -

  • 零假設 (ho) - u1 = u2,即這兩個資料集的均值大致相等。

  • 備擇假設 (h1) - u1≠ u2,即這兩個資料集的均值存在顯著差異。

#import the numpy and scipy libraries 
import numpy as np
import scipy.stats as stats

#form two datasets as array_one and array_two 
array_one = np.array([25, 55, 59, 24, 21, 54, 32, 43, 54, 65])
array_two = np.array([23, 12, 24, 10, 18, 17, 22, 15, 16, 25])

#find out the ratio of variances of the two datasets
val = (np.var(array_one)/ np.var(array_two))

#if the ratio is greater than 4, perform the Welch's test  
if(val>4):
   print(stats.ttest_ind(array_one, array_two, equal_var = False))

輸出

Ttest_indResult(statistic=4.602699733067644, pvalue=0.0008049287678035495)

由於 p 值小於 0.05,因此我們可以得出結論,這兩個資料集之間的均值差異相當大。

示例 2

在本例中,我們將採用兩個包含兩位擊球手在 10 場比賽中得分值的陣列,並對其進行 Welch's T 檢驗。

#import the numpy and scipy libraries 
import numpy as np
import scipy.stats as stats

#form two datasets as batsman_one and batsman_two 
batsman_one = [30, 91, 0, 64, 42, 80, 30, 5, 117, 71]
batsman_two = [53, 46, 48, 50, 53, 53, 58, 60, 57, 52]

#find out the ratio of variances of the two datasets
val = (np.var(batsman_one)/np.var(batsman_two))

#if the ratio is greater than 4, perform the Welch's test  
if(val>4):
   print(stats.ttest_ind(batsman_one, batsman_two, equal_var = False))

輸出

Ttest_indResult(statistic=0.0, pvalue=1.0)

由於返回的 p 值不僅大於 0.5,而且等於 1.0,因此我們可以得出結論,這兩個資料集的均值相同。

結論

即使方差相等,Welch's T 檢驗也比雙樣本 t 檢驗提供更好的結果,並且錯誤率更低。因此,無論方差值如何,都可以直接使用 Welch's T 檢驗。但是,建議將其用於具有偏態分佈的大型資料集。此外,它不僅限於 Python,R 和 Julia 等語言也支援 Welch's T 檢驗。

更新於: 2023年8月7日

404 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.