Python实现Welch’s T-test
@authot: Heisenberg
@date: 2022.11.15
T-test
t检验(t test)又称学生t检验(Student t-test)用于统计量服从正态分布,但方差未知的情况,用t分布理论推论差异发生的概率,从而比较两个平均数的差异是否显著,通常用于估算两组数据是否有显著的差异。
用途
- 单样本均值检验(One-sample t-test)
用于检验 总体方差未知、正态数据或近似正态的 单样本的均值 是否与 已知的总体均值相等 - 两独立样本均值检验(Independent two-sample t-test)
用于检验 两对独立的 正态数据或近似正态的 样本的均值 是否相等,这里可根据总体方差是否相等分类讨论。 - 配对样本均值检验(Dependent t-test for paired samples)
用于检验 一对配对样本的均值的差 是否等于某一个值 - 回归系数的显著性检验(t-test for regression coefficient significance)
用于检验 回归模型的解释变量对被解释变量是否有显著影响
应用场景
目的:检验两独立样本的均值是否相等。
要求:两样本独立,服从正态分布或近似正态。
应用场景举例:
- 检验两工厂生产同种零件的规格是否相等(双侧检验)
- 为研究某种治疗儿童贫血新药的疗效,以常规药作为对照,治疗一段时间后,检验施以新药的儿童血红蛋白的增加量是否比常规药的大(单侧检验),Welch’s T-test.
- 检验两种药物对治疗高血压的效果,检验两组药物的降压水平是否相等(双侧检验)
Welch’s T-test
在情况2中,方差不相等的话则要考虑Welch’s T-test。Welch’s T-test是一种双样本位置检验,用于检验两个总体均值相等的假设。当两个样本的方差不相等且样本量可能不相等时更可靠。 [2][3] 这些测试通常被称为“未配对”或“独立样本”t 测试,因为它们通常在被比较的两个样本的统计单位不重叠时应用。
取统计量 t = X ˉ 1 − X ˉ 2 s A 2 n A + s B 2 n B t=\frac{\bar{X}_1-\bar{X}_2}{\sqrt{\frac{s_A^2}{n_A}+\frac{s_B^2}{n_B}}} t=nAsA2+nBsB2Xˉ1−Xˉ2, where s A , s B s_A, s_B sA,sB是A、B组的标准差.
Python Implementation
from scipy.stats import ttest_ind
a = [1,2,3,5,6,7,8,9,0] #mean= 4.55 var= 9.14
b = [0,1,3,3,4,7,9,9,10] #mean= 5.11 var = 12.32
ttest_ind(a,b,equal_var=False,alternative='less')# Welch's单边检验 H0: a<b
Ttest_indResult(statistic=-0.33922676577637906, pvalue=0.36947337777918676)
ttest_ind(a,b,equal_var=False,alternative='greater')# Welch's单边检验 H0: a<b
Ttest_indResult(statistic=-0.33922676577637906, pvalue=0.6305266222208132)
ttest_ind(a,b,equal_var=False,alternative='two-sided')# Welch's双边检验
Ttest_indResult(statistic=-0.33922676577637906, pvalue=0.7389467555583735)
ttest_ind(a,b,equal_var=True) #假设方差齐的Student's t-test
Ttest_indResult(statistic=-0.3392267657763791, pvalue=0.7388505065080258)
Reference
一文详解t检验(给了很多应用场景举例,推荐。)