t檢驗(Student's t test),主要依靠總體正態分布的小樣本(例如n < 30)對總體均值水平進行差異性判斷。
t檢驗要求樣本不能超過兩組,且每組樣本總體服從正態分布(對于三組以上樣本的,要用方差分析,其他文章詳述)。因此使用t檢驗前需要對所有樣本分別進行正態分布檢驗。如果有不服從正態分布的情況,可以考慮使用MannWhitney檢驗和Wilcoxon檢驗,后面單獨文章介紹。
需要說明的是t檢驗還分為單樣本t檢驗、獨立雙樣本t檢驗和配對雙樣本t檢驗,適用條件也各有不同,以下分別舉例介紹。
1.單樣本t檢驗
用于判斷總體是否與既定均值無差異,可以通俗理解為總體均值是否與該既定均值相等。如下例
某產品合格率經10輪檢測,保持在如下水平,試問可否認為其合格率為96.5%?
合格率(%):97.6 93.5 98.7 95.4 95.2 97.7 96.1 94.6 96.8 95.7
首先,使用scipy.stats.normaltest對樣本進行正態分布檢驗.
from scipy import stats
import numpy as np
X=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
stats.normaltest(X)
結果:NormaltestResult(statistic=0.07878377023988445, pvalue=0.9613738871946388)。p>0.05,樣本通過正態分布檢驗。
然后,使用sstats.ttest_1samp進行單樣本t檢驗。
stats.ttest_1samp(X,96.5)
結果:Ttest_1sampResult(statistic=-0.7396549082121191, pvalue=0.47835758603283807)。p>0.05,接受總體均值為96.5%的假設。
2.獨立雙樣本t檢驗
用于判斷兩組獨立樣本在總體上是否均值無差異,可以通俗理解為兩組獨立采樣的樣本所代表的總體均值是否相等。所謂獨立采樣指的是:對不同個體或單位的受試對象進行采樣,如對男性和女性的身高進行采樣。采樣方法可以相同,也可以不同。
獨立雙樣本t檢驗還要求兩組樣本的總體方差齊性(也就是無差異),如果方差不齊,則可以使用Welch t檢驗(Welch's t-test)。
首先我們先來看滿足獨立雙樣本t檢驗的例子。
某產品兩條生產線的合格率經10輪檢測,保持在如下水平,試問可否認為其合格率是相同的?
生產線1合格率(%):97.6 93.5 98.7 95.4 95.2 97.7 96.1 94.6 96.8 95.7
生產線2合格率(%):97.2 94.2?97.8?94.9?96.3?98.7 96.5?95.6 97.1?96.2
以下為示例代碼
X1=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
X2=np.array([97.2,94.2,97.8,94.9,96.3,98.7,96.5,95.6,97.1,96.2])
#正態分布檢驗
stats.normaltest(X1),stats.normaltest(X2)
#方差齊性檢驗
stats.levene(X1,X2)
#獨立雙樣本t檢驗
stats.ttest_ind(X1,X2)
上述各項檢驗p值均大于0.05,因此可以接受兩條生產線產品質量無差異的假設。
如果X2=[87.2,92.2,97.8,97.9,96.3,98.7,86.5,95.6,97.1,86.2],則兩組樣本無法通過方差齊性檢驗(p=0.03878,小于顯著性水平a=0.05)。于是,我們采用Welch t檢驗。
#獨立雙樣本Welch t檢驗,equal_var參數值為False時,ttest_ind執行Welch t檢驗檢驗
stats.ttest_ind(X1,X2,equal_var=False)
檢驗結果為:Ttest_indResult(statistic=1.5289576830456144, pvalue=0.15523450660981364)。可以接受兩個生產線產品質量相同的假設。
3.配對雙樣本t檢驗
用于判斷兩組配對樣本在總體上是否均值無差異。所謂配對采樣指的是:對同一個體或單位的受試對象進行采樣,如一個人在兩個不同時間點的血壓值。
配對雙樣本t檢驗也要求兩組樣本的總體方差齊性,同時要求樣本容量相同且兩個樣本各數值的順序與采樣順序一致。
配對雙樣本t檢驗的函數是stats.ttest_rel(X1,X2),使用方法與獨立雙樣本t檢驗相同,不再贅述。
以上介紹的是均值無差異推斷。這種推斷是雙側的(two-sided),在實際應用中,我們還會遇到單側檢驗(one-sided)的情況,即判斷不同總體的均值大小。例如判斷第一條生產線的產品質量是否優于第二條生產線。
無論是獨立雙樣本t檢驗還是配對雙樣本t檢驗均支持單側檢驗,只需要在檢驗函數中加入alternative參數即可。該參數的取值為“less”或"greater"。如下例
#X1與X2服從正態分布但方差不齊,使用Welch t檢驗(單側)
X1=np.array([97.6,93.5, 98.7 ,95.4 ,95.2 ,97.7, 96.1 ,94.6 ,96.8 ,95.7])
X2=np.array([87.2,92.2,97.8,97.9,96.3,98.7,86.5,95.6,93.1,86.2])
stats.ttest_ind(X1,X2,alternative="less",equal_var=False)
結果:Ttest_indResult(statistic=1.81631548017011, pvalue=0.9514575126271494)。
該結果如何解讀呢?是,還是
?這是很多初學者比較困惑的地方。這里作出重要解釋:
假設檢驗的基本思想是“小概率事件”原理,其統計推斷方法是帶有某種概率性質的反證法。換句話說,我想得到A這個結果,我需要做得事是證明
不成立。也就是說
零假設(null hypothesis,無效假設)
備擇假設(alternative hypothesis,想要的結果)
?上述檢驗的備擇檢驗H1是"less",所以零假設H0就是"greater"。由于p>0.05,所以接受零假設,即。