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.