如何在 Python 中执行 F 检验
统计学家使用 F 检验来检查两个数据集是否具有相同的方差。F 检验以罗纳德·费舍尔爵士的名字命名。要使用 F 检验,我们需要提出两个假设,一个零假设和一个备择假设。然后,我们选择 F 检验认可的这两个假设中的任何一个。
方差是一种数据分布指标,用于表示数据与平均值的偏差。较高的值比较小的值表现出更大的分散性。
在本文中,您将学习如何使用 Python 编程语言执行 F 检验及其用例。
F 检验过程
执行 F 检验的过程如下 -
首先,定义零假设和备择假设。
零假设或 H0:σ12 = σ22(总体的方差相等)
备择假设或 H1:σ12 ≠ σ22(总体的方差不相等)
选择统计量测试。
计算种群的自由度。例如,如果 m 和 n 是种群形状,则自由度分别表示为 (df1) = m–1 和 (df2) = n – 1。
现在从 F 表 中找到 F 值。
最后,将双尾检验的 alpha 值除以 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_value 和可迭代长度传递到 scipy.stats.f.cdf() 中,并将其减去 1 以执行 F 检验。
算法
首先,导入 NumPy 和 Scipy.stats 库进行操作。
然后创建两个具有两个不同变量名的随机选择值列表,并将它们转换为NumPy 数组并使用 Numpy 计算每个数组的方差。
定义一个函数来计算 F 分数,首先我们将自由度为 1 的数组的方差除以 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)
输出
Variances:0.010464 0.00042400000000000017
您可以观察到 F 检验值为 4.38712,相应的 p 值等于 0.019127。
由于 p 值小于 .05,我们将放弃零假设。因此,我们可以说这两个总体的方差不相等。
结论
阅读本文后,您现在知道如何使用 F 检验来检查两个样本是否属于具有相同方差的总体。您已经了解了 F 检验过程、假设和 Python 实现。让我们用几个要点来总结一下这篇文章 -
F 检验告诉您两个总体是否具有相等的方差。
计算自由度并计算临界值。
从 F 表中找到 F 统计量,并将其与上一步计算出的关键值进行比较。
根据临界值和 F 统计量的比较接受或拒绝零假设。