如何在Python中执行F检验
统计学家使用F检验来检查两个数据集的方差是否相同。F检验得名于Ronald Fisher先生。为了使用F检验,我们制定了两个假设,一个是零假设,另一个是备择假设。然后我们选择F检验批准的这两个假设中的任何一个。
方差是一个数据分布度量,用于说明数据离均值的偏差程度。较高的值显示比较小的值更分散。
在本文中,你将学习如何在Python编程语言中执行F检验及其用例。
F检验过程
执行F检验的过程如下−
-
首先,定义零假设和备择假设。
-
零假设或H0 :σ12 = σ22(总体方差相等)
-
备择假设或H1 :σ12 ≠ σ22(总体方差不相等)
-
-
选择用于测试的统计量。
-
计算总体的自由度。例如,如果m和n是总体形状,则自由度分别表示为 (df1)= m-1和(df2)= n-1 。
-
现在,从 F表格 找到F值
-
最后,将α值除以2用于双尾检验,以计算临界值。
因此,我们使用总体的自由度定义F值。我们在第一行中读取df1,而在第一列中读取df2。
有各种不同自由度类型的F表格。我们将步骤2中的F统计量与步骤4中计算的临界值进行比较。如果临界值小于F统计量,则我们可以拒绝零假设。相反地,如果临界值大于某个显著水平的F统计量,则我们可以接受零假设。

假设
我们在进行基于数据集的F检验之前做出一些假设。
-
数据集满足正态分布,即符合钟形曲线。
-
样本之间互不相关,即总体不存在多重共线性。
除了这些假设外,我们在执行F检验时还应考虑以下关键点−
-
在右侧检验中,最大方差值应该在分子中。
-
在双侧检验的情况下,将alpha值除以2后确定临界值。
-
检查是否有方差或标准差。
-
如果F表格中没有自由度,则将最大值作为临界值。
在Python中进行F检验
语法
scipy stats.f()
参数
x:分等级
q:下限或上限概率
dfn,dfd形状参数
loc:位置参数
scale:尺度参数(默认值= 1)
size:随机变量形状
moments:[‘mvsk’]字母,指定要计算的矩
解释
在这种方法中,用户必须将f值和每个数组的可迭代长度传递到 scipy.stats.f.cdf() 并将其减去1以执行F检验。
算法
-
首先,为操作导入NumPy和Scipy.stats库。
-
然后,创建两个具有不同变量名称的随机选择值列表,并将它们转换为 NumPy 数组,并使用 Numpy 计算每个数组的方差。
-
定义一个函数来计算 F-得分,其中我们首先将数组的方差除以自由度 1。
-
然后计算每个数组的可迭代长度,并将 f值(方差比率)和长度传递到 CDF 函数中,并从 1 中减去以计算 p值。
-
最后,函数返回 p_value 和 f_value。
示例
import numpy as np
import scipy.stats
# 创建数据
group1 = [0.28, 0.2, 0.26, 0.28, 0.5]
group2 = [0.2, 0.23, 0.26, 0.21, 0.23]
# 将列表转换为数组
x = np.array(group1)
y = np.array(group2)
# 计算每组的方差
print(np.var(group1), np.var(group2))
def f_test(group1, group2):
f = np.var(group1, ddof=1)/np.var(group2, ddof=1)
nun = x.size-1
dun = y.size-1
p_value = 1-scipy.stats.f.cdf(f, nun, dun)
return f, p_value
# 执行 F-测试
f_test(x, y)
输出
方差: 0.010464 0.00042400000000000017
您可以观察到 F 测试值为 4.38712, 并且相应的 p值等于 0.019127 。
由于 p-value 小于 .05, 我们将放弃原假设。因此,我们可以说这两个群体的方差不相等。
结论
阅读完本文后,您现在知道如何使用 F-测试来检查两个样本是否属于具有相同方差的群体。您已经学习了 F-测试的过程、假设和 Python 实现。让我们用一些要点来总结本文。
-
F 测试告诉您两个群体是否具有相等的方差。
-
计算自由度并计算关键值。
-
从 F-表中找到 F-统计值,并将其与先前步骤中计算的关键值进行比较。
-
基于关键值和 F-统计值的比较接受或拒绝原假设。
极客教程