如何在Python中执行 Bartlett 测试?
Bartlett 检验用于检查所有样本是否具有相同的方差。它也被称为 Bartlett 的同质性检验。在执行一些统计检验(如单向方差分析)之前,Barlett 检验确保等方差假设是正确的。当您的数据几乎可以肯定来自高斯分布或正态分布时,就会使用它。
如果 Bartlett 检验统计量大于此临界值,则方差会有相当大的变化。如果 Bartlett 检验统计量小于此临界值,则没有显着差异。
这是一个假设检验,两个假设如下:
- 零假设:组的方差相等。
- 备择假设:一组与其他组相比具有不同的方差。
如果“n”是组数,则 n-1 是自由度。如果 p 值小于显着性水平(alpha 值),我们接受备择假设并拒绝原假设。在Python中,Bartlett 的测试是通过使用 scipy.stats 库中的 scipy.stats.bartlett()函数执行的。
scipy.stats.bartlett()函数:
syntax: scipy.stats.bartlett(*args)
args : arrays of samples
Returns :
- statistic – float value
- pvalue – p value of the test
例子:
在这个例子中,我们导入必要的包,读取 CSV 文件。数据集中有三个物种,我们需要每个物种的 sepal_length 来执行 Bartlett 检验,以检查它们是否具有相同的方差以及它们是否来自具有相同方差的种群。该方法返回 test_statistic 和 p 值。
要查看和下载使用的 CSV 文件,请单击此处。
Python3
# importing packages and modules
import pandas as pd
import scipy.stats as stats
# reading CSV file
dataset = pd.read_csv('iris.csv')
# data which contains sepal width of the three species
data = [dataset[dataset['species'] == "setosa"]['sepal_length'],
dataset[dataset['species'] == "versicolor"]['sepal_length'],
dataset[dataset['species'] == "virginica"]['sepal_length']]
# performing Bartlett's test
test_statistic, p_value = stats.bartlett(data[0], data[1], data[2])
print(test_statistic, p_value)
输出:
16.005701874401502 0.0003345076070163035
如果我们认为 alpha 值的显着性水平为 0.05,那么我们可以清楚地看到 p 值小于 0.05。因此,我们的原假设被拒绝并采用替代假设。这些组的方差不相等,它们可能来自不同的人群。单向方差分析的一个假设是各组应该具有相等的方差,但由于在这个例子中它是矛盾的,我们可以得出一个结论,即不应该执行单向方差分析。