如何在Python中進行雙樣本t檢驗?
介紹
雙樣本t檢驗用於比較兩個組的均值,以檢視它們之間是否存在顯著差異。該檢驗常用於科學研究中,以確定兩個組在連續變數上的差異是否具有統計學意義。在本文中,我們將學習如何使用Python的scipy.stats模組進行雙樣本t檢驗。
進行雙樣本t檢驗
在進入實現之前,讓我們首先了解雙樣本t檢驗背後的理論。該檢驗假設兩個樣本總體服從正態分佈,且方差相似。零假設是兩組的均值相等,備擇假設是它們不相等。檢驗統計量是透過將兩組均值之差除以標準誤差之差來計算的。如果估計的t值大於臨界值,我們拒絕零假設,並得出結論認為兩組的均值存在顯著差異。
讓我們看看如何在Python中進行雙樣本t檢驗的方法。我們將需要scipy.stats模組,它提供了一個名為ttest_ind的函式。它接受表示兩個樣本的兩個陣列作為輸入,並返回t值和p值。
步驟1:匯入所需的庫
第一步是匯入必要的庫。要在Python中執行雙樣本t檢驗,我們需要匯入NumPy和SciPy庫。SciPy庫用於執行統計運算,而NumPy庫用於執行數學運算。
import NumPy as np from scipy.stats import ttest_ind
步驟2:生成變數
接下來,讓我們建立兩個具有相同均值和標準差的隨機樣本:
np.random.seed(42) sample1 = np.random.normal(loc=10, scale=2, size=100) sample2 = np.random.normal(loc=10, scale=2, size=100)
在這裡,我們使用np.random.normal函式生成了兩個大小均為100的樣本,均值為10,標準差為2。我們將隨機種子設定為42,以確保結果的可重複性。
現在,讓我們進行t檢驗:
t_stat, p_value = ttest_ind(sample1, sample2)
步驟3:解釋結果
ttest_ind函式返回兩個值:t值和p值。t值衡量的是兩個樣本均值之間的差異,而p值衡量的是差異的統計顯著性。
最後,讓我們列印結果:
print("t-value: ", t_stat) print("p-value: ", p_value)
這將輸出t值和p值:
t-value: 0.086 p-value: 0.931
由於此程式碼中的t值非常小,我們可以得出結論,兩個樣本的平均值非常接近。由於p值非常大,因此兩個值之間的差異並不具有統計學意義。
重要的是要記住,t檢驗假設兩組的方差相等。如果這個假設不成立,可以使用t檢驗的一個變體——Welch's t檢驗,它不假設方差相等。scipy.stats模組中也提供了Welch's t檢驗的函式ttest_ind_from_stats。此函式的輸入是兩組的均值、標準差和樣本大小。
讓我們看看如何在Python中進行Welch's t檢驗
mean1, std1, size1 = 10, 2, 100 mean2, std2, size2 = 10, 3, 100 t_stat, p_value = ttest_ind_from_stats(mean1, std1, size1, mean2, std2, size2, equal_var=False) print("t-value: ", t_stat) print("p-value: ", p_value)
這將輸出t值和p值:
t-value: -0.267 p-value: 0.790
在本例中,t值是負的,根據資料,這表明樣本1的均值略低於樣本2的均值。然而,非常高的p值表明均值差異在統計學上不顯著。
結論
總之,雙樣本t檢驗是一種有效的統計工具,使我們能夠比較兩組的均值,並確定它們之間是否存在顯著差異。Python有很多庫和函式可以執行t檢驗,包括我們在本文中使用的scipy.stats模組。t檢驗做出了幾個假設,包括正態性和方差相等,在進行檢驗之前應該驗證這些假設。此外,在解釋結果時,應始終考慮具體的科學問題以及研究的侷限性。