如何在 python 中执行 brown-forsythe 测试


单向方差分析用于确定三个或更多独立组的平均值之间是否存在显着差异。

单向方差分析的假设之一是从中抽取样本的总体的方差相等。

测试这一点的最常见方法之一是使用Brown-Forsythe 测试,这是一种使用以下假设的统计测试:

  • H 0总体之间的方差相等。
  • H A :人群之间的差异并不相等。

如果检验的p 值低于一定的显着性水平(例如 α = 0.05),则我们拒绝零假设并得出结论:不同总体之间的方差不相等。

本教程提供了如何在 Python 中执行 Brown-Forsythe 测试的分步示例。

第 1 步:输入数据

假设研究人员想知道三种不同的肥料是否会导致不同程度的植物生长。

他们随机选择 30 种不同的植物,并将它们分成三组,每组 10 株,并为每组施用不同的肥料。一个月后,他们测量了每株植物的高度。

下表显示了三组中每组植物的高度:

 group1 = [7, 14, 14, 13, 12, 9, 6, 14, 12, 8]
group2 = [15, 17, 13, 15, 15, 13, 9, 12, 10, 8]
group3 = [6, 8, 8, 9, 5, 14, 13, 8, 10, 9]

第 2 步:汇总数据

在执行 Brown-Forsythe 检验之前,我们可以计算每组中植物测量值的方差:

 #import numpy
import numpy as np

#calculate variance of plant measurements in each group
print (np. var (group1), np. var (group2), np. var (group3))

8.69 7.81 7.0

我们可以看到组之间的方差不同,但要确定这些差异是否具有统计显着性,我们可以执行 Brown-Forsythe 检验。

第 3 步:执行 Brown-Forsythe 测试

要在 Python 中执行 Brown-Forsythe 检验,我们可以使用scipy.stats.levene()函数并指定中心为中位数

 import scipy.stats as stats

stats. levene (group1, group2, group3, center=' median ')

LeveneResult(statistic=0.17981072555205047, pvalue=0.8364205218185946)

从结果中我们可以观察到以下几点:

  • 检验统计量: 0.1798
  • p 值: 0.8364

检验的 p 值大于 0.05,因此我们无法拒绝检验的原假设。

组间方差差异不具有统计学意义。

下一步

如果我们未能拒绝 Brown-Forsythe 检验的原假设,那么我们可以对数据执行单向方差分析。

然而,如果我们拒绝零假设,则表明不满足方差齐性假设。在这种情况下我们有两个选择:

1. 无论如何都要进行单向方差分析。

事实证明,只要最大方差不大于最小方差的 4 倍,单向方差分析实际上对不等方差具有鲁棒性。

在上例的第 2 步中,我们发现最小方差为 7.0,最大方差为 8.69。因此最大方差与最小方差之比为 8.69 / 7.0 = 1.24

由于该值小于 4,因此即使 Brown-Forsythe 检验表明方差不相等,我们也可以简单地继续进行单向方差分析。

2. 执行 Kruskal-Wallis 测试

如果最大方差与最小方差之比大于 4,则可以选择执行Kruskal-Wallis 检验。这被认为是单向方差分析的非参数等价物。

您可以在此处找到 Python 中的 Kruskal-Wallis 测试的分步示例。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注