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-test的函数。它接受三个参数,
- 第一个数据集,可以是数组或列表
-
第二个数据集,可以是数组或列表
-
一个布尔变量,指示方差是否相等
此外,该函数在输出中返回两个值,即检验统计值和p值。
步骤
- 步骤1 - 导入Python的numpy和scipy库。
-
步骤2 - 使用array()方法形成两个数据集。
-
步骤3 - 使用var()方法检查两个数据集的方差是否相等。如果方差的比值大于4:1,则不能假定方差相等,我们可以进入下一步执行Welch’s t-test。
-
步骤4 - 使用stats.ttest_ind()方法找到p值。如果p值小于0.05,则假设两个样本的均值差异显著。
示例1
在这个例子中,我们将取两个包含两个不同物种的10株植物叶片数量的数组,并对它们执行Welch’s t-test。这是使用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场比赛中得分的数组,并对它们进行韦尔奇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,我们可以得出结论,这两个数据集的均值相同。
结论
相比于双样本t检验,Welch’s t检验结果更好,即使方差相等也能保持最小的误差率。因此,可以直接使用Welch’s t检验,而不受方差值的影响。然而,建议在具有偏斜分布的大型数据样本中使用。此外,Welch’s t检验不仅限于Python,还有R和Julia等语言也支持。